Maxio71应用二次开发指南.docx

上传人:b****2 文档编号:24414064 上传时间:2023-05-27 格式:DOCX 页数:51 大小:515.56KB
下载 相关 举报
Maxio71应用二次开发指南.docx_第1页
第1页 / 共51页
Maxio71应用二次开发指南.docx_第2页
第2页 / 共51页
Maxio71应用二次开发指南.docx_第3页
第3页 / 共51页
Maxio71应用二次开发指南.docx_第4页
第4页 / 共51页
Maxio71应用二次开发指南.docx_第5页
第5页 / 共51页
点击查看更多>>
下载资源
资源描述

Maxio71应用二次开发指南.docx

《Maxio71应用二次开发指南.docx》由会员分享,可在线阅读,更多相关《Maxio71应用二次开发指南.docx(51页珍藏版)》请在冰豆网上搜索。

Maxio71应用二次开发指南.docx

Maxio71应用二次开发指南

Maxio7.1应用二次开发指南

1、文档描述

本文档是根据我个人的经验和网上收索的资料整理出来,哈哈~~

2、命名规则

2.1基本准则

(1)总体说来,按照Maximo的包结构,存放相应的类,将psid改为power即可。

(2)公司开发的类,统一放在power包中。

(3)应用程序业务逻辑类,请放在power.app包中。

(4)应用程序的页面操作类,请放在power.webclient.beans.包中。

(5)工作流过程名,一般为应用程序的名字。

(6)主表与子表之间的联系名,请直接使用子表的名称。

2.2类名的命名规则

以下的规则,按优先级,从高到低排列,如果有冲突,请按优先级高的方式命名。

(1)关于类名的命名规则,请多多熟悉Maximo本身源码类名的命名规则。

(2)扩展原有的类,请不要使用相同的名字,最好加上“CU”关键字。

(3)直接从Mbo或StatefulMbo继承的类,最好使用表名作为类名。

(4)直接从MboSet继承的类,最好使用表名加上“Set”作为类名。

(5)远程接口的名称,最好都加上Remote。

(6)字段的类名,最好以Fld开头。

3、开发说明

3.1搭建开发环境

········

3.2配置Eclipse集成开发环境

········

4第一个应用程序

4.1业务描述

做一个单表的增、删、改、查业务,以下业务为开封电厂实际程序。

4.2应用设计

应用程序名:

CUTASK(点检任务)

应用程序模块名:

CUTASK

应用程序表:

CUROUTES_TASK(主对象)

应用程序关联表:

4.3数据表设计

主列:

CUROUTES_TASKID

4.4开发步骤

4.4.1第一步建立数据表

(1)启动Maximo,转到配置,数据库配置。

(2)点击新建对象。

(3)输入相关信息,如下图:

注意这里对象即是表名CUROUTES_TASK、服务输入CUSTAPP、级别选择SITE,如果不是工作流表,请不要选中主对象,存储分区,是你的分区表空间。

注意:

我们一般是先创建数据库对象,类名,先用系统默认的,等建立应用程序后再加上去。

selectt.classname,t.*frommaxobjecttwheret.objectname='CUROUTES_TASK';

selectt.classname,t.*frommaxobjectcfgtwhereobjectname='CUROUTES_TASK';

将写的类(包括完整包名)写到classname字段。

(4)添加字段信息,注意,新建表之后,系统会自动生成一些字段(如:

SITEID和ORGID),并未在表设计中,写出来,默认即可。

注意:

添加对象属性的时候,可能会涉及到域、类、等同对象等。

关联域、关联字段类请参见以前的另一篇文档。

(5)建立关系

根据PDM和需要用到的业务规则建立相应的关系。

4.4.2第二步建立应用程序

见劳如力写的文档。

4.5创建域

4.5.1域的分类

域即是值列表,是用于对象属性值的选择列表(相当于基础数据类似)。

Maximo6中域分ALN域、同义词域(Synonym)、数字域(Numeric)、数字范围域(NumericRange)、表域(Table)、交叉域(CrossOver)。

域的主要信息保存在MAXDOMAIN表里,字段值保存在相应的表中,其中的对应关系如下图所示:

MAXDOMAIN表:

(类似于基础数据中的基础大类)

ALNDOMAIN表:

(类似于基础数据中的基础细类)

例如:

对于一个字符域,可以看到在MAXDOMAIN表中有一条记录对应和在ALNMDOMAIN表中的若干条记录。

(见上图)

他们之间的关系:

与ALNValue相关联(alndomainvalue.domainid=maxdomain.domainidandmaxdomain.domaintypein(selectvaluelist.valuefromvaluelistwherevaluelist.listname='DOMTYPE'andvaluelist.maxvalue='ALN'))。

如果这是ALN域,则结果集将包含一个或多个对象。

4.5.2创建域

点击转到—>配置—>域,进入如下图所示域的操作页面。

注意:

同义词域在页面无法添加,只能直接在数据库中添加。

同义词域对应工作流中对象的状态;

创建状态同义词域的sql语句

(1)在MAXDOMAIN表中添加记录:

insertintoMAXDOMAIN(DOMAINID,DESCRIPTION,DOMAINTYPE,MAXTYPE,LENGTH,SCALE,MAXDOMAINID)

values('STDSTATUS','标准工作流状态','SYNONYM','UPPER',10,0,maxdomainseq.nextval);

(2)在SYNONYMDOMAIN表中添加记录:

同义词域的每一个状态在SYNONYMDOMAIN表中对应一条记录。

insertintoSYNONYMDOMAIN(DOMAINID,MAXVALUE,VALUE,DESCRIPTION,DEFAULTS,SITEID,ORGID,SYNONYMDOMAINID)

values('STDSTATUS','APPR','APPR','已批准',1,null,null,synonymdomainseq.nextval);

insertintoSYNONYMDOMAIN(DOMAINID,MAXVALUE,VALUE,DESCRIPTION,DEFAULTS,SITEID,ORGID,SYNONYMDOMAINID)

values('STDSTATUS','CAN','CAN','已取消',1,null,null,synonymdomainseq.nextval);

创建后使用存储过程为主对象的STATUS字段配置域

4.6开发自定义应用程序

4.6.1创建模块

模块指的是点击“转到”弹出的下拉列表中的各个应用模块。

Maximo没有提供创建模块的页面,必须在数据库中利用sql语句在MAXMODULES表中添加。

添加模块后还必须MAXMENU中添加菜单。

在MAXMENU和maxmodules表中。

MAXMENU中elementtype='MODULE'的为主菜单,maxmodules表中为所有的主菜单列表。

elementtype='HEADER'为二级菜单,elementtype='APP'的为应用程序菜单。

MAXMENU和maxmodules表的关系:

MAXMENU.keyvalue=maxmodules.module。

例如:

insertintomaxmodules(MODULE,DESCRIPTION,MAXMODULESID,ROWSTAMP)

values('PTR','点检定修',234,maxmodulesseq.nextval);

insertintomaxmenu(MENUTYPE,MODULEAPP,POSITION,SUBPOSITION,ELEMENTTYPE,KEYVALUE,HEADERDESCRIPTION,URL,VISIBLE,IMAGE,ACCESSKEY,TABDISPLAY,MAXMENUID,ROWSTAMP)

values('MODULE','PTR',900000,0,'MODULE','PTR','点检定修管理','',1,'nav_icon_usercust.gif','','',19528,maxmenuseq.nextval);

commit;

4.7配置数据库

4.7.1新建对象

新建对象存储在maximo数据库的MAXOBJECT、MAXOBJECTCFG、MAXTABLE、MAXTABLECFG表中。

注意:

服务名、绑定的类名及路径是一一对应的,建议新建的主对象最好都创建自己单独的服务,服务名跟主对象名一样,这样方便每个应用的业务逻辑代码都发布在自己的服务目录下,不是主对象的对象引用现有的服务名,而不重新创建服务。

开发出服务类后在maximo数据库的MAXSERVICE表中配置相应服务,可以使用如下的sql语句:

insertintoMAXSERVICE

(servicename,description,classname,maxserviceid)values

('TPRSERVICE','工程项目申请,'com.jxkj.app.tpr.TprService',maxserviceseq.nextval);

服务类(MAXSERVICE)的表结构如下:

新建数据库对象页面、配置数据库页面的主界面如下图:

4.7.2创建对象属性、索引和关系

点击“新建行”添加一个新的属性,默认会有***ID(***表示新建的对象名)、description属性(该属性具有长描述,所以还有DESCRIPTION_LONGDESCRIPTION属性);

(0)是否主对象(有工流需要钩上)、服务名、表所属级别、主列等。

(0)在界面上创建好对象还没执行cofigdb之前,maximo会往maxtablecfg、maxobjectcfg、maxattributecfg这些表插入记录,还没生成往oracle生成相应的物理表,执行完configdb后,会在数据库中生成相应的物理表,并往maxtable、maxobject、maxattribute这些maximo系统表插入记录,如果configdb时出现问题,可以查看这些maximo系统表

(0)创建虚拟的状态表时,级别为SYSTEM,固定和添加Rowstamp不用√,唯一列跟语言列都不用添,因为虚拟表在数据库中不存在相应的物理表,设计界面如下

(1)对象属性信息存储maxattribute、maxattributecfg表中;

(2)长描述是对某一属性的描述,存储在maximo数据库的maximo.LONGDESCRIPTION表中。

当对象的任何一个属性有长描述时,对象具有一个HASLD属性;

(3)对于有状态的mbo必须包括了status和statusdate两个属性;

(4)当对象的级别为Site时,需要两个属性ORGID、SITEID;

(5)需要设置某一属性为自动编号时,勾选“是否能自动编号?

”,填写一个自动编号,当填写的自动编号不存在时,会弹出对话框询问是否创建新的自动编号,点击“是”创建,同时默认值填写&AUTOKEY&;自动增长值存储在AUTOKEY表中;

添加属性页面如下图:

注意:

添加对象属性的时候,可能会涉及到域、类、等同对象等。

关联域、关联字段类请参见以前的另一篇文档。

对象关系属性存储在maximo数据库的MAXRELATIONSHIP表中,注意添加关系时里面条件的写法,比如:

tprnum=:

tprnum,前者指的是子对象中的属性,后者指的是当前对象的属性。

添加关系信息输入框如下图:

4.7.3通过CONFIGDB配置数据库

保存上述所建的对象以及属性、索引、关系,然后关闭weblogic服务器,进入maximo安装目录下的tools/maximo目录,双击configdb.bat,配置数据库,这时maximo程序将在数据库中创建相关的表和关系。

创建完数据库表关闭weblogic,等待大概1分钟,转到\maximo\tools\maximo目录中,执行configdb.bat命令,命令的默认参数将以,\Maximo\applications\maximo\properties\maximo.properties中的参数为准。

注意:

每次修改对象的相关信息或添加、修改属性后都要运行configdb.bat文件配置数据库,添加或修改关系后不用运行configdb.bat。

4.8页面定制

点击转到—>配置—>应用程序设计器,进入如下图所示应用程序设计器的页面,在该页面中进行页面的设计定制;应用程序设计器页面如下:

新建应用程序必须指定模块名,指定模块名以及授权后可以在“转到“菜单中链接到自定义的应用程序。

创建新应用程序如下图:

开发人员通过‘转到→配置→应用程序设计器’创建应用,在无特别说明的前提下,默认创建为高级应用程序(电源应用程序)。

在应用程序设计器页面中,可以定制页面。

页面定制可以采取两种方式:

一是在应用程序设计器里画,通过“控制调色板”、“控制属性”、“编辑对话框”三个功能菜单来组装页面;

二是先通过应用程序设计器把该APP的XML文件导出来,再在这上面改,改完后再通过应用程序设计器导入数据库。

(对系统熟练后,再使用这种方法)

(该节的详细步骤参考劳如力写的文档)

4.8.1配置菜单和权限

‘转到→权限组→查找并点击“MAXADMIN”组→应用程序→查找到相应的应用程序并为该权限组赋予相应的权限,一般是所有都打上钩,即赋予所有权限。

配置完权限,退出maximo重新登录即可

如上图所示,在选择操作栏选择添加签名选项、操作菜单、工具栏菜单,添加完成后需要授权后用户才能使用指定功能。

签名选项存储在maximo数据库的SIGOPTION表中,操作菜单和工具栏菜单存储在maximo数据库的MAXMENU表中,菜单权限存储在maximo数据库的APPLICATIONAUTH表中。

APPLICATIONAUTH的表结构如下:

可以使用sql语句创建签名选项、菜单和授权。

签名选项(sigoption),MAXIMO中所有的应用程序的所有操作都保存在签名选项这张表中。

以点检任务为例,查看该程序所具有的操作:

签名选项的表结构如下:

select*fromsigoptiontwheret.app='CUTASK';

菜单权限(APPLICATIONAUTH),上述点检任务的权限分配(由权限组和签名选项确定的权限)如下:

添加签名选项和权限分配时如何进行的?

有两种方式创建应用程序菜单和签名选项:

(1)在‘转到→配置→应用程序设计器→选择操作’中可以进行添加/修改签名选项、添加/修改选择操作菜单、添加/修改工具栏菜单、添加/修改搜索菜单

(2)直接通过sql语句,如下所示创建(程序不是自己的,主要看懂业务逻辑)

----应用程序消息

insertintoMaxmessages(msgkey,msggroup,value,title,displaymethod,options,buttontext,maxmessagesid)Values('StatusChangeSuccess','receiption','接待方案{0}状态被更改为{1}。

',null,'STATUS',2,null,MaxmessagesSEQ.nextval);

insertintoMaxmessages(msgkey,msggroup,value,title,displaymethod,options,buttontext,maxmessagesid)Values('StatusChangeFailure','receiption','无法将采购申请{0}状态更改为{1}。

',null,'MSGBOX',2,null,MaxmessagesSEQ.nextval);

insertintoMaxmessages(msgkey,msggroup,value,title,displaymethod,options,buttontext,maxmessagesid)Values('editHistErr','receiption','仅当处于“关闭”状态时,才能执行“编辑历史”操作。

',null,'MSGBOX',2,null,MaxmessagesSEQ.nextval);

insertintoMaxmessages(msgkey,msggroup,value,title,displaymethod,options,buttontext,maxmessagesid)Values('cannotdeletereceiption','receiption','状态改变后不能删除',null,'MSGBOX',2,null,MaxmessagesSEQ.nextval);

insertintoMaxmessages(msgkey,msggroup,value,title,displaymethod,options,buttontext,maxmessagesid)Values('cannotdeleteline','receiption','如果处于“等待批准”状态,则只能删除行',null,'MSGBOX',2,null,MaxmessagesSEQ.nextval);

----创建签名选项

insertintoSIGOPTION(APP,OPTIONNAME,DESCRIPTION,ESIGENABLED,VISIBLE,ALSOGRANTS,ALSOREVOKES,PREREQUISITE,SIGOPTIONID,LANGCODE,HASLD)values('RECEIPTION','BOOKMARK','添加到书签','0','0','','','READ',SIGOPTIONSEQ.NEXTVAL,'ZH','0');

insertintoSIGOPTION(APP,OPTIONNAME,DESCRIPTION,ESIGENABLED,VISIBLE,ALSOGRANTS,ALSOREVOKES,PREREQUISITE,SIGOPTIONID,LANGCODE,HASLD)values('RECEIPTION','INSERT','新建接待方案记录','0','1','SAVE','DUPLICATE','READ',SIGOPTIONSEQ.NEXTVAL,'ZH','0');

insertintoSIGOPTION(APP,OPTIONNAME,DESCRIPTION,ESIGENABLED,VISIBLE,ALSOGRANTS,ALSOREVOKES,PREREQUISITE,SIGOPTIONID,LANGCODE,HASLD)values('RECEIPTION','NEXT','下一个接待方案','0','1','','','READ',SIGOPTIONSEQ.NEXTVAL,'ZH','0');

insertintoSIGOPTION(APP,OPTIONNAME,DESCRIPTION,ESIGENABLED,VISIBLE,ALSOGRANTS,ALSOREVOKES,PREREQUISITE,SIGOPTIONID,LANGCODE,HASLD)values('RECEIPTION','PREVIOUS','上一个接待方案','0','1','','','READ',SIGOPTIONSEQ.NEXTVAL,'ZH','0');

insertintoSIGOPTION(APP,OPTIONNAME,DESCRIPTION,ESIGENABLED,VISIBLE,ALSOGRANTS,ALSOREVOKES,PREREQUISITE,SIGOPTIONID,LANGCODE,HASLD)values('RECEIPTION','SAVE','保存记录','0','1','','INSERT,DUPLICATE,FIELDDEFS','READ',SIGOPTIONSEQ.NEXTVAL,'ZH','0');

----创建应用程序菜单

insertintoMAXMENU(MENUTYPE,MODULEAPP,POSITION,SUBPOSITION,ELEMENTTYPE,KEYVALUE,HEADERDESCRIPTION,URL,VISIBLE,IMAGE,ACCESSKEY,TABDISPLAY,MAXMENUID)values('APPMENU','RECEIPTION','85','0','HEADER','AM85','附件库/文件夹','','1','','','ALL',MAXMENUSEQ.NEXTVAL);

insertintoMAXMENU(MENUTYPE,MODULEAPP,POSITION,SUBPOSITION,ELEMENTTYPE,KEYVALUE,HEADERDESCRIPTION,URL,VISIBLE,IMAGE,ACCESSKEY,TABDISPLAY,MAXMENUID)values('APPMENU','RECEIPTION','85','10','OPTION','MANAGELIB','','','1','','','ALL',MAXMENUSEQ.NEXTVAL);

4.9开发工作流

4.9.1创建状态表对象

用于记录状态的信息的表,是实际存在于maximo数据库中的表。

例如TPRSTATUS。

在主对象中创建与状态对象的关系。

callPAK_TOOL.createRelation('TPRSTATUS','TPR','TPRSTATUS','tprnum=:

tprnumandsiteid=:

siteid','与工程项目申请状态表相关联,用于查找指定工程项目申请的状态记录。

结果集将包含一个或多个对象。

');

4.9.2创建虚拟表对象

虚拟表对象是maximo中的一个对象,但在数据库中不存在相应的物理表。

虚拟表对象必须包含属性STATUS、STATDATE、MEMO。

可以使用存储过程较方便地创建虚拟表对象。

callPAK_TOOL.createCSVirtual('TPRCHANGESTATUS','工程项目申请状态更改虚拟表','TPR','TPR','com.jxkj.app.tpr.virtual.TprChangeStatusMboSet',1);

4.9.3创建工作流状态同义词域

同义词域对应工作流中对象的状态;

创建后使用存储过程为主对象的STATUS字段配置域:

callPAK_TOOL.ConfigDomain('TPR','STATUS','STDSTATUS');

4.9.4创建操作

操作是工作流程中的辅助选项,通过设置操作可以使流程在运行的过程中完成一些指定的操作,如:

设置值、改变状态、操作组、可执行的命令行、定制类、应用程序操作。

设置好后的操作由系统自动执行。

操作“设置值”和“改变状态”必须指定对象,而且操作“改变状态”的对象要求是继承stateful的对象即有状态的对象。

在绘制工作流程时可以为流程的每一步指定需要的操作。

点击转到—>配置—>工作流—>操作,进入配置操作的页面。

4.9.5绘制工作流程

图例描述:

开始节点一个流程只能有一个开始节点。

停止节点一个流程至少有一个停止节

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 教学研究 > 教学计划

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1