
Maximo经验分享(第一部分).doc
10页1. Maximo 相关对象Maximo 对象一般由 MBO,MBORemote, MBOSet,MBOSetRemote 组成 Maximo表单级别的代码参考 psdi.app.ticket.Incident表单中的 Field 控制由单独的类来实现,可以参考 psdi.app.ticket.FldTicketID在对象代码扩展之后,需要在后台 maxobject 表单中调整该 object 对应的 classname,调整为开发的 MboSet对于 appBean,扩展代码之后,需要导出该 object 的 xml,并替换该对象相应的classname在编译后如果是 MBO 对象需要调用 RMI 程序,rmic –d . psdi.app.test.Test生成 stub 文件2. 关于 SigOptionSigOption 在 ApplicatoinDesign 工具中添加修改删除如果需要扩展功能,那么需要在对象的 Class 中实现相应的功能,需要有对应的方法3. 关于 Edit Text 中与字段的绑定1) 与本表单字段绑定需要选择本表单的对象绑定,并选择相应的 Database 字段2) 与 Dialog 中的字段绑定如果与 Dialog 中字段绑定,那么需要在 DataSourceID 中设置 MAINRECORD4. Maximo 安装1) 机器名不能有下划线_,不然会影响 WebSphere 中 Jms 的使用。
2) 中文版选择字符集 ALN32-Unicode3) 把数据库的 nsl_language 那个参数由 byte 改为 char4) 调整 open_cursor 数量等 Oracle 参数,参见安装文档5) 调整 WebSphere 参数Add to the the Generic JVM Args field in:Application Server->->Java and Process Management->ProcessDefinition->JVM:-Dsun.rmi.dgc.ackTimeout=100000 -D.preferIPv4Stack=true5. Maximo 初始化配置1) 配置 Currency Code (财务->货币代码)2) 配置 Exchange Rate (财务->汇率)3) 配置 GL Account (配置->数据库配置->总分类帐科目配置),写入 GLConfigure 对象4) 配置 Chart of Account (财务->科目表)6. 权限控制1) Security Group对应后台数据库表a) MAXGROUPb) SITEAUTHc) APPLICATIONAUTHd) GLAUTHe) LABORAUTHf) LOCAUTHg) GROUPRESTRICTIONh) GROUPUSER2) MAXUSER对应后台数据库表a) MAXUSERb) PERSONc) PHONEd) EMAILe) GROUPUSERf) USERPURGLg) GRPREASSIGNAUTH3) Start Centera) 用 Maxadmin 用户登录系统,建议不要为 Maxadmin 用户配置 StartCenterb) Maxadmin 用户可以添加,修改,删除 StartCenter 模板c) 在 KPI Manager 中定义 KPI 条件d) 在 WorkView 里定义 ResultSet 的查询条件7. MultiSite 功能1) 创建一个 Organization2) 然后选择这个 Organization,并在 Select Action 中定义不同 Option 工单的类型,还有定义一些规则。
各工单的单号规则8. 对于权限组中加入用户的授权控制1) 需要在 User 中选中管理员,并在 Select Action 中选择“授权组重新分配”操作,并加入相关的组9. Database Configuration1) 千万不要直接去删除 View 里面的字段,系统会崩溃先把 Table 里的字段删除,config db,然后再加关注以下表格:MaxviewcolumncfgMaxviewcolumnMaxobjectMaxobjectcfgMaxattributeMaxattributecfg2) 配置项自动编号需要在 Database Configuration 中选择表单中需要自动编号的字段,选择自动编号选项,并选择一个自动编号名称然后在默认值里填写“&AUTOKEY&”10. 数据库导入导出问题在数据库导入后,如果报 RowStamp 错误,需要检查数据库的 Trigger 是不是编译错误,如果错误需要重新编译 Trigger,比如说 TICKET_TConfigDB 有时候也会报这个错误11. 关于 DocLinks Application 配置1) 建立 Doclink 文件路径:D:\DOCLINKSD:\DOCLINKS\attachmentsD:\DOCLINKS\defaultD:\DOCLINKS\diagramsD:\DOCLINKS\imagesD:\DOCLINKS\WEB-INF并将 maximo\deployment\web.xml copy 到 D:\DOCLINKS\WEB-INF 下在 weblogic 下发布 doclinks ,详情请参照文档。
注意:DOCLINKS 及下面的自文件夹 全设成共享,把读写权限放开2) 修改 doclink.properties包括以下内容:mxe.doclink.maxfilesize = 10mxe.doclink.doctypes.defpath = D:\\DOCLINKS\\defaultD:\\DOCLINKS = http://134.127.17.155:7001/doclinks3) 登陆到 maximo,在事件应用的 selectaction menu 中选择 附件库/文件夹->管理文件夹,配置文件夹路径例如:文档文件夹 描述 默认文件路径Attachments 附件 \DOCLINKS\attachments注意:大小写要与实际文件夹一致12. 关于 Table Domain CrossOver Domain1) 在数据库对应字段里面绑 Table Domain 2) 新建一个 Table Domain 里面对应你要去查找的对象的字段 3) 写一段 xml 并放到 lookup.xml 中 4) 在 application designer 里面吧这个对应的 lookup 的名字填到 lookup 那里5) 往 maxlookupmap 那个表里面添加一条记录insert into maxlookupmap(source,target,lookupattr,targetattr,sourcekey,seqnum,allownull,maxlookupmapid) values ('MEP_COMP','ASSET','VENDOR_MEP','VENDOR_MEP','COMPNAME_MEP',2,1,maxlookupmapseq.nextval)source:源表target:目标表lookupattr: lookup 绑的字段targetattr: 目标字段sourcekey: 源表单字段insert into maxlookupmap()13.Java 开发1) 权限控制。
一般对于 Mbo 在 Init()方法中加入权限控制代码框架参考巨人项目的事件类MEPIncident对于 AppBean 在 ROUTEWF()方法加入权限控制代码框架参考巨人项目的 AppBean类 TicketAppBean2) 关于在其他表单查找信息两种方式,一种方式是通过 MXSERVER 提供的函数进行查找另一种方式是通过本表的 Relationship 来向其他表单查找信息比方说在 Email 表单查找当前人员的 Email 地址String owner = getString("owner");//方式一,通过查找PERSON表,找到某条person的记录MboSetRemote mboPersonSet = MXServer.getMXServer().getMboSet("PERSON", getUserInfo());mboPersonSet.setWhere("PERSONID = '" + owner + "'");MboRemote person = mboPersonSet.getMbo(0);mboPersonSet.close();//方式二,通过查找person对象关联的Relationship “EMAIL”查找MboSetRemote emailSet = person.getMboSet("EMAIL");MboRemote email = emailSet.getMbo(0);emailSet.close();String emailAddress = email.getString("EMAILADDRESS");3) 关于 workflow 的 Custom Class需要新建 Class,并实现 ActionCustomClass 接口,然后把类路径配置到 Action 中public class MEPCloseAction implements ActionCustomClass{public MEPCloseAction(){super();}public void applyCustomAction(MboRemote mbo, Object[] params)throws MXException, RemoteException{mbo.setValue("CLOSEDATE_MEP",new Date(),MboConstants.NOACCESSCHECK | MboConstants.NOVALIDATION_AND_NOACTION);}}4) 关于对于外部表单字段的权限控制比方说在事件表单中分类是引用外部表单的字段,对于分类操作参考下列代码:if (getString("classstructureid").equals("")|| (getString("classstructureid") == null)) {}else{String classstructureid = getString("CLASSSTRUCTUREID");MboSetRemote mboSet = this.getMboSet("CLASSSTRUCTURE");mboSet.setWhere("CLASSSTRUCTUREID = '"+classstructureid+"'");MboRemote mbo = mboSet.getMbo(0);mbo.setFieldFlag("HIERARCHYPATH", READONLY, true);mboSet.close();}5) 关于邮件发送如果邮件发送通过 Workflow 来实现的话,那么用户需要点击两次 Workflow 按钮,才能发送邮件,这样操作不便。
需要通过 Maximo 自带的 API 发送邮件,解决这个问题MXServer.sendEMail(emailAddress, "MaxAdmin@",subject, message);6) 关于邮件中的需要含带工单的链接,客户直接在邮件里点击链接,就可以访问某张工单比方说事件单的链接"http://134.127.17.157/maximo/ui/maximo.jsp?event=loadapp&value=incident&un。
