maximo开发经验

来源:互联网 发布:java独立开发 编辑:程序博客网 时间:2024/03/29 14:10
 

目录

一、过滤器问题,应用程序列表属性没有文本框可以过滤:... 2

二、应用程序列表只读问题:... 2

三、删除运行管理中的600WM手册... 2

四、工作流相关... 2

五、权限组设置... 5

六、出现报错... 6

七、configdb.bat 没反应,或者报错的解决方案... 7

八、几个关键代码... 7

九、表域的学习... 15

十、maximo常用表解释... 17

十一、添加附件功能... 21

十二、数据库配置中属性缺省值 :... 23

十三、控件样式的目录... 23

十四、对MAXMENU表的几个列名介绍... 23

十五、隐藏菜单的方法 . 24

十六、更改oracleIP. 24

十七、下载的excel文件经常有乱码,解决办法: 25

十八、删除应用程序... 25

十九、新建模块菜单... 26

二十、改lable长度:... 27

二十一、工作流图标:... 27

二十二、控件相关介绍... 27

二十三、开发应用程序中选择操作步骤... 33

二十四、二次开发介绍... 35

二十五、类介绍... 39

一、过滤器问题,应用程序列表属性没有文本框可以过滤:

在数据库配置的属性列,配置clip_image002

二、应用程序列表只读问题:

导出其他的xml,修改几个点,第一修改所有的属性控件,把inputmode=”READONLY” 去掉,第二修改table 标签inputmode=”readonly”

三、删除运行管理中的600WM手册

1、delete maxapps where app='MANUALCX'or app='MANUALWH';commit;
2、delete maxpresentation where app='MANUALCX'or app='MANUALWH';commit;

3、delete sigoption where moduleapp='MANUALCX' or moduleapp='MANUALWH' and menutype !='MODULE';commit;
4、delete applicationauth where app='MANUALCX'or app='MANUALWH';commit;
5、delete maxlabels where app='MANUALCX'or app='MANUALWH';commit;

6、delete maxmenu where moduleapp='MANUALCX' or moduleapp='MANUALWH' and menutype !='MODULE';commit;

四、工作流相关
1、拖一个任务节点,拖2个线连起来
2、给任务节点赋相应属性
clip_image004
3、验证——启用——激活——添加工作流到应用程序
4、在应用程序中(模仿需求计划的应用程序)
clip_image006
5、在数据库配置中加关系(模仿需求计划的关系)
clip_image008

关系:PR_WFTRANSACTION 子对象:WFTRANSACTION
where子句:ownertable = 'PR' and ownerid = :prid and transtype in('WFASSIGNCOMP','REJECT','ACCEPT')

PR 是当前表名,prid 是当前表的id名 ,只要改这两个地方即可,下面的也一样
clip_image010
关系:PR_AUTO_WFTASK 子对象:WFASSIGNMENT
where子句:ownertable = 'PR' and ownerid = :prid and assignstatus='ACTIVE'
以上是工作流设计步骤

6、删除应用程序中工具栏的工作流按钮

工作流设计器——>选择操作——>“编辑工作流至”按钮——>删除记录
clip_image012

clip_image014

五、权限组设置

1、新建权限组(根据需求为所需应用程序赋权限)
clip_image016
2、点权限——>用户——>选管理员用户——>点组——>选择操作里面选“授权重新分配”——>新建行
clip_image0183、返回权限组,点用户选项卡,新建行就Ok了,在用户里面就有新建的那个权限组了clip_image020
clip_image022

六、出现报错
1、不是所有字段都绑定的错误解决方案:

clip_image023

方法:1:
肯定有一个属性是自动编号,但是你查询这个自动编号是没有的,所以要再创建一个就OK
clip_image025

方法2:

insert into autokey ( PREFIX, SEED, ORGID, SITEID, AUTOKEYNAME, SETID, LANGCODE, AUTOKEYID) values ( null, 1009, 'BCDGS', 'BCDSITE', 'PONDERATION', null, 'ZH', AUTOKEYSEQ.nextval);

commit;

把红色的换成ORG和nullclip_image027

2011.8.2发现orgid其实就是组织的字段clip_image029,因为它那边的组织名字是BCDGS所以就老是不一样哦,siteid就是地点字段clip_image031

2、新建应用程序报错,无法保存:

Webllogic8 出现保存不了的解决方案:把Maxprod\applications\maximo\lib\oraclethin.jar 复制到bea\weblogic81\server\lib 中,把这里面的ojdbc14.jar 剪切,备份,特殊情况下不能把ojdbc14.jar剪切,如果润乾报表报错JDBC driver is not on the CLASSPATH就要把它还原回去,当然oraclethin.jar还是要加的,所以ojdbc14.jar应该不需要删掉

3、rmic -d . psdi.app.fuel.FUELTB040LINE

clip_image032

会生成FUELTB040LINE_STUB.class文件,解决使用对象类突然报错问题
clip_image034

七、configdb.bat 没反应,或者报错的解决方案

1、看看log文件里面报什么错
2、一般是表空间不对的问题,configdb只用来配置物理表,配置数据库对象而已,执行其他的sql在数据库中无需再次点击configdb.bat ,添加数据库关系也不需要

八、常用关键代码
1、数据库操作

Connection con=
MXServer.getMXServer().getDBManager().getSystemConnection();
private String getSAMPLEMACHID(Connection con){//随机获取取样机编号

ResultSet rs = null;

try{ //第一种方法
java.sql.Statement stat = null; //statement

stat = con.createStatement();

rs = stat.executeQuery("select SAMPLEMACHID from ( select SAMPLEMACHID from FUELTB030 order by dbms_random.value ) where rownum <2 ");

java.sql.PreparedStatement stat = null;

ResultSet rs = null;

try { //第二种方法

java.sql.PreparedStatement stat = null; // PreparedStatement

stat = con.prepareStatement("select SAMPLEMACHID from ( select SAMPLEMACHID from FUELTB030 order by dbms_random.value ) where rownum <?");

stat.setInt(1, 2);

rs = stat.executeQuery();

if (rs.next()) {

return rs.getString(1);

}

}catch(Exception ex){

ex.printStackTrace();

}finally{

try{

if(rs!=null)rs.close();

if(stat!=null)stat.close();

}catch(Exception ex){

ex.printStackTrace();

}

}

return "";

}

2、获取系统登陆用户名
app.getBeanForApp().getMbo().getUserInfo().getPersonId()
3、弹出对话框

Utility.showMessageBox(this.sessionContext.getCurrentEvent(), "标题", "我的测试", null);

4、刷新页面

import psdi.webclient.system.beans.DataBean;

import psdi.webclient.system.beans.AppBean;
app.getAppBean().refreshTable();

5、新建行

package psdi.webclient.beans.fuel;

import psdi.util.MXException;

import psdi.webclient.system.beans.DataBean;

public class FUELTB012LINEBean extends DataBean

{

public int addrow()throws MXException

{

if (this.parent.isNewRow()){ //如果是新行

this.parent.save();

}

String ID = this.parent.getString("CONTRACTNUM"); //获取主表的标示ID

super.addrow();

DataBean databean = this.app.getDataBean("new_table"); //获取所需的子表数据源

databean.setValue("CONTRACTNUM", ID); //为子表的外键Id赋值

return 1;

}

}
clip_image036
clip_image038

clip_image040

6、业务类中赋只读属性

public class FldVehicledid extends MboValueAdapter {

public FldVehicledid(MboValue mbv) throws MXException {

super(mbv);

}

public void action() throws MXException, RemoteException {

super.action();

getMboValue("VEHICLETYPE").setReadOnly(false);//取消只读
getMboValue("VEHICLETYPE").setReadOnly(true);//只读
}

7、修改maximo默认日期格式

打开路径:Maxprod\applications\maximo\resources\resources\defaults\ setting.properties 里面加一行代码:DISPLAYDATE=yyyy/MM/dd

8、更改自动超时时间

当 Maximo 用户连续 30 分钟处于非活动状态之后,系统会将其关闭。您可以编辑

以下目录中的 web.xml 文件,以便更改此默认值:

<Maximo root>\applications\maximo\maximouiweb\webmodule\

WEB-INF\web.xml

查找 session-config 部分并将 session-timeout 元素改为其他值。例如,将 30 改为

60,则超时时间会从 30 分钟增加到 60 分钟。

9、Maximo.properties 设置

编辑 <Maximo root> applications\Maximo\properties 文件夹中的

maximo.properties 文件。

参数

描述

mxe.name

如果在同一台物理计算机上部署多个 Maximo 应用程序,则必须 更改 mxe.name 参

数。

在 MXServer.properties 部分中,将 mxe.hostname 属性设置为该计算机的名称和托

管 Maximo 服务器的端口。

mxe.db.url

Maximo 要连接到的数据库:

1.要连接到 IBM DB2 数据库,请将其设置为:mxe.db.url=jdbc:db2://

localhost:50000/dbalias

2.要连接到 Oracle 数据库请将其设置为

mxe.db.url=jdbc:oracle:thin:@hostname:port:SID

3.要连接到 Microsoft SQL Server 数据库,请将其设置为:

mxe.db.url=jbdc:inetdae7a:hostname:port?database=dbname&language=us_e

nglish&nowrnings=true\

mxe.db.schemaowner

Maximo 要连接到的用户模式所有者:

1. 要连接到 IBM DB2 数据库,请键入用户模式所有者的名称。对于 IBM DB2,默

认的所有者名称为 Maximo。

2. 要连接到 Oracle 数据库,请键入用户模式所有者的名称。对于 Oracle,默认的所

有者名称为 Maximo。

3. 要连接到 Microsoft SQL Server 数据库,请键入 dbo

mxe.adminuserid Maximo

管理员的用户名和口令

mxe.db.user

登录用户名

mxe.db.password

登录口令

mxe.system.reguser

用于添加新用户的数据库管理帐户

mxe.system.regpass

word

用于添加新用户的数据库管理口令

mxe.report.actuate. reportserver

Actuate Encyclopedia 中的报表服务器的名称。这还作为卷标引用。

mxe.report.actuate. portalHost

Active Portal 的 URL,包括端口号和文件夹。默认情况下,该文件夹名为 acweb

mxe.report.actuate. iServer

报表 iServer 的 URL,包括端口号。示例:http://production:8000

mxe.report.actuate. db.connectstring

由 Actuate Encyclopedia 用来访问数据库,并且必须引用 Maximo 应用程序连接到的同一个数据库。connectstring 为 sid 的 tnsnames.ora 别名。

mxe.report.actuate.

rootEncycFolder

默认情况下,此文件夹为 rpt,并包含 maximo 报表 Encyclopedia 的所有子文件夹、报表和查询。

如果有多个 Maximo 服务器,请创建多个唯一的 Encyclopedia 根目录文件夹名称。

mxe.report.actuate. rsseAlias

rsseAlias RSSE 别名设置 Actuate\iServer\etc 目录中的 rsse properties 文件。例如,如果在产生时设置别名,则将 rsse properties 文件设置为 rsse_production.properties。

mxe.report.activate. multiServer

当有多个连接到 Actuate 服务器的 Maximo 实例时,应将 multiServer 标记设置为是

10、自动编号设置

点管理——>组织——>选择操作——> 自动编号设置——>组织机构级别——>设置前缀
clip_image042

11、为标签加颜色

1、<statictext id="t " color="#FF0000" label="测试红色字体" align="LEFT" span="LEFT" plaintext="false" column="2" />

2、直接clip_image044

12、在部分控件里面嵌套jsp

<section id="new_section_4" >

<extframe id="test_jsp" src="../webclient/jsp/app/dept/test.jsp" />

</section>

13、iframe 用法

<iframe id="iframe1" url="/maximo/webclient/rqprint/jxcbmxcx.jsp" width="998" height="510" />

14、更改菜单位置,比如把其它模块下的菜单更改到另一个模块下面

Select * from maxmenu ;更改position,最上面的ELEMENTYPE=MODULE 代表是模块菜单,下级子菜单必须格式是7*** 格式的

clip_image046

15、2级菜单应用

clip_image047

第一个是模块菜单,第二个是二级,第三是程序菜单

效果是想把原先燃料管理里面的采样主管编码程序放到人力资源管理——>报表管理里面,

先查寻maxmenu表,看头描述(headerdescription)是报表管理的,查出position=9570
查出菜单是采样主管编码的程序菜单,即elementtype是App,elementtype是代表类型是什么,module是模块菜单,header是子级菜单,app代表是程序菜单,keyvalue代表值是什么,然后让查出来的程序把position=9570,把subposition换成10,从0开始网上是菜单的顺序,比如这个是10那么排第二位,说明10前面有一个报表种类管理的程序菜单的subposition小一些,或者等于,我查出来给你看看clip_image049确实是不小于最小的那个值,如果把FUELA003的subposition改成5那么它就排在第一位了

clip_image051

2、具体实现效果

clip_image053
clip_image055

Sql:insert into Maxmenu ( MENUTYPE, MODULEAPP, POSITION, SUBPOSITION, ELEMENTTYPE, KEYVALUE, HEADERDESCRIPTION, URL, VISIBLE, IMAGE, ACCESSKEY, TABDISPLAY, MAXMENUID)

values ( 'MODULE', 'FULE', 7999, 0, 'HEADER',NULL', '燃料报表', '', 1, 'modimg_wo.gif', null, null, MAXMENUSEQ.nextval);

insert into Maxmenu ( MENUTYPE, MODULEAPP, POSITION, SUBPOSITION, ELEMENTTYPE, KEYVALUE, HEADERDESCRIPTION, URL, VISIBLE, IMAGE, ACCESSKEY, TABDISPLAY, MAXMENUID)

values ( 'MODULE', 'FULE', 7111, 0, 'HEADER',NULL, '基础信息', '', 1, '', null, null, MAXMENUSEQ.nextval);

insert into Maxmenu ( MENUTYPE, MODULEAPP, POSITION, SUBPOSITION, ELEMENTTYPE, KEYVALUE, HEADERDESCRIPTION, URL, VISIBLE, IMAGE, ACCESSKEY, TABDISPLAY, MAXMENUID)

values ( 'MODULE', 'FULE', 7222, 0, 'HEADER',NULL, '检斤管理', '', 1, '', null, null, MAXMENUSEQ.nextval);

insert into Maxmenu ( MENUTYPE, MODULEAPP, POSITION, SUBPOSITION, ELEMENTTYPE, KEYVALUE, HEADERDESCRIPTION, URL, VISIBLE, IMAGE, ACCESSKEY, TABDISPLAY, MAXMENUID)

values ( 'MODULE', 'FULE', 7333, 0, 'HEADER',NULL, '检质管理', '', 1, '', null, null, MAXMENUSEQ.nextval);

insert into Maxmenu ( MENUTYPE, MODULEAPP, POSITION, SUBPOSITION, ELEMENTTYPE, KEYVALUE, HEADERDESCRIPTION, URL, VISIBLE, IMAGE, ACCESSKEY, TABDISPLAY, MAXMENUID)

values ( 'MODULE', 'FULE', 7444, 0, 'HEADER',NULL, '煤场管理', '', 1, '', null, null, MAXMENUSEQ.nextval);

insert into Maxmenu ( MENUTYPE, MODULEAPP, POSITION, SUBPOSITION, ELEMENTTYPE, KEYVALUE, HEADERDESCRIPTION, URL, VISIBLE, IMAGE, ACCESSKEY, TABDISPLAY, MAXMENUID)

values ( 'MODULE', 'FULE', 7555, 0, 'HEADER',NULL, '结算管理', '', 1, '', null, null, MAXMENUSEQ.nextval);

16、添加签名选项与工具条

----------------CreateMaxmenuScript----------------

insert into Maxmenu ( MENUTYPE, MODULEAPP, POSITION, SUBPOSITION, ELEMENTTYPE, KEYVALUE, HEADERDESCRIPTION, URL, VISIBLE, IMAGE, ACCESSKEY, TABDISPLAY, MAXMENUID) values ( 'APPTOOL', 'FUELAP030', 12, 0, 'OPTION', 'INSERT', null, null, 1, 'nav_icon_insert.gif', null, 'ALL', MAXMENUSEQ.nextval);

insert into Maxmenu ( MENUTYPE, MODULEAPP, POSITION, SUBPOSITION, ELEMENTTYPE, KEYVALUE, HEADERDESCRIPTION, URL, VISIBLE, IMAGE, ACCESSKEY, TABDISPLAY, MAXMENUID) values ( 'APPTOOL', 'FUELAP030', 13, 0, 'OPTION', 'SAVE', null, null, 1, 'nav_icon_save.gif', null, 'MAIN', MAXMENUSEQ.nextval);

insert into Maxmenu ( MENUTYPE, MODULEAPP, POSITION, SUBPOSITION, ELEMENTTYPE, KEYVALUE, HEADERDESCRIPTION, URL, VISIBLE, IMAGE, ACCESSKEY, TABDISPLAY, MAXMENUID) values ( 'APPTOOL', 'FUELAP030', 14, 0, 'OPTION', 'PREVIOUS', null, null, 1, 'nav_icon_previous.gif', null, 'MAIN', MAXMENUSEQ.nextval);

insert into Maxmenu ( MENUTYPE, MODULEAPP, POSITION, SUBPOSITION, ELEMENTTYPE, KEYVALUE, HEADERDESCRIPTION, URL, VISIBLE, IMAGE, ACCESSKEY, TABDISPLAY, MAXMENUID) values ( 'APPTOOL', 'FUELAP030', 15, 0, 'OPTION', 'NEXT', null, null, 1, 'nav_icon_next.gif', null, 'MAIN', MAXMENUSEQ.nextval);

insert into Maxmenu ( MENUTYPE, MODULEAPP, POSITION, SUBPOSITION, ELEMENTTYPE, KEYVALUE, HEADERDESCRIPTION, URL, VISIBLE, IMAGE, ACCESSKEY, TABDISPLAY, MAXMENUID) values ( 'APPTOOL', 'FUELAP030', 16, 0, 'OPTION', 'DELETE', null, null, 1, 'btn_delete.gif', null, 'MAIN', MAXMENUSEQ.nextval);

----------------CreateSigoptionScript----------------

insert into Sigoption ( APP, OPTIONNAME, DESCRIPTION, ESIGENABLED, VISIBLE, ALSOGRANTS, ALSOREVOKES, PREREQUISITE, SIGOPTIONID, LANGCODE, HASLD) values ( 'FUELAP030', 'SAVE', '保存', 0, 1, null, 'INSERT, FIELDDEFS', 'READ', SIGOPTIONSEQ.nextval, 'ZH', 0);

insert into Sigoption ( APP, OPTIONNAME, DESCRIPTION, ESIGENABLED, VISIBLE, ALSOGRANTS, ALSOREVOKES, PREREQUISITE, SIGOPTIONID, LANGCODE, HASLD) values ( 'FUELAP030', 'NEXT', '下一条', 0, 1, null, null, 'READ', SIGOPTIONSEQ.nextval, 'ZH', 0);

insert into Sigoption ( APP, OPTIONNAME, DESCRIPTION, ESIGENABLED, VISIBLE, ALSOGRANTS, ALSOREVOKES, PREREQUISITE, SIGOPTIONID, LANGCODE, HASLD) values ( 'FUELAP030', 'PREVIOUS', '上一条', 0, 1, null, null, 'READ', SIGOPTIONSEQ.nextval, 'ZH', 0);

insert into Sigoption ( APP, OPTIONNAME, DESCRIPTION, ESIGENABLED, VISIBLE, ALSOGRANTS, ALSOREVOKES, PREREQUISITE, SIGOPTIONID, LANGCODE, HASLD) values ( 'FUELAP030', 'INSERT', '新增', 0, 1, 'SAVE', null, 'READ', SIGOPTIONSEQ.nextval, 'ZH', 0);

insert into Sigoption ( APP, OPTIONNAME, DESCRIPTION, ESIGENABLED, VISIBLE, ALSOGRANTS, ALSOREVOKES, PREREQUISITE, SIGOPTIONID, LANGCODE, HASLD) values ( 'FUELAP030', 'DELETE', '删除', 0, 1, null, null, 'READ', SIGOPTIONSEQ.nextval, 'ZH', 0);

commit;

17、自动编号autokey

insert into autokey ( PREFIX, SEED, ORGID, SITEID, AUTOKEYNAME, SETID, LANGCODE, AUTOKEYID) values ( null, 1009, 'BCDGS', 'BCDSITE', 'PONDERATION', null, 'ZH', AUTOKEYSEQ.nextval);

commit;

把红色的换成ORG和nullclip_image027[1]

18、修改maximo应用程序的页面背景色

1、修改client/tabgroup/tabgroup.css样式表里面的.formtabcontrol样式

2、修改client/ clientarea/controls.css样式表里面的 .mainpage样式

19、配置供应商选择值(放大镜效果)

方法一:
模仿其他程序做比如模仿资产里面的供应商:
(1)、把自己的数据库对象里面的供应商属性的类别换成资产对象供应商属性的类别clip_image057

(2)需要在自己数据库对象里面加一个属性时orgid,这里注意公司必须要添加组织,在公司模块里面点选择操作clip_image059

Orgid的属性模仿asset里面的属性clip_image061
(3)直接赋属性,这个描述属性放的是供应商的name所以要再自己做的数据库对象中配置关系,在属性中用关系名.属性名

clip_image063

方法二:自定义字段类

(1)配置类别
clip_image065

(2)写代码:
public class FLDCOMPANY extends MAXTableDomain{

public FLDCOMPANY(MboValue mbv) {

super(mbv);

String n= getMboValue().getAttributeName();

System.out.println(n);

setRelationship("COMPANIES", "COMPANY=:"+n);

setLookupKeyMapInOrder(new String[] { n}, new String[] { "COMPANY" });

}

}

(3)赋属性值,和方法一的(3)一模一样,就是属性变成GYS而已

20、弹出对话框确认

clip_image067弹出来一个对话框有确认选择键

clip_image069在最上面的提示

第一,把提示信息插入到数据库中

insert into maxmesSAGES ( MSGKEY, MSGGROUP, VALUE, TITLE, DISPLAYMETHOD, OPTIONS, BUTTONTEXT, MAXMESSAGESID) values ( 'jisuan1', 'system', '确认计算化验结果?', null, 'MSGBOX', 24, null, MAXMESSAGESSEQ.nextval);(弹出确实和取消按钮)

insert into maxmesSAGES ( MSGKEY, MSGGROUP, VALUE, TITLE, DISPLAYMETHOD, OPTIONS, BUTTONTEXT, MAXMESSAGESID) values ( 'jisuan2', 'system', '记录已保存', null, 'STATUS', 0, null, MAXMESSAGESSEQ.nextval);

commit;

第二,在程序中调用

WebClientEvent event = this.sessionContext.getCurrentEvent();

int msgRet = event.getMessageReturn();

// System.out.println("msgRet=="+msgRet);

if (msgRet < 0) {

throw new MXApplicationException("system", "jisuan1");

}

if (msgRet == 8) { //点是之后进入此方法,最上面的状态提示记录已保存

Utility.showMessageBox(this.sessionContext.getCurrentEvent(),

"system", "jisuan2", null);

}

第三,在对象类里面实现

thisMboSet.addWarning(new MXApplicationException("system ", " jisuan2", params));

只弹出确定按钮
clip_image071

clip_image073

弹出关闭按钮

1、insert into maxmesSAGES ( MSGKEY, MSGGROUP, VALUE, TITLE, DISPLAYMETHOD, OPTIONS, BUTTONTEXT, MAXMESSAGESID)

values ( 'ghdhmsg', 'ghdh', '系统提示:此条化验单未审核,请重新选择!', null, 'MSGBOX', 0, null, MAXMESSAGESSEQ.nextval);

commit;

2、throw new MXApplicationException("ghdh", "ghdhmsg");

clip_image075

21、list列表过滤默认显示值

clip_image077

public void initializeApp() throws MXException, RemoteException {

if (!app.inAppLinkMode()) {

DataBean resultsBean = app.getResultsBean();

resultsBean.setQbe("status", "扣矸"); // 列表加载就是过滤状态为扣矸的数据

resultsBean.reset();

}

super.initializeApp();

}

clip_image079

22、只读字段代码中的长度含义

public static final long NOADD = 1L;

public static final long NOUPDATE = 2L;

public static final long NODELETE = 4L;

public static final long NOSAVE = 8L;

public static final long NO_RELATEDMBOS_OF_OWNERSCHILDREN_FETCH = 16L;

public static final long READONLY = 7L;//只读

public static final long DISCARDABLE = 39L;

public static final long NOSETVALUE = 64L;

public static final long REQUIRED = 128L;//必填

public static final long HIDDEN = 263L;

public static final long SAMEVALUEVALIDATION = 512L;

public static final long DBCONFIG = 1024L;

public static final long SETBYPARENT = 0x80000L;

public static final long USER = 0x100000L;

public static final long NOVALIDATION = 1L;

public static final long NOACCESSCHECK = 2L;

public static final long DELAYVALIDATIONONLY = 4L;

public static final long NOACTION = 8L;

public static final long NOVALIDATION_AND_NOACTION = 9L;

public static final long CHANGEDBY_USER = 16L;

public static final long NOOVERWRITE = 32L;

public static final long DELAYVALIDATION = 36L;

public static final long NOVALIDATION_AND_NOACTION_ALLOWCROSSOVER = 64L;

public static final long NONE = 0L;

public static final int ALLROWS = 0x989680;

public static final long REBUILD = 1L;

public static final long NOCOMMIT = 2L;

public static final int COUNT_DATABASE = 1;

public static final int COUNT_ADDITIONS = 2;

public static final int COUNT_DELETED = 4;

public static final int COUNT_EXISTING = 8;

public static final int COUNT_AFTERSAVE = 16;

23、插入签名选项和工具菜单

如果是在应用程序中开发,不能有read选项签名

insert into Sigoption ( APP, OPTIONNAME, DESCRIPTION, ESIGENABLED, VISIBLE, ALSOGRANTS, ALSOREVOKES, PREREQUISITE, SIGOPTIONID, LANGCODE, HASLD) values ( 'FUELAP006', 'SAVE', '保存', 0, 1, null, 'INSERT, FIELDDEFS', 'READ', SIGOPTIONSEQ.nextval, 'ZH', 0);

insert into Sigoption ( APP, OPTIONNAME, DESCRIPTION, ESIGENABLED, VISIBLE, ALSOGRANTS, ALSOREVOKES, PREREQUISITE, SIGOPTIONID, LANGCODE, HASLD) values ( 'FUELAP006', 'PREVIOUS', '上一条', 0, 1 ,null, null, 'READ', SIGOPTIONSEQ.nextval, 'ZH', 0);

insert into Sigoption ( APP, OPTIONNAME, DESCRIPTION, ESIGENABLED, VISIBLE, ALSOGRANTS, ALSOREVOKES, PREREQUISITE, SIGOPTIONID, LANGCODE, HASLD) values ( 'FUELAP006', 'NEXT', '下一条', 0, 1, null, null, 'READ', SIGOPTIONSEQ.nextval, 'ZH', 0);

insert into Sigoption ( APP, OPTIONNAME, DESCRIPTION, ESIGENABLED, VISIBLE, ALSOGRANTS, ALSOREVOKES, PREREQUISITE, SIGOPTIONID, LANGCODE, HASLD) values ( 'FUELAP006', 'INSERT', '新增', 0, 1, 'SAVE', null, 'READ', SIGOPTIONSEQ.nextval, 'ZH', 0);

insert into Sigoption ( APP, OPTIONNAME, DESCRIPTION, ESIGENABLED, VISIBLE, ALSOGRANTS, ALSOREVOKES, PREREQUISITE, SIGOPTIONID, LANGCODE, HASLD) values ( 'FUELAP006', 'DELETE', '删除', 0, 1, null, null, 'READ', SIGOPTIONSEQ.nextval, 'ZH', 0);

insert into Sigoption ( APP, OPTIONNAME, DESCRIPTION, ESIGENABLED, VISIBLE, ALSOGRANTS, ALSOREVOKES, PREREQUISITE, SIGOPTIONID, LANGCODE, HASLD) values ( 'FUELAP006', 'FIELDDEFS', '默认值', 0, 1, null, null, 'SAVE', SIGOPTIONSEQ.nextval, 'ZH', 0);

如果是在应用程序中开发的不能有read工具条

insert into Maxmenu ( MENUTYPE, MODULEAPP, POSITION, SUBPOSITION, ELEMENTTYPE, KEYVALUE, HEADERDESCRIPTION, URL, VISIBLE, IMAGE, ACCESSKEY, TABDISPLAY, MAXMENUID) values ( 'APPTOOL', 'FUELAP006', 12, 0, 'OPTION', 'INSERT', null, null, 1, 'nav_icon_insert.gif', null, 'ALL', MAXMENUSEQ.nextval);

insert into Maxmenu ( MENUTYPE, MODULEAPP, POSITION, SUBPOSITION, ELEMENTTYPE, KEYVALUE, HEADERDESCRIPTION, URL, VISIBLE, IMAGE, ACCESSKEY, TABDISPLAY, MAXMENUID) values ( 'APPTOOL', 'FUELAP006', 13, 0, 'OPTION', 'SAVE', null, null, 1, 'nav_icon_save.gif', null, 'MAIN', MAXMENUSEQ.nextval);

insert into Maxmenu ( MENUTYPE, MODULEAPP, POSITION, SUBPOSITION, ELEMENTTYPE, KEYVALUE, HEADERDESCRIPTION, URL, VISIBLE, IMAGE, ACCESSKEY, TABDISPLAY, MAXMENUID) values ( 'APPTOOL', 'FUELAP006', 14, 0, 'OPTION', 'PREVIOUS', null, null, 1, 'nav_icon_previous.gif', null, 'MAIN', MAXMENUSEQ.nextval);

insert into Maxmenu ( MENUTYPE, MODULEAPP, POSITION, SUBPOSITION, ELEMENTTYPE, KEYVALUE, HEADERDESCRIPTION, URL, VISIBLE, IMAGE, ACCESSKEY, TABDISPLAY, MAXMENUID) values ( 'APPTOOL', 'FUELAP006', 15, 0, 'OPTION', 'NEXT', null, null, 1, 'nav_icon_next.gif', null, 'MAIN', MAXMENUSEQ.nextval);

insert into Maxmenu ( MENUTYPE, MODULEAPP, POSITION, SUBPOSITION, ELEMENTTYPE, KEYVALUE, HEADERDESCRIPTION, URL, VISIBLE, IMAGE, ACCESSKEY, TABDISPLAY, MAXMENUID) values ( 'APPTOOL', 'FUELAP006', 16, 0, 'OPTION', 'DELETE', '删除', null, 1, 'btn_delete.gif', null, 'MAIN', MAXMENUSEQ.nextval);

24、格式化double类型,把double转化为四舍五入的string类型

double x=3.021;

NumberFormat ddf1=NumberFormat.getNumberInstance() ;

ddf1.setMaximumFractionDigits(2); //四舍五入2位小数

String s= ddf1.format(x) ;

System.out.print(s);

25、默认时间与默认自动编号

&SYSDATE& &AUTOKEY&

26、Aln域描述的使用(关系配置)
子对象是ALNDOMAIN(aln表名)
where子句:VALUE=:RLLX and DOMAINID ='RLLX' 子属性=:主属性 and 域名=’名称
clip_image081
九、表域的学习

clip_image083
1、前面的是对象FUELTB030的属性,与数据库配置的关系类似,这个对象就相当于数据库配置的子对象,验证where子句的两个属性时任意的属性,不一定非是Id标示
2、表域的作用与字段类相似,这个表域实现的是选择采样机时,弹出来的值是从FUELTB030表里面取值的,相当于select distinct( FUELTB030. SAMPLEMACHID) from FUELTB030 ,入厂发卡表 where 入厂发卡表. SAMPLEMACHID= FUELTB030. SAMPLEMACHID

clip_image085
3、insert into maxlooKUPMAP ( TARGET, LOOKUPATTR, TARGETATTR, SOURCEKEY, SEQNUM, ALLOWNULL, MAXLOOKUPMAPID, SOURCE) values ( 'FUELA005', 'SYBM', 'SYBM', 'SYBM', 1, 1, MAXLOOKUPMAPSEQ.nextval, 'FUELA004');COMMIT;
这一步很重要,返回弹出哪个字段
target:目标表(当前应用程序对应的表)
source:源表(就是你要从哪个表取出值来)
lookupattr: lookup绑的字段

targetattr: 目标字段

sourcekey: 源表单字段

4、select * from maxpresentation where app='LOOKUPS' for update; 执行后在最后添加以下内容:
<table id="ZYBM" inputmode="readonly" selectmode="single">
<tablebody id="fueltb030_lookup_tablebody" filterexpanded="true" filterable="true" displayrowsperpage="20"> <tablecol id="fueltb030_lookup_tablebody_col_1" dataattribute="ZYBM" mxevent_desc="Go To %1" mxevent="selectrecord" sortable="true" type="link"></tablecol>
<tablecol id="fueltb030_lookup_tablebody_col_2" dataattribute="description" mxevent_desc="Go To %1" mxevent="selectrecord" sortable="true" type="link"></tablecol>
</tablebody>
</table>
要更改两个地方,就是id=“查找里面放的名称” clip_image087,dataattribute=“数据库属性”
另一种说法

域里面什么都不要,只要一个子对象clip_image089

clip_image091

其中lookupattr 好像是xml里面的属性列名 clip_image093

clip_image095
clip_image097

十、maximo常用表解释
1、Action

工作流操作表

2 ALNDOMAIN

Aln类型域中存储的值在这个表中

3 APPLICATIONAUTH

删除应用程序的时候,需要将这个表里面该应用程序,所对应的数据全部删除,否则不能否再建相同名字的应用程序。

4 AUTOKEY

自动编号的相关数据存储在这个表里面。

5 BOOKMARK

所有应用程序添加到书签的数据都存储在这个表中。

6 DOCINFO

文档库中存储的数据,在这个表里面。

7 DOCLINKS

每个应用程序的每个数据多对应的文档存放在这个表。附件需要的

8 DOCTYPES

文档类型表。

9 MAXAPPS

Maximo应用程序相关表。

10 MAXDOMAIN

Maximo中所有的域表

11 MAXMENU

Maximo的转到菜单表。

12 MAXMODULES

Maximo模块表

13 MAXMESSAGES

Maximo中所有提示信息和处理异常提示信息表,对话框表

14 MAXOBJECT

记录Maximo表的表

15 MAXPRESENTATION

存放应用程序xml表

16 MAXRELATIONSHIP

Maximo关系表

17 SIGOPTION

签名选项表

18 WFPROCESS

工作流表

19 WFACTION

工作流使用操作的表

20 MAXROLE

工作流角色表

21 wfinstance wfassignment(收信箱)

流程表

22表结构:

每个表的ID,如果是序列产生的,序列的名字基本是表名+SEQ

表名为:A_表名,为该表的审计表

autokey 自动编号字段定义

WFASSIGNMENT 收信箱

LANGUAGE 语言表,定义使用的各国语言

MAXVARS MAXIMO系统变量默认值表

SYNONYMDOMAIN 系统同义词域

MAXDOMAIN 域或值集的定义

ALNDOMAIN 字母数字类型域值定义

MAXTABLEDOMAIN 表域类型定义

NUMRANGEDOMAIN 数值范围域

NUMERICDOMAIN 数值域

MAXVARTYPE 标识 MaxVar 的域

MAXLOOKUPMAP 用于查询的多键外键属性映射

CROSSOVERDOMAIN 用户数据库交叉字段的表

MAXSEQUENCE 表用到的序列定义

ORGANIZATION 组织机构定义

ADDRESS 组织机构地址列表

SITE 组织地点定义

MAXUSER MAXIMO用户表

PERSON 人员表

LABOR 员工表

LABORAUTH 员工授权表

MAXAPPS MAXIMO模块定义

MAXOBJECT MAXIMO对象,表或试图

SIGOPTION 模块操作功能列表

BOOKMARK 书签表

LOCATIONS 位置表

SCTEMPLATE 启动中心模板

GROUPUSER 定义用户属于的组

QUERY 用户保存的查询

DEFAULTQUERY 执行应用程序时用户默认查询

MAXSESSION 系统登录的用户会话记录

SITEAUTH 用户组地点授权

APPLICATIONAUTH 用户组应用授权

GROUPRESTRICTION 用户组数据授权(限制)

MAXGROUP 用户权限组

PASSWORDHISTORY 用户密码变化历史

MAXUSERSTATUS 用户状态表

LOGINTRACKING 用户登录跟踪表

SETS 集记录

FAILURECODE 故障代码表

LOCATIONSPEC 位置技术参数模板

LOCHIERARCHY 位置层次级结构,记录每个位置父亲

LOCSTATUS 位置状态表

LOCANCESTOR 位置祖先表,记录每个位置的全部祖先

LOCSYSTEM 位置系统定义

LOCATIONS 位置表

LOCOPER 功能性位置信息表

ASSETATTRIBUTE 设备公用技术参数字段定义

CLASSSPEC 每种类型设备包含的技术参数

DOCTYPES 附件文档类型

DOCINFO

DOCLINKS

DMSAPISETTING

APPDOCTYPE 应用包含文档类型

COMPANIES 公司表

FAILURECODE 故障代码列表(包括现象,原因,措施)

FAILURELIST 故障代码层次关系

MAXSERVICE 系统服务

MAXOBJECT 系统对象

MAXOBJECTCFG 系统对象配置,对象对应的业务对象和服务

MAXATTRIBUTE 系统对象各字段定义

MAXATTRIBUTECFG 系统对象各字段定义

MAXTABLE 系统表对象

MAXTABLECFG 系统表对象

MAXVIEW 系统视图对象

MAXVIEWCOLUMN 系统视图对象字段

MAXVIEWCOLUMNCFG 系统视图对象字段

MAXVIEWCFG 系统视图定义

MAXSYSINDEXES 系统索引定义

MAXSYSKEYS 系统关键字段定义

MAXRELATIONSHIP 系统表关联登记

MAXDOMAIN 系统域登记

ACTION 工作流中状态定义

ACTIONGROUP

MAXMODULES 系统模块表

MAXMENU 系统菜单结构

PALETTEITEM 系统控件元素定义

ASSETHIERARCHY 设备层次(好像没用)

ASSETHISTORY 设备历史

ASSETMETER 设备关联的仪表

ASSETSTATUS 设备状态

MEASUREPOINT 测点

十一、添加附件功能
1、修改doclink.properties

a) 路径在Maxprod\applications\maximo\properties\doclink.properties

b) 修改几个关键点:
1)mxe.doclink.maxfilesize =10
2)mxe.doclink.doctypes.defpath = E:\\Maxprod\\DOCLINKS\\default
注:好像没有效果,生成的路径好像永远都在C:\DOCLINKS
3) 7.25刚刚发现在C:\bea\user_projects\domains\dome\config.xml 里面可以配置路径 <Application Name="DOCLINKS" Path="C:\" StagingMode="nostage" TwoPhase="true">

<WebAppComponent Name="DOCLINKS" Targets="myserver" URI="DOCLINKS"/>

</Application>
4) C:\\DOCLINKS = http://localhost:7001/DOCLINKS
注:因为在C盘所以设置路径C盘这个文件夹是上下文访问路径,所以要把C:\\DOCLINKS部署

2、部署C:\\DOCLINKS文件夹

1)在此文件夹下面新建几个文件夹:
C:\DOCLINKS\ attachments
C:\DOCLINKS\ default
C:\DOCLINKS\ diagrams
C:\DOCLINKS\ images
C:\DOCLINKS\ WEB-INF 并将Maxprod\deployment\web.xml copy到此文件夹下 面,有web.xml才能部署此文件夹
2)进入weblogi控制台——> Deploy a Web Application Module——>部署
clip_image099

3、配置关系

需要在数据库配置加关联关系 与DOCLINKS表相关联
关系:DOCLINKS 子对象:DOCLINKS
where 子句:ownertable='表名' and ownerid=:表ID

4、添加修改签名选项

应用程序设计器里—>添加修改签名选项à

ASSOCFOLD 关联文件夹

MANAGELIB 管理库

MANAGEFOLD 管理文件夹

添加修改选择操作菜单——>

HEADER AM10附件库/文件夹

OPTION MANAGELIB管理库

OPTION MANAGEFOLD管理文件夹

OPTION ASSOCFOLD关联文件夹

做好这些工作后,到程序中选择 附件库/文件夹->管理文件夹,配置文件夹路径

例如:

文档文件夹 描述 默认文件路径

Attachments 附件 \DOCLINKS\attachments

注意:大小写要与实际文件夹一致。

十二、数据库配置中属性缺省值 :
1、当前登陆人:&USERNAME&
2、当前时间: &SYSDATE&
3、自动编号:&AUTOKEY&
十三、控件样式的目录
Maxprod\applications\maximo\maximouiweb\webmodule\webclient\css
十四、对MAXMENU表的几个列名介绍

INSERT INTO MAXMENU (MENUTYPE, MODULEAPP, POSITION, SUBPOSITION,

ELEMENTTYPE, KEYVALUE, HEADERDESCRIPTION, URL, VISIBLE, IMAGE, ACCESSKEY,

TABDISPLAY, MAXMENUID)

VALUES ('MODULE', 'TESTRL', 13900 , 0 , 'MODULE', 'TESTRL', NULL, NULL, 1 ,

NULL, NULL, NULL, MAXMENUSEQ.NEXTVAL);
1)MENUTYPE =菜单类型 ,如果MENUTYPE = APPTOOL,说明此菜单用来做工具条的菜单显示,那么ELEMENTTYPE=option/header/…
2)MODULEAPP =模型程序名,如果ELEMENTTYPE =APP,那么KEYVALUE =MODULEAPP

3)POSITION =位置,POSITION=7010,POSITION=7020,POSITION=7030就是代表下面的菜单位置:clip_image101,从上而下按数字从小到大排列

4)SUBPOSITION =子菜单位置,必须要让下级菜单的POSITION等于上一级的POSITION,再让SUBPOSITION=10,SUBPOSITION=20一样的从上而下按数字从小到大排列

5)ELEMENTTYPE=元素类型,表示这个菜单是干嘛的,=MODULE(模型菜单),=App(应用程序),=Header(头描述,即下级菜单,下级菜单的名称要靠HEADERDESCRIPTION列显示),= APPTOOL(工具条,名称要靠HEADERDESCRIPTION显示,详细看第一点)

6)KEYVALUE=键值,这个要根据MENUTYPE,MODULEAPP,ELEMENTTYPE,来决定具体写值

十五、隐藏菜单的方法
clip_image103
十六、更改oracleIP

1.将Maximo根目录\applications\maximo\properties目录下的maximo.properties 文件用文本打开
2.搜索:Oracle thin driver ,改成如下:

Oracle thin driver

mxe.db.url=jdbc:oracle:thin:@XXX.XXX.XXX.XXX:1521:?????

3.说明:XXX.XXX.XXX.XXX为本地需要启动服务的数据库所在的主机的IP地址。

?????为数据库的服务的名称。

十七、在maximo6.2的列表界面使用下载功能,下载的excel文件经常有乱码,解决办法:

1、 修改maximo\maximouiweb.war\webclient\controls\table\download.jsp

将response.setContentType("application/vnd.ms-excel ");

改为 response.setContentType("application/vnd.ms-excel;charset=gb2312 "); 有两处需要修改。

2、 重启weblogic就OK了

十八、删除应用程序
1、删除maxapps

在应用程序=“<application NAME>”;
select * from maxapps where app like '%TEST%'; delete maxapps where app like '%TEST%';commit;

2、删除maxpresentation

在应用程序=“<application NAME>”;
select * from maxpresentation where app like '%TEST%'; delete maxpresentation where app like '%TEST%';

commit;

3、删除sioption

在应用程序=“<application NAME>”;
select * from sigoption where app like '%TEST%'; delete sigoption where app like '%TEST%';

commit;

4、删除applicationauth(重要)

在应用程序=“<application NAME>”;
select * from applicationauth where app like '%TEST%'; delete applicationauth where app like '%TEST%';

commit;

5、删除maxlabels

在应用程序=“<application NAME>”;

select * from maxlabels where app like '%TEST%';delete maxlabels where app like '%TEST%';

commit;

6、删除maxmenu

其中moduleapp='<application NAME>“和menutype!=“模块”;
select * from maxmenu where moduleapp like '%TEST%' and menutype !='MODULE';
删除maxmenu其中moduleapp='<module NAME>“和的ElementType=”APP“
和KeyValue='<application NAME>“; select * from maxmenu where moduleapp like '%TEST%'
删除appdoctype在应用程序=“<application NAME>”;

SAFETY
delete from applicationauth where APP= 'FUELAP034B';

delete from maxapps where APP= 'FUELAP034B';

delete from maxpresentation where APP= 'FUELAP034B';

delete from maxlabels where app='FUELAP034B';

delete from Maxmenu where KEYVALUE='FUELAP034B' or MODULEAPP='FUELAP034B';

delete from Sigoption where APP='FUELAP034B';

commit;

十九、新建模块菜单

1、INSERT INTO MAXMODULES (MODULE, DESCRIPTION, MAXMODULESID) VALUES ('RANLIAO', '燃料管理', MAXMODULESSEQ.NEXTVAL);

2、INSERT INTO MAXMENU (MENUTYPE, MODULEAPP, POSITION, SUBPOSITION,

ELEMENTTYPE, KEYVALUE, HEADERDESCRIPTION, URL, VISIBLE, IMAGE, ACCESSKEY,

TABDISPLAY, MAXMENUID)

VALUES ('MODULE', 'TESTRL', 13900 , 0 , 'MODULE', 'TESTRL', NULL, NULL, 1 ,

NULL, NULL, NULL, MAXMENUSEQ.NEXTVAL);
3、insert into maxmodules ( MODULE, DESCRIPTION, MAXMODULESID) values ( 'FULE', '燃料指标管理', MAXMODULESSEQ.nextval);

4、insert into maxmenu ( MENUTYPE, MODULEAPP, POSITION, SUBPOSITION, ELEMENTTYPE, KEYVALUE, HEADERDESCRIPTION, URL, VISIBLE, IMAGE, ACCESSKEY, TABDISPLAY, MAXMENUID) values ( 'MODULE', 'FULE', 7000, 0, 'MODULE', 'FULE', null, null, 1, 'modimg_wo.gif', null, null, MAXMENUSEQ.nextval);

二十、改lable长度:
Maxprod\applications\maximo\maximouiweb\webmodule\webclient\common\ fieldsizegroups.jsp
二十一、工作流图标:
clip_image105
二十二、控件相关介绍
应用程序栏:

<blankline id="appbar2_blk" />

<appbar2 id="appbar2_001" applist="DXLOGZZ,DXLOGJZZ1,DXLOGJZZ2,DXLOGRLZZ,DXLOGHXZZ,DXLOGCHZZ,DXLOGXY" showimage="true" />

1、 拖一个应用程序栏控件出来

2、 导出xml在applist里面加入应用程序名称以“,”号分隔

Checkbox:

1、null: 该标签默认为文本值相关与您的数据库属性绑定到复选框。这是一个只读字段

2、标签:您可以在该字段输入的文本值覆盖默认的标签值。你的标签在此处输入特定于应用程序,而不是在MAXATTRIBUTE储存或APPFIELDDEFAULTS表
3、属性:您可以与数据库关联复选框通过使用属性对话框中选择值。要创建此控件的例子,你可以
对象字段中输入“=资产”来显示所有在资产表中的属性。

4、值:保留供将来使用

5、输入模式:有选项

6、数据更改事故:数据更改事件

7、数据源标识:如果你想要这个控件使用不同的数据来源识别码比MAINRECORD默认情况下,
然后输入该值在这里。数据源ID说明组合框控制的其他信息数据源。

Combobox:

1、选中属性:在此字段中显示(如果有的话)的值绑定到数据源和属性你选择控制。 select属性值显示在ComboBox的文本框部分为并且是同义词或缩写显示属性。例如,如果创建一个ComboBox所谓的状态,您可能默认或定义值如为审批和APPR等待WAPPR核准。

2、显示属性:在此字段中显示(如果有的话)的值绑定到数据源和属性你选择控制。显示属性值为显示在ComboBox的下拉菜单。例如,如果创建一个ComboBox称为状态,您可能会喜欢的默认值或定义
等待审批和核准。

数据源datasource:

1、Bean 类:保留供将来使用。

2、 业务对象:该应用程序的主MBO参考。例如,工单跟踪使用WOTRACK和资产管理系统使用的资产。每个Maximo的应用程序的工作与MBO和MBOSet。显示的工作组订单就在工单跟踪列表标签应用程序,例如,是一个MBOSet。每个个人的工作秩序是MBO。一个应用程序的介绍标签定义为主要MBO
应用。 MBOs是负责以下类型的功能:
1、字段验证
2、更新数据库
3、业务处理逻辑。
默认情况下,为演示标签MBO的主要应用程序定义时使用保存或通过用户数据显示接口。在应用共享所有控制通过父数据相同MBO参考资料来源的ID属性。除非重写,所有控制添加到应用程序绑定到父数据源ID。如果你想一个人控制显示和处理来自信息不同的MBO,你可以输入不同的父数据来源识别码。

3、父级数据源标识: 如果你想继承这个控制从数据源比MAINRECORD其他,请输入在这一领域的价值。您可能,例如,要在定义一个新的父数据源申请如工单跟踪凡表需要拉从一个对象的其他数据比WORKORDER。父数据源ID让你用不同的数据关系源使用WHERE子句。

4、父级数据源标识:如果你想继承这个控件从数据源比MAINRECORD其他,请输入在这一领域的价值。您可能,例如,要在定义一个新的父数据源申请如工单跟踪凡表需要拉从一个对象的其他数据比WORKORDER。父数据源ID让你用不同的数据关系源使用WHERE子句。

5、关系:您进入一个在此领域关系的价值。您可以搜索的值在数据库配置>关系选项卡。如果你输入一个关系,它会自动继承任何控制指向这个数据源。关系使控件显示
信息从不同的Maximo的业务对象。例如,如果输入SPAREPART,该表将能够显示上定义的关系为基础的信息。当你输入一个表的关系控制,它会自动前缀的任何子列属性添加到表中。因此,对于SPAREPART,你只需要输入列属性名,而不是全面的关系SPAREPART<attribute>。

6、排序条件:保留供将来使用。.

7、 Where 子句: Where 子句

8、监听器:输入一个或多个控件ID(S),其显示值将被刷新的基础上这个数据源的变化。控制ID(s)可以驻留在应用程序内的任何地方。您必须用逗号分隔多个值。

默认值:

1、原数据源标识:输入从数据源ID属性,如果配置。

2、来自属性:如果不配置一个静态的默认值与Value属性,那么你可以输入一个从属性,更新或查询数据库与它的值

3、默认类型:选择一个或插入或查询默认类型

网格帮助:

1、标签:你的名称分配给帮助电网控制 特定的应用程序。您输入的标签是不 在MAXATTRIBUTE储存或 APPFIELDDEFAULTS表

2、HTML内容:信息性文本或指导性帮助 显示在帮助电网控制。

超级链接:

1、列:输入一个在这一领域的数值,将 位置在开始,中间的超链接, 或列结束取决于文本 对齐设置。默认情况下,每个组 控制有七个列是透明的 给用户。例如,如果你进入这个“3” 字段和“中心”文本对齐,然后 maximo中心的超链接的上方或下方 列三个。 如果您要显示超链接是广泛 比其列,你不能使用文本 Alignment属性和Maximo自动 扩展列宽以包含 超链接。

2、图像文件名:要添加图形超链接的旁边,输入文件名在这一领域。此字段默认为图像的目录路径,你不已经进入了一个图形文件的完整路径。您可以指定任何类型的图形,一个
浏览器的显示能力,例如。GIF,JPEG,或。BMP的。一些图形文件可能需要插件。
注意你可以放到任何图形文件maximo库中的图像。但是,如果您插入和适用于无。gif扩展名的图形文件,然后您需要重建/部署maximo。EAR文件

3、 分离符:保留供将来使用

4、  CSS类名:输入级联样式表类的名称。您输入的值可以改变的布局和外观超链接的控制。该“powerwhite”输入值的范例这种控制改变超链接的字体颜色白色。您可以搜索CSS类名的以下目录:<maximo_root>\applications\maximo\maximouiweb\webmodule\webclient

5、访问键:输入一个从超链接标签使用的信部分键盘快捷方式。例如,访问的超链接转到的关键是G.按下ALT+ G回车,下拉maximo主菜单。Maximo强调在访问键用户界面。

6、控制目标标识:输入控件ID,如果从目前的不同按钮控制,该系统发送事件属性(如果定义)进行处理。该控制的超链接转到目标ID例子是“pageTitlebar。

7、事故类型:超链接可以链接到用户界面 操作或“事件”。当你点击 超链接,它触发的事件中指定的 这一领域。为要转到事件类型 超链接是“showmenu”。而“showmenu”事件显示maximo转到菜单。 要查看所有的事件在Maximo的定义,你 必须导出系统。xml文件通过选择 主选项卡,从应用程序设计和 选择选择操作>导出系统的XML。 这个动作出口library.xml,lookups.xml, 和menus.xml文件到<maximo_root> \资源\介绍\系统 目录。完成后,您可以搜索 事件使用XML文件的文本字符串值 “MXEVENT。” 应用程序设计过程中的事件 顺序如下: 1如果您指定目标的ID属性,它会发送 到控制ID在指定的事件 财产进行处理。 2如果你不指定一个目标的ID属性,它事件发送到应用程序的JSP主
网页进行处理。它调用的方法(即, 在一个类中定义的函数)的确定 MXEVENT属性来处理该事件。 3如果1和2不工作,它会尝试加载 对话框,指定的关联 活动

8、事故值:定义了一个名为当你选择一个事件超链接。为向菜单转到事件值“转到”。

图像:

1、列:这部分细分领域,其中图像显示或细分为四个相等列在用户透明接口。你可以改变立场图像移动到一个图形列

包含:

1、要克隆的控制标识:从library.xml输入控件ID。这属性使您可以包含相同的库元素在演示文稿多次

列表框:

1、自动刷新:选择此框,如果你想在信息列表框,自动刷新,每当有是对MBO的变化

菜单栏(放在外面,不在部分控件里面)

1、标签:你的名称分配给MenuBar控件。这个值不会显示在用户界面。您在此处输入的标签是特定的
应用程序而不是存储在MAXATTRIBUTE或APPFIELDDEFAULTS表。

2、源方法:该代码的功能块调用菜单栏,其签名的安全选项,布局。该方法调用标准maximo搜索菜单栏“getAppSearchOptions。

3、事故值:定义时调用您选择的事件选择菜单栏上的。例如,事件为搜索菜单栏的值是“搜索”。

多行文本框

1、查找:您可以输入在查找属性值该文本框链接到预先格式化查询表。查找表就会从记录
主表。用户可以通过填充的文本框从表中选择一个记录。该值,所谓一个查找ID,定义了XML介绍内容和格式的选择值表。WORKORDERISTASK,例如,是查找父WO在文本框属性工单跟踪。查找ID的驻留在系统XML文件名为lookups.xml。您不能编辑系统的XML文件从应用程序设计。不过,您可以查看对这些类型的文件内容通过选择一个主标签的应用程序设计和选择选择操作>导出系统的XML。这个动作出口library.xml,lookups.xml,和
menus.xml文件到<maximo_root>\资源\介绍\系统目录。

多部分文本框

1、 菜单类型:您可以在菜单中输入一个值类型属性该文本框链接到预先格式化的落下拉菜单。值,称为菜单ID,定义XML表示的内容和格式的下拉菜单。这个例子使用了预格式化菜单名为ASSETMAIN资产。菜单ID的驻留在系统称为XML文件menus.xml。您不能从应用程序编辑这个文件设计师。不过,您可以查看内容通过选择这个文件或其他系统。xml文件主选项卡,从应用程序设计和选择选择操作>导出系统的XML。这个动作出口library.xml,lookups.xml,和menus.xml文件到<maximo_root>\资源\介绍\系统
目录。

2、 关闭“智能填充:默认情况下,maximo使“智能填充”功能。要禁用,请清除该复选框。这
功能,可以输入一个部分值文本框字段。Maximo尝试匹配部分文本字符串输入一个有效的值(s)在
数据库。如果找到一个匹配马克西莫值,它会自动填充字段,以便你可以继续输入信息。如果,maximo找到多个匹配值,它显示一个列表中选择值的对话框匹配的值。如果清除了智能填充功能,maximo不验证你的数据请在文本框

3、 部件 2 的属性: 您可以将一个多部分的第二部分与数据库属性的文本框使用选择值对话框。通常情况下,配置在一个多控制显示的第二部分为记录的完整的描述信息选择在第一部分。对于这个例子控制显示应急发电机,这是对于资产编号ASSET.DESCRIPTION选择。

参数(不会用,不知道放哪?)
按钮:(好像只能放在按钮组上面)

1、 默认按钮:选择这一领域做出了积极的按钮按钮,在按钮组。Maximo亮点在用户的积极按钮的标签文本接口。您可能要作出最经常使用的按钮,例如,新行,默认按钮

2、目标标识:输入控件ID,如果从目前的不同按钮控制,该系统发送事件属性(如果定义)处理

3、图像文件名:applications\maximo\maximouiweb\webmodule\webclient\images 随便找一个图片名称放进去就好了,不需要路径,当然你也可以选自己的图片

单选按钮组:

1、 按钮方向:输入垂直或水平对齐值无论是在垂直组或单选按钮水平(Vertical or Horizontal)没反应

表:

1、 开始清空:选择此框,如果你想表始终打开没有显示记录。如果你离开这个框清零(默认),自动maximo
填充匹配的记录表搜索查询时打开

2、 没有行消息:默认情况下,您会看到消息“无行显示“当你打开没有行的表。要覆盖默认的短信,输入一个值在这一字段

3、 无行消息属性:保留供将来使用

4、 扩展过滤器:选择此框,如果你想显示一个空连续查询过滤器,当您打开一个表。如果清零时,默认情况下,过滤器行不显示与打开的表。只见筛选

5、 扩展行详细信息:选择此选项,如果你想有一个表显示记录中的每个细节部分扩大表。默认为不扩大的细节第一个表行

可折叠的:选择此框,使显示/隐藏的图标表中的工具栏。您必须选择此字段使用“折叠”字段。默认情况下,这字段被清除

6、 折叠:如果选择了“折叠”,那么你可以选择此框只显示表格标题和没有任何行的细节,当您打开一个表应用。默认情况下,此属性将被清除

7、 折叠的空标签: 当一个表被折叠,或空的,值您在此处输入将覆盖表的标题(即标签属性)在用户界面。

8、 折叠的标签:当表处于折叠状态,您输入的值这里将覆盖在用户表的标题接口

9、 父级空标签:如果这个表是父表的子表,并表是空的,您在此处输入的值将覆盖父表的标题

10、 Bean 类:保留供将来使用。

11、 选择模式:您可以限制一个表来显示一个或从数据库表中的多个记录。您可以订单跟踪名单表,例如,有这样字段设置为“多个”。

12、 输入模式:

默认 - 设置控制“编辑”,让你可以显示或输入值和模式是读/写
密码 - 设置控制显示星号(空白出)的显示或输入值和模式是读/写
密码只读 - 设置控制显示星号和模式是只读
需要密码 - 设置控制显示星号和控制是必需的
查询 - 设置控制显示输入值和模式是只读
只读 - 设置控件显示灰色的文本和模式是只读
必需 - 设置控制显示输入值并记录无法保存,除非有值控制

13、 关系:您进入一个在此领域关系的价值。您可以搜索的值在数据库配置>关系选项卡。如果你输入一个关系,它会自动继承任何输入表内的子控件。关系使一个表来显示信息从不同的Maximo的业务
对象。例如,如果输入SPAREPART,该表将能够显示上定义的关系为基础的信息。当你输入一个表的关系控制,它会自动前缀的任何子列属性添加到表中。因此,对于SPAREPART,你只需要输入列
属性名,而不是全面的关系SPAREPART<attribute>

排序条件:输入属性的名称时使用排序表中的信息。例如,你可以排序量清单记录根据他们的数值。如果输入ASC数量,该表显示记录升序从最低到最高数值。如果输入DSC数量,该表显示降序记录从最高到最低的数值

14、 应用程序限制:输入一个WHERE子句,过滤器的信息显示在表格中。如果输入的限制,它修改为整体Where子句应用。你不能改变的限制在运行时

15、 监听器:输入一个或多个控件ID(S),其显示值将被刷新的基础上这个数据源的变化。控制ID(s)可以驻留在应用程序内的任何地方。您必须用逗号分隔多个值

16、 过滤器:此栏增加了一个搜索到过滤器行表。它默认为启用。此设置自动传递给筛选?物业在所有表列管制。您必须选择此框可使用过滤器扩大呢?财产。又见过滤扩大呢?

表列

1、 标签属性:您可以输入一个逗号分隔的数据列表属性时使用的建设默认标签此控件。该标签属性和标注源ID属性使您可以显示在默认标签动态值表列

2、 服务受理单源标识:输入对象的名称是数据源标签属性

3、 标题属性:保留后续使用

4CSS类名称:输入级联样式表类的名称。您输入的值可以改变的布局和外观的表列。通常情况下,你不会使用与表列这方面的对照

5 类型:您可以链接表列事件和链接。如果您选择的事件,它映射到一个列事件类型,描述和图示。书签
和TOGGLEDETAILSTATE是事件例子。链接添加下划线的值,通常是一个记录编号,这会导致细节
记录时要打开您选择的值。在相关工作单标签有一个事件列前的工作订单数列所谓“toggledetailstate”与描述“显示详细信息。”本专栏地方视图/显示详细图标旁边的工作订单号列,让您打开或关闭细节
第一个选择的工作秩序。工作单在工作数列订购列表选项卡有一个链接类型的值。链接增加了一个强调所有工作订单号码出现在列

6. 属性: 你可以与一个表列通过使用数据库属性选择值对话框。例如,如果输入ASSETNUM在属性字段,maximo填充用默认的标签“资产”。这列显示资产编号和“资产”显示为表列标题。并非所有的您选择的属性将有一个数据库的默认标签的值。

7. 链接的控制标识: 您可以输入控件ID这里得到自动更新每当有改变此列的属性值。该控件ID必须驻留在某处应用

8. 菜单类型: 您可以在菜单中输入一个值类型属性表列,链接到预先格式化下拉菜单。值,称为菜单ID,
定义XML的内容和演示格式下拉菜单。 WORKORDER,为例如,为家长WO菜单式文本框在工单跟踪。菜单的ID居住在一个系统中的XML文件称为menus.xml。您不能从应用程序编辑这个文件设计师。不过,您可以查看内容通过选择这个文件或其他系统。xml文件主选项卡,从应用程序设计和选择选择操作>导出系统的XML。这个动作出口library.xml,lookups.xml,和menus.xml文件到<maximo_root>\资源\介绍\
系统目录中

9 查找:同上

10 更改事故:您可以配置一个输入控件执行无论对任何数据进行的下列行动变更控制:
1 REFRESHTABLE
2 RESETCHILDREN
选择REFRESHTABLE势力的表
是为输入控制刷新数据源
它的数据。选择RESETCHILDREN任何势力
控件的数据bean子删除和
重新获得他们的MBOSetRemote引用。

11 URL 属性:选择类型是链接,输入一个URL值如果设置了类型属性此控制“链接”。该URL值成为超链接

12事故:选择类型是事件当你执行一个动作,maximo发送一个“事件”,到后端的调用并运行与事件相关联的方法。没有事件的目录清单,但是,您可以搜索事件和事件的描述在演示使用搜索词“mxevent”和“mxevent_desc。参见类型。

13、事故图标:输入控件ID,如果从目前的不同表列控制,该系统发送事件属性(如果定义)进行处理

二十三、开发应用程序中选择操作步骤
1、签名选项

点击选择操作,在弹出的下拉列表中点击“添加/修改签名选项”,弹出“添加/修改签名选项”窗口。点击下面的“新建行”按钮,新建签名选项。

要添加如下的基本签名选项:

选项

描述

BOOKMARK

添加到书签

CLEAR

清除

DELETE

删除

INSERT

新计划

NEXT

下一个

PREVIOUS

前一个

SAVE

保存

SEARCHBOOK

书签

SEARCHMORE

更多搜索字段

SEARCHSQRY

保存当前查询

SEARCHTIPS

查看搜索提示

SEARCHVMQR

查看/管理查询

SEARCHWHER

Where 子句

2、选择操作

根据需求,将部分的签名选项添加的到选择操作菜单中。

点击选择操作,在弹出的下拉列表中点击“添加/修改选择操作菜单”,弹出“添加/修改选择操作菜单”窗口。点击下面的“新建行”按钮,新建选择操作。

新建一个选择操作之后,在下拉页面中,有如下的属性:

键值:从签名选项中选择一个已经存在签名选项。

元素类型:如果该操作是一个实际的操作,类型为OPTION。

如果不是一个实际的操作,只是一个目录的节点,类型为:HEADER

职位/下级职位:显示的位置是通过位置决定的,如果一个位置下面有几个分支,那么每个分支的位置,又下级职位决定。

标签页:ALL:所有页面可见。

LIST:仅list页面可见。

MAIN:非list页面可见。

3、工具栏

根据需求,将部分的签名选项添加的到工具栏中。

根据目前的需求及maximo的标准功能,目前扩展开发的工具栏,基本设计要求如下:

键值

元素类型

职位

下级职位

图像

标签页

INSERT

OPTION

10

0

nav_icon_insertkey.gif

ALL

SAVE

OPTION

11

0

nav_icon_save.gif

MAIN

CLEAR

OPTION

12

0

nav_icon_clear.gif

MAIN

 

SEP

13

0

 

MAIN

PREVIOUS

OPTION

14

0

nav_icon_previous.gif

MAIN

NEXT

OPTION

15

0

nav_icon_next.gif

MAIN

 

SEP

16

0

 

MAIN

4、搜索菜单

根据需求,将部分的签名选项添加的到搜索菜单中。

根据目前的需求及maximo的标准功能,目前扩展开发的搜索菜单,标准设计要求如下:

键值

标题描述

元素类型

职位

下级职位

图像

标签页

 

高级搜索

HEADER

10

0

atb_search.gif

ALL

SEARCHMORE

 

OPTION

10

10

 

ALL

SEARCHWHER

 

OPTION

10

20

 

ALL

SEARCHTIPS

 

OPTION

10

30

 

ALL

 

保存查询

HEADER

20

0

atb_save.gif

ALL

SEARCHSQRY

 

OPTION

20

10

 

ALL

SEARCHVMQR

 

OPTION

20

15

 

ALL

SEARCHBOOK

 

OPTION

30

0

 

ALL

二十四、二次开发介绍
1、对象及属性

设计好表结构后,通过MAXIMO中“数据库配置”应用程序创建表。创建过程中需要注意以下属性:
对象选项

选项

备注

表名:

18个字符的字母和数字的组合

类:

用于处理对象业务逻辑的 Java 类。格式必须是带完整的包名,如:psdi.app.financial.AccountDefaultsSet。

主对象?

表示是否是工作流程的主对象,如果没有选中该复选框,则在创建工作流时不能选择该对象。

属性选项

选项

备注

属性名:

50个字符的字母和数字的组合

标题:

此处输入的值会在用户查看字段帮助时显示

类型:

MAXIMO提供的字段类型。

长度:

字段长度

域:

该字段可供选择值的域名称

类:

该字段上用于验证和触发的业务逻辑java类名。格式必须是带完整的包名,如:psdi.app.site.FldOrganizationID

要求?

是否要求该段必须填写?

2、MBO介绍

如果需要在新建的对象中加入特殊的业务逻辑,则需要自己编写MBO,并部署到相应的对象。

操作方法是在数据库配置应用程序中,找到指定的对象,并在“类”字段处输入值。保存修改后,需要停止服务,执行configdb.bat使更改生效。如下图所示:

clip_image106clip_image108MBO介绍

Mbo可理解为数据库中某一条记录,其方法都是对记录的操作,如:添加、删除、修改等。
MBO中常用的方法

方法名

功能

add

新建mbo

init

初始化mbo

save

保存mbo

delete

删除mbo

getXXX

根据字段类型获取mbo内字段数据,如getString(),getInt(),getDouble()等

setValue

设置mbo内字段的值

3、MboSet介绍

MboSet可以理解为Mbo的集合,既多个Mbo。其方法都是对整个Mbo集合的操作。
MboSet常用方法

方法名

功能

save

保存mboSet

count

得到当前MboSet包含的记录数

setWhere

设置对mboset的过滤条件

setOrderBy

设置对mboset的排序条件

getMbo

得到指定的mbo

4、字段绑定逻辑介绍

如果需要在指定的字段上加入特殊的业务逻辑,则需要自己classes,并部署到相应的字段上。必须继承psdi.mbo.MboValueAdapter或psdi.mbo.MAXTableDomain。

操作方法是在数据库配置应用程序中,找到指定的对象,并在“类”字段处输入值。保存修改后,需要停止服务,执行configdb.bat使更改生效。如下图所示:

clip_image109clip_image111字段绑定类中常用的方法

方法名

功能

init

初始化字段时触发

action

字段值发生变化时触发

5、AppBean介绍

AppBean用于实现MAXIMO6中应用程序的界面操作控制,如界面的新建、保存、发送工作流等。在HARV-EAM系统中可参考“采购单”应用程序的AppBean,harv.webclient.beans.po.CtmPOAppBean。
AppBean常用方法介绍

方法名

功能

initializeApp

应用程序初始化

SAVE

界面的保存事件

getMboSet

得到当前的MboSet

getMbo

得到当前的Mbo

6、DataBean介绍

DataBean用于实现MAXIMO6中特定数据源的界面操作控制,如弹出窗口中按钮的事件等。在HARV-EAM系统中可参考“采购单”应用程序的DataBean,harv.webclient.beans.pocheck.SelectPoCheckLineBean。

方法名

功能

initializeApp

数据源的初始化

getMboSet

得到当前的MboSet

getMbo

得到当前的Mbo

XXX

对应按钮的事件

二十五、类介绍
1、Mbo类

Maximo的每一个对象,都要对应5个类,其中有一个继承mbo类,根据实际的需求,在这个类里面有如下的方法需要覆盖父类mbo的方法:
1)Add方法

新建数据的时候,调用此方法.

public void add() throws MXException, RemoteException

{

//实现父类的方法。

super.add();

//把主表的XXX字段的值放到当前表的XXX字段

setValue("XXX", getOwner.getString("XXX"), 11L);

//取当前的系统时间,放到创建时间(CREATEDATE)字段

setValue("CREATEDATE", Calendar.getInstance().getTime(), 11L);

//取当前的登陆人id,放到创建人id(CREATORNO)字段

setValue("CREATORNO", getUserInfo().getPersonId(), 11L);

//根据当前的登陆人id,在人员表中查找当前登陆人姓名,放到创建人(CREATOR)字段

MboSetRemote mboSetRemote = getMboSet("$PERSON", "PERSON", "PERSONID='" + getUserInfo().getPersonId() + "'");

MboRemote mboRemote = mboSetRemote.getMbo(0);

mbo.setValue("CREATOR", mboRemote.getString("DISPLAYNAME"), 11L);

}
2)Save方法

修改数据,保存时调用此方法

protected void save() throws MXException, RemoteException

{

try

{

//取当前的系统时间,放到修改时间(MODIFIEDDATE)字段

setValue("MODIFIEDDATE",Calendar.getInstance().getTime(), 11L);

//根据当前的登陆人id,在人员表中查找当前登陆人姓名,放到修改人(MODIFIEDBY)字段

MboSetRemote mboSetRemote = getMboSet("$PERSON", "PERSON", "PERSONID='" + getUserInfo().getPersonId() + "'");

MboRemote mboRemote = mboSetRemote.getMbo(0);

setValue("MODIFIEDBY", mboRemote.getString("DISPLAYNAME"), 11L); } catch (RemoteException e)

{

e.printStackTrace();

}

}
3)Init方法

初始化方法

public void init() throws MXException

{

//调用父类的init方法

super.init();

//如果是新建的数据,将xxx字段只读

if (!toBeAdded())

{

setFieldFlag("XXX", 7L, true);

}

}

4)要写在其他方法里的,比如写在save()方法里:

public void save(){

if(toBeAdded()){

}

//是当前记录第一次新

}

save()每次保存都会触发,而toBeAdded只会被执行一次。

2、字段绑定类

1)选择值类

字段绑定类,需要继承MAXTableDomain类。

public class FldLeaderNo extends MAXTableDomain

{

public FldLeaderNo(MboValue mbovalue)throws MXException, RemoteException

{

super(mbovalue);

//这里写关系,红色的字为要选择的表的名字,后面的关系中,前面的字段选择的表中的字段,后面为当前表中的字段。

setRelationship("QHREmployee", "EMPLOYEEID=:LeaderNo");

//这里实现赋值功能

setLookupKeyMapInOrder(new String[] {

"LeaderNo","LEADERNAME"//当前表中的字段

}, new String[] {

"EMPLOYEEID","EMPLOYEENAME"//要选择的表中的字段

});

}

// getList()方法用来实现选择值的时候,弹出的数据过滤功能

public MboSetRemote getList() throws MXException, RemoteException

{

//红色的表名,蓝色的为过滤条件的关系

return getMboValue().getMbo().getMboSet("$QHREmployee", "QHREmployee","DeletedFlag=0");

}

action()方法用来实现选择值得时候的其他操作

public void action() throws MXException, RemoteException

{

super.action();

}

validate()用来实现选择值的时候数据检查操作

public void validate() throws MXException, RemoteException

{

super.validate();

}

}
2)时间前后/数值大小判断

在maximo中,通常要做2个时间值前后或是2个数据值大小的判断,要把需要判断的绑定的类继承MboValueAdapter类。

public class FldTimeEndDate extends MboValueAdapter

{

public FldTimeEndDate(MboValue arg0)throws MXException

{

super(arg0);

}

//在validate()方法中实现数据的判断功能

public void validate()throws MXException, RemoteException

{

MboValue EndDate = getMboValue("ENDTIME");

MboValue StartDate = getMboValue("BEGINTIME");

if(EndDate.isNull() || StartDate.isNull())

return;

Date ENDDATE = EndDate.getDate();

Date STARTDATE = StartDate.getDate();

if(STARTDATE.after(ENDDATE))

throw new MXApplicationException("contract", "endDateBeforeToday");

else

return;

}

}
3)控件触发类

在maximo中,如果触发了一个控件,在里面填入值后,又其他的自动实现的操作,这个字段需要绑定的类,要继承MAXTableDomain类。

自动实现的类,要写在action方法中:

public void action() throws MXException, RemoteException

{

//在action方法中实现功能

}

3、Bean类

1)Appbean类

每个应用程序根据需要,可以绑定一个appbean类,而且一个应用程序只能帮定一个AppBean类。

绑定的位置如下:

进入应用程序设计器,选择要绑并appbean类的应用程序,转到工作空间页面,点击选择操作—〉切换显示全部控件,如下图所示:

clip_image113

点击图片中的最上面的一行,点击控件属性按钮,弹出窗口,如下所示:

clip_image114

在AppBean类中输入要绑定的类的包名和类名,保存退出。

在这里可以覆盖一些AppBean中的方法,来实现其他的功能。

public class XXXAppBean extends AppBean

{

public XXXAppBean()

{

}

public int DELETE() throws MXException, RemoteException

{

//实现删除的时候得其他功能

}

public int SAVE() throws MXException, RemoteException

{

//实现保存的时候得其他功能

}

}

也可以自己在这个类中添加新的方法,方法名和签名选项中的名一样,就可以实现自己新的功能。
2)MultiselectDataBean

应用程序中的每一个表控件,都可以绑定一个类,这个类一般继承MultiselectDataBean类,察看表控件的属性,在表控件的属性窗口中,bean类的输入框中输入类的包名和路径名。如下所示:

clip_image115

public class YearPlanBean extends MultiselectDataBean

{

public YearPlanBean()

{

}

public int Toggledeleterow()throws MXException,RemoteException

{

//可以覆盖删除子表没条记录的方法

}

}

二十六、字段类(可查看二十四)
1、写字段类,代码如下:

package psdi.app.fuel;

import java.rmi.RemoteException;

import java.sql.Connection;

import java.sql.ResultSet;

import psdi.mbo.MAXTableDomain;

import psdi.mbo.MboSetRemote;

import psdi.mbo.MboValue;

import psdi.mbo.MboValueAdapter;

import psdi.server.MXServer;

import psdi.util.MXException;

//注意继承的类是MAXTableDomain

public class Fldcybh extends MAXTableDomain

{

public Fldcybh(MboValue mbv)

throws MXException

{

super(mbv);

String n= getMboValue().getAttributeName();

System.out.println(n);

setRelationship("FUELTB012", "TERMNUM=:"+n); //这个FUELTB012 是要取值的那个表名 ,不是当前表名

String[] strFrom={n};//当前的属性名

String[] strTo={"TERMNUM"};//数据库中要取出的属性名

setLookupKeyMapInOrder(strFrom,strTo); }

//必须要重写这个方法,没有条件就直接return super.getList()
public MboSetRemote getList() throws MXException, RemoteException

{

//过滤条件 相当于表域的 “ 列出 Where 子句 ” //setListCriteria("BASICCAUSE_NCRID in (select Max(BASICCAUSE_NCRID) from //BASICCAUSE_NCR group by description)");
return super.getList();

}

public void action() //可以写字段触发方法

throws MXException, RemoteException

{

super.action();

}

}

2、属性绑定类别

clip_image117

3、导出Lookups,写一段代码放到最后,其中<table id= ….> 这个id代表的是查找的值,可以随便写一个值,尽量规范,然后里面的代码就是弹出要选择的值,一一赋属性

clip_image119

二十七、后台任务设置
1、新建后台任务
clip_image121
2、新建行后台任务实例(必须先把类放进去,类的路径必须是businessobjects包下面的)
clip_image123
3、类必须继承psdi.server.SimpleCronTask,实现方法cronAction,在cronAction里面写定时实现的功能

public class test extends SimpleCronTask{ //后台任务类

public void cronAction() { //执行任务的方法

//方法体

}

}

二十八、润乾报表
1、 配置数据源

在weblogic的控制台中不仅要部署maximo,还要配置数据源,配置这个数据源就是为了连接润乾报表的,首先在console里面配置
clip_image125
clip_image127

clip_image129
clip_image131
clip_image133
clip_image135

clip_image137

clip_image139
clip_image141

clip_image143

在润乾报表设计器里面配置
clip_image145

clip_image147

2、修改maximo相关配置文件

修改applications\maximo\maximouiweb\webmodule\WEB-INF\reportConfig.xml文件
找到datasource,修改为
<config>

<name>dataSource</name>

<value>LiemsPoolJNDI,oracle,iso-8859-1</value>

</config>

LiemsPoolJNDI代表数据源名称,数据类型oracle,编码iso-8859-1

如果有多个数据源用分号分隔如:<config>

<name>dataSource</name>

<value>LiemsPoolJNDI,oracle,iso-8859-1; maximo,oracle,iso-8859-1;</value>

</config>

3、在maximo中使用报表

做一个简单的jsp如下:
<%@ page contentType="text/html;charset=GB2312"%>

<%@ taglib uri="/WEB-INF/runqianReport4.tld" prefix="report"%>

<%

String datefrom = "2011-09-01";

String dateto = "2011-09-20";

request.setCharacterEncoding("GBK");

String programNo= "report_1"; //我在报表工具中新建的报表为report_1.raq

//润前存放地址 路径applications\maximo\maximouiweb\webmodule\reportFiles\html下面的都是放报表的

String html_name = "html/"+programNo+".raq";

String params = "params1="+datefrom+";params2="+dateto+"";//参数以分号隔开

%>

<html>

<body leftMargin=0 topMargin=0 rightMargin=0 bottomMargin=0>

<center>

<INPUT type=button value="查询" onclick="window.location.reload()">

<report:html name="report" width="2000"

reportFileName="<%=html_name%>"

needSaveAsExcel="yes"

needSaveAsPdf="no"

needPrint="yes"

needSaveAsWord="yes"

useCache="no"

scrollHeight="440"

params="<%=params%>"

needPageMark="yes"

/>

</center>

</body>

</html>

4、新增几个润乾报表的jar

clip_image149

5、备注(JDBC driver is not on the CLASSPATH)

如果在第二步报错,就是在

clip_image150

中下面显示的不是成功,报错JDBC driver is not on the CLASSPATH,那么就把原来在Maxprod\applications\maximo\lib\oraclethin.jar 放回去,看看这个jar存在不

还有就是在classpath中加入这个路径
clip_image152

原创粉丝点击