




免费预览已结束,剩余112页可下载查看
下载本文档
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
版本 作者 参与者 起止日期 备注V1.0 罗慧 2007-11-5 V1.1 徐永远 2007-11-7 V1.2 徐永远 2007-11-8 V1.3 魏明智 2007-11-22 V2.0 魏明智 2008-3-27 1 文档描述1.1 目标和范围编制本文档的目的是为了给开发Maximo6.20应用程序提供向导。1.2 定义和缩写Abbr. DefinitionMaximo620 美国MRO公司(原PSDI公司)出品的企业资产管理产品,版本6.201.3 参考Document Name Document Title开发模式.doc 1.4 角色职责Roles Responsibilities罗慧 撰写本文档徐永远 审核修改本文档魏明智 添加丰富开发指南。2 命名规则2.1 基本准则1、 总体说来,按照Maximo的包结构,存放相应的类,将psid改为com.jxkj即可。2、 公司开发的类,统一放在com.jxkj包中。3、 应用程序业务逻辑类,请放在com.jxkj.app.包中。4、 应用程序的页面操作类,请放在com.jxkj.webclient.beans.包中。5、 工作流过程名,一般为应用程序的名字。6、 主表与子表之间的联系名,请直接使用子表的名称。2.2 类名的命名规则以下的规则,按优先级,从高到低排列,如果有冲突,请按优先级高的方式命名。1、 关于类名的命名规则,请多多熟悉Maximo本身源码类名的命名规则。2、 扩展原有的类,请不要使用相同的名字,最好加上“Jx”关键字。3、 直接从Mbo或StatefulMbo继承的类,最好使用表名作为类名。4、 直接从MboSet继承的类,最好使用表名加上“Set”作为类名。5、 远程接口的名称,最好都加上Remote。6、 字段的类名,最好以Fld开头。3 开发说明3.1 搭建开发环境3.1.1 Maximo6.2发布为开发模式Maximo6.20采用的是ear包发布到weblogic8.1中的,为了方便开发与测试,我们需要将其发布为开发模式(非产品的EAR模式)。1、 将maximo.ear解压到maximo文件夹。(怎么解压不用我说了吧!)2、 再将解压后的目录中的文件businessobjects.jar解压为businessobjects.jar文件夹。注意文件夹名要与原文件名相同。3、 同理,解压maximouiweb.war以及properties.jar4、 完毕 3.1.2 配置Eclipse集成开发环境对于Maximo6的二次开发,这里推荐使用基于eclipse的集成开发环境。1、安装Eclipse;2、安装MyEclipse,并注册(MyEclipse-Update Subscription);3、安装RMI插件? 解压net.genady.rmi_1.6.5.zip到 目录;? 拷贝rmi.jar到pluginsnet.genady.rmi_1.6.5 directory? 在命令行下运行“java Keygen”生成license;? 在菜单中选WindowPreferencesJavaRMI,填入License;? 使用RMI进行编译 4、 集成应用服务器? 点击窗口-首选项配置与 Myecplise相关的信息 ? 在 myeclipse中配置 Application Servers 相关信息 说明: ? weblogic8 配置 选择 Enable bea根目录:安装bea的目录如(c:bea) weblogic81的根目录 如(C:beaweblogic81) domain的用户名:登陆控制台的用户名 domain的密码:登陆控制台的密码 domain的路径 :如C:beauser_projectsdomainsSCMIS domain的名称:发布的domain的名称 服务的名称:如myserver IP地址和端口号:localhost:7001 安全文件:C:beaweblogic81serverlibweblogic.policy 这样,你就可以在eclipse中启动和停止服务了。 ? JDK配置:建议使用BEA带的JRE,以提高执行效率 点击ADD 增加bea提供的JRE,同时为该JRE指定参数: 指定的参数为: -ms256m -mx512m -Djava.library.path=C:/bea/weblogic81/server/bin -Dweblogic.management.discover=false -Dweblogic.ProductionModeEnabled=false ? 在 path中增加 classpath在Weblogic 8下面配置Paths,加入BEA安装路径下/weblogic81/server/lib中的webservices.jar和 weblogic.jar 两个包。如果需要其他的包,也在这里加入,建议加入 oracle 对应的驱动程序包。 这样就可以在 eclipse 中进行单步调试了,只要你在 eclipse里启动服务后,设置断点,当程序运行到断点时,就会进入 eclipse 的调试模式,同时针对表现层的程序支持热发布。针对MBO等程序可以进行单步跟踪。? 其他的配置根据大家自己的喜好进行配置。 ? 在窗口-首选项-已安装的 JRE 中调整 JRE 的缺省参数 5、 创建工程创建一个“Java Project”,加入一些必须lib,参考下图所示。其中maximouiweb .jar是手动将maximomaximouiweb.warWEB-INFclasses下的文件打包而成,其余都可以拷贝现成的。 6、 使用ant部署开发环境怎么安装ant就不用我说了吧!只提供一个build.xml文件作为模板 7、 运行跟踪 3.1.3 配置JBuilder集成开发环境 配置weblogic1、 打开Jbuider2、 选择菜单Enterprise-Configure Servers3、 配置如下信息: 参数参考:Home Directory:D:/bea8/weblogic81/serverMain Class: weblogic.ServerVM Parameters:添加 -Xms512m -Xmx924m -XX:MaxPermSize=256m ,其它保持不变。Server Paramters:Working directory:选择你发布的域。4、 配置Custom如下图: 5、 新建工程,选择project-project properties-server配置服务如下图: 6、 新建一个调试环境,project-project properties-run-new-run type选择server,其它默认即可。 配置类选择 project - project properties-path,如下图示:注意:JDK版本,一定要用Weblogic8自带的JDK,保证兼容。 3.2 第一个应用程序3.2.1 业务描述做一个单表的增、删、改、查业务,以下业务为黄龙滩实际程序。 应用设计属性 描述应用程序名 Abnormity(异动)应用程序模块名 ASSET应用程序位置 371应用程序表 Abnormity(主对象)应用程序关联表 Asset(资产):与资产表通过AssetNum字段关联,在Asset应用程序中添加显示资产异动情况的显示。资产应用中可以编辑异动情况。 Location(位置):与位置表通过Location字段关联,在Location应用程序中添加显示位置异动情况的显示。位置应用中可以编辑异动情况。说明 数据表设计.1 设备异动Abnormity 字段名 类型 列标题 说明AbnormityId Integer(12) 请假标识 唯一标识,系统自动生成,不要改。CHANGEBY UPPER(30) 更改人 = PERSON. PERSONIDCHANGEDATE DateTime 更改时间 默认为SYSDATEHISTORYFLAG YORN not null 历史标志 默认为0AbnormityNum upper(12) not null 单号 自动增长Description ALN(100) 描述 有长描述ASSETNUM Upper(30) 资产编号 =Asset.AssetNum,资产与位置必填一个LOCATION Upper(30) 位置编号 =Locations.Location,资产与位置必填一个LaunchDate Date 投运时间 SourceParam ALN(100) 原设备参数 有长描述AbnormityDate Date 异动时间 NewParam ALN(100) 异动后参数 有长描述Reason ALN(100) 异动原因 有长描述SITEID UPPER(8) 地点标识符 = SITE. SITEIDORGID UPPER(8) 组织机构 = ORGANIZATION. ORGID主列:AbnormityNum,SITEID3.2.2 开发步骤 第一步建立数据表1、 启动Maximo,转到配置,数据库配置。2、 点击新建对象。3、 输入相关信息,如下图,注意这里对象即是表名ABNOREMITY、服务输入CUSTAPP、级别选择SITE,如果不是工作流表,请不要选中主对象,存储分区,是你的分区表空间。 4、 添加字段信息,注意,新建表之后,系统会自动生成一些字段,并未在表设计中,写出来,默认即可。 5、 da 第二步建立应用程序3.3 创建域3.3.1 域的分类域即是值列表,是用于对象属性值的选择列表。Maximo6中域分ALN域、同义词域(Synonym)、数字域(Numeric)、数字范围域(Numeric Range)、表域(Table)、交叉域(Cross Over)。域的主要信息保存在MAXDOMAIN表里,字段值保存在相应的表中,其中的对应关系如下图所示: 例如:对于一个同义词域,可以看到在MAXDOMAIN表中有一条记录对应和在SYNONYMDOMAIN表中的若干条记录。MAXDOMAIN TableDOMAINID DOMAINTYPE MAXTYPE LENGTH DESCRIPTIONPOSTATUS SYNONYM UPPER 6 PO StatusSYNONYMDOMAIN TableDOMAINID MAXVALUE VALUE DESCRIPTIONPOSTATUS APPR APPR ApprovedPOSTATUS CAN CAN CanceledPOSTATUS CLOSE CLOSE ClosedPOSTATUS INPRG INPRG In ProgressPOSTATUS WAPPR WAPPR Waiting on Approval3.3.2 创建域点击转到配置域,进入如下图所示域的操作页面。 注意:同义词域在页面无法添加,只能直接在数据库中添加。添加同义词域可以参见2.3.1创建工作流状态同义词域。3.4 开发自定义应用程序3.4.1 创建模块模块指的是点击“转到”弹出的下拉列表中的各个应用模块。Maximo没有提供创建模块的页面,必须在数据库中利用sql语句在MAXMODULES表中添加。添加模块后还必须MAXMENU中添加菜单。例如:insert into MAXMODULES (MODULE, DESCRIPTION, MAXMODULESID)values (TR, 技改, maxmodulesseq.nextval);insert into MAXMENU (MENUTYPE, MODULEAPP, POSITION, SUBPOSITION, ELEMENTTYPE, KEYVALUE, HEADERDESCRIPTION, URL, VISIBLE, IMAGE, ACCESSKEY, TABDISPLAY, MAXMENUID)values (MODULE, TR, 4000, 0, MODULE, TR, null, null, 1, null, null, null, maxmenuseq.nextval);commit; 3.4.2 配置数据库 新建对象新建对象存储在maximo数据库的MAXOBJECT、MAXOBJECTCFG、MAXTABLE、MAXTABLECFG表中。注意:服务名、绑定的类名及路径是一一对应的,建议新建的主对象最好都创建自己单独的服务,服务名跟主对象名一样,这样方便每个应用的业务逻辑代码都发布在自己的服务目录下,不是主对象的对象引用现有的服务名,而不重新创建服务。服务类的创建见2.4.1开发服务类;开发出服务类后在maximo数据库的MAXSERVICE表中配置相应服务,可以使用如下的sql语句:insert into MAXSERVICE(servicename,description,classname,maxserviceid) values(TPRSERVICE,工程项目申请,com.jxkj.app.tpr.TprService,maxserviceseq.nextval);或者使用存储过程:call PAK_TOOL.CofigServiceName(TPR,工程项目申请,com.jxkj.app.tpr.TprService);MboSet类的创建见2.4.2开发MboSet类; 图:配置数据库页面 图:新建数据库对象页面 创建对象属性、索引和关系详见Maximo620数据库设计指南文档。点击“新建行”添加一个新的属性,默认会有*ID(*表示新建的对象名)、description属性(该属性具有长描述,所以还有DESCRIPTION_LONGDESCRIPTION属性);注:可以参考2.5.1对象属性、关系1) 对象属性信息存储maxattribute、maxattributecfg表中;2) 长描述是对某一属性的描述,存储在maximo数据库的maximo.LONGDESCRIPTION表中。当对象的任何一个属性有长描述时,对象具有一个HASLD属性;3) 对于有状态的mbo必须包括了status和statusdate两个属性;4) 当对象的级别为Site时,需要两个属性ORGID、SITEID;5) 需要设置某一属性为自动编号时,勾选“是否能自动编号?”,填写一个自动编号,当填写的自动编号不存在时,会弹出对话框询问是否创建新的自动编号,点击“是”创建,同时默认值填写&AUTOKEY&;自动增长值存储在AUTOKEY表中; 图:添加属性页面对象关系属性存储在maximo数据库的MAXRELATIONSHIP表中,注意添加关系时里面条件的写法,比如:tprnum = :tprnum ,前者指的是子对象中的属性,后者指的是当前对象的属性。也可使用存储过程创建联系:call PAK_TOOL.createRelation(DOCLINKS,TPR,DOCLINKS,ownertable=TPR and ownerid=:tprid,与 doclink 表相关联); 图:添加关系信息输入框 配置数据库保存上述所建的对象以及属性、索引、关系,然后关闭weblogic服务器,进入maximo安装目录下的tools/maximo目录,双击configdb.bat,配置数据库,这时maximo程序将在数据库中创建相关的表和关系。注意:每次修改对象的相关信息或添加、修改属性后都要运行configdb.bat文件配置数据库,添加或修改关系后不用运行configdb.bat。3.4.3 页面定制点击转到配置应用程序设计器,进入如下图所示应用程序设计器的页面,在该页面中进行页面的设计定制; 图:应用程序设计器页面新建应用程序必须指定模块名,指定模块名以及授权后可以在“转到“菜单中链接到自定义的应用程序。 图:创建新应用程序在应用程序设计器页面中,可以定制页面。页面定制可以采取两种方式:一是在应用程序设计器里画,通过“控制调色板”、“控制属性”、“编辑对话框”三个功能菜单来组装页面;二是先通过应用程序设计器把该APP的XML文件导出来,再在这上面改,改完后再通过应用程序设计器导入数据库。3.4.4 配置菜单和权限 如上图所示,在选择操作栏选择添加签名选项、操作菜单、工具栏菜单,添加完成后需要授权后用户才能使用指定功能。 签名选项存储在maximo数据库的SIGOPTION表中,操作菜单和工具栏菜单存储在maximo数据库的MAXMENU表中,菜单权限存储在maximo数据库的APPLICATIONAUTH表中。可以使用2.6.2通用菜单的sql语句创建签名选项、菜单和授权(注意:sql语句需要进行适当修改,添加的应用名和描述要改成自己开发应用的名称和描述);3.5 开发工作流3.5.1 创建状态表对象用于记录状态的信息的表,是实际存在于maximo数据库中的表。例如TPRSTATUS。状态表对象包含属性请参考Maximo620数据库设计指南文档。在主对象中创建与状态对象的关系。call PAK_TOOL.createRelation(TPRSTATUS,TPR,TPRSTATUS,tprnum = :tprnum and siteid=:siteid,与工程项目申请状态表相关联,用于查找指定工程项目申请的状态记录。结果集将包含一个或多个对象。);3.5.2 创建虚拟表对象虚拟表对象是maximo中的一个对象,但在数据库中不存在相应的物理表。虚拟表对象必须包含属性STATUS、STATDATE、MEMO。可以使用存储过程较方便地创建虚拟表对象。call PAK_TOOL.createCSVirtual(TPRCHANGESTATUS,工程项目申请状态更改虚拟表,TPR, TPR,com.jxkj.app.tpr.virtual.TprChangeStatusMboSet,1);3.5.3 创建工作流状态同义词域同义词域对应工作流中对象的状态;可以使用2.6.1的sql语句创建同义词域;创建后使用存储过程为主对象的STATUS字段配置域:call PAK_TOOL.ConfigDomain(TPR,STATUS,STDSTATUS);3.5.4 创建操作操作是工作流程中的辅助选项,通过设置操作可以使流程在运行的过程中完成一些指定的操作,如:设置值、改变状态、操作组、可执行的命令行、定制类、应用程序操作。设置好后的操作由系统自动执行。操作“设置值”和“改变状态”必须指定对象,而且操作“改变状态”的对象要求是继承stateful的对象即有状态的对象。在绘制工作流程时可以为流程的每一步指定需要的操作。点击转到配置工作流操作,进入配置操作的页面。 3.5.5 绘制工作流程图例描述:图例 名称 描述 开始节点 一个流程只能有一个开始节点。 停止节点 一个流程至少有一个停止节点。 任务节点 可与任务分配者交互的节点,在“任务收件箱”中显示。 条件判断节点 系统自动根据定义的条件表达式来引导流向或执行操作 手工节点 提供一个给用户进行选择的交互界面。 子流程节点 嵌套在父流程中的子流程,子流程结束后返回其父流程的下一个节点。 交互节点 可以进行两个应用之间的交互。 等待节点 正向操作 反向操作 按照业务流程绘制工作流程,配置节点、操作等设置。点击转到配置工作流工作流设计器,进入工作流设计器,在该页面中绘制工作流和配置节点、操作等设置。注意:已经激活的工作流程不能再更改,只能创建新的过程修订本 后在新的修订本中进行修改。简单示例流程: 配置节点、操作等设置:1开始和结束节点不能改变任何设置;2给任务节点分配角色、通讯模板:任务节点: ? 标题:是显示在图标下的文字;描述:是对任务节点的说明;应用程序:是该流程应用的应用程序;时限:是规定该任务需完成的时间长度,超过该时限,则该任务回分配给“升级角色”。? 任务分配:为该任务分配角色;? 为角色指定表达式:角色下的表达式可以限制只有在满足该表达式的情况下,任务才会分配到该角色,即同一个任务可以表达式来确定分配对象。该选项对控制转发很有用。? 执行接受操作,两个选项:接受任务的所有人都接受才算任务接受和只要任何一个人接受就算该任务接受。? 任务节点可以最多有两个输出操作:一个正向操作和一个反向操作。正向操作对应接受该任务,反向操作对应拒绝该任务。任务节点的输入操作可以有多个。3条件判断节点配置:条件判断节点: ? 标题:是显示在图标下的文字;描述:是对条件节点的说明; ? 表达式:根据该条件表达式满足与否来控制流程流向。表达式可以根据表达式构建器 来取对象或关系的值作为变量,变量使用的规则是前加“:”。? 条件判断节点可以最多有两个输出操作:一个正向操作和一个反向操作。正向操作对应满足该表达式的条件,反向操作对应不满足该表达式的条件。条件判断节点的输入操作可以有多个。4手工节点配置:手工节点: ? 标题:是显示在图标下的文字;描述:是对节点的说明; ? 操作:是根据其输出的操作自动维护;? 手工节点可以有多个正向输出操作,不能有反向输出操作。手工节点的输入操作可以有多个。5子流程节点配置:子流程节点: ? 标题:是显示在图标下的文字;描述:是对节点的说明; ? 子过程:是具有和父流程相同对象的流程;? 子流程节点可以最多有两个输出操作,一个正向输出操作和一个反向输出操作。子流程节点的输入操作可以有多个。6交互节点配置:交互节点: ? 标题:是显示在图标下的文字;描述:是对节点的说明; ? 应用程序:是该交互节点启用的应用程序,在一个应用中可以发起另外一个应用,其设置就在此处设置;? 收件人地址标题:在转向应用程序时,弹出的对话框的标题。? 收件人地址正文:在转向应用程序时,弹出的对话框的内容。交互节点和条件判断节点进行组合使用,可以达到在某个任务点进行验证信息的目的。7操作(连接线)配置:操作: ? 操作:选取2.3.4节创建的操作;描述:是对该连接线的说明; 表达式:定制执行操作需满足的条件。3.5.6 验证、启用和激活工作流 绘制好后的工作流程必须经过下述过程:1.验证过程 :系统验证定制的过程是否符合设计规范。2.启用过程 :使过程能够使用。要使过程处于非启用状态,需先使过程处于非激活状态。如果有父过程引用该过程,则先需使其父过程处于非启用状态。3.激活过程 :使过程处于活动状态。4. 添加工作流到应用程序:在应用程序的操作菜单中添加工作流菜单。在此操作后,应用程序的对象会添加如下关系:关系名 Where子句 子对象 备注:WFASSIGNMENT ownertable = TPR and ownerid = :tprid and assignstatus in (select value from synonymdomain where domainid=WFASGNSTATUS and maxvalue=ACTIVE) WFASSIGNMENT 与此 TPR 上的有效任务分配的关系。许多成员集的 (ownertable = TPR and ownerid = :tprid and assignstatus in (select value from synonymdomain where domainid=WFASGNSTATUS and maxvalue=ACTIVE) 为零。WFTOOLBAR 空 WFTOOLBAR 获取管理工具栏按钮的虚拟布景。WFTRANSACTION ownertable = TPR and ownerid = :tprid WFTRANSACTION 与此 TPR 上工作流交易的关系。许多成员集的 (ownertable = TPR and ownerid = :tprid) 为零。WORKFLOWMAP 空 WORKFLOWMAP 备注:获取虚拟布景以显示过程图。3.5.7 更改状态的功能设计更改工作流状态是指在应用程序中提供手动更改状态的功能。具体步骤为:1) 添加签名选项STATUS;insert into SIGOPTION (APP, OPTIONNAME, DESCRIPTION, ESIGENABLED, VISIBLE, ALSOGRANTS, ALSOREVOKES, PREREQUISITE, SIGOPTIONID, LANGCODE, HASLD)values (TPR, STATUS, 更改状态, 0, 1, null, null, SAVE, SIGOPTIONSEQ.NEXTVAL, ZH, 0);2) 添加菜单;insert into MAXMENU (MENUTYPE, MODULEAPP, POSITION, SUBPOSITION, ELEMENTTYPE, KEYVALUE, HEADERDESCRIPTION, URL, VISIBLE, IMAGE, ACCESSKEY, TABDISPLAY, MAXMENUID)values (APPMENU, TPR, 9, 1, OPTION, STATUS, 更改状态, null, 1, nav_icon_changestatus.gif, CTRL+ALT+A, ALL, MAXMENUSEQ.NEXTVAL);insert into MAXMENU (MENUTYPE, MODULEAPP, POSITION, SUBPOSITION, ELEMENTTYPE, KEYVALUE, HEADERDESCRIPTION, URL, VISIBLE, IMAGE, ACCESSKEY, TABDISPLAY, MAXMENUID)values (APPTOOL, TPR, 30, 0, SEP, AT30, null, null, 1, null, null, null, MAXMENUSEQ.NEXTVAL);insert into MAXMENU (MENUTYPE, MODULEAPP, POSITION, SUBPOSITION, ELEMENTTYPE, KEYVALUE, HEADERDESCRIPTION, URL, VISIBLE, IMAGE, ACCESSKEY, TABDISPLAY, MAXMENUID)values (APPTOOL, TPR, 32, 0, OPTION, STATUS, null, null, 1, nav_icon_changestatus.gif, CTRL+ALT+A, ALL, MAXMENUSEQ.NEXTVAL);commit;3) 添加弹出对话框; 导出的XML文件: 4) 增加主对象关系; call PAK_TOOL.createRelation(TPRCHANGESTATUS,TPR,TPRCHANGESTATUS,与非固定 PRChangeStatus 表相关联。(非固定对象没有 where 子句)。结果集将包含零个或多个对象。注:TPRChangeStatus 是帮助将对话框与对象绑定在一起的非固定 MBO。);call PAK_TOOL.createRelation(STATUSDESC,TPR,SYNONYMDOMAIN,domainid=TPRSTATUS and value=:status,与 synonymdomain 表相关联,用于查找状态的描述,它将包含一个对象。);5) 授权;call PAK_TOOL.MenuPriv(TPR,MAXADMIN);3.6 程序开发3.6.1 开发服务类参考2.5.2 服务类源码? 定义Maximo把功能类似的一系列的应用归为一个服务,并由统一的类来管理。一个应用程序的所有对象都对应同一个服务。? 程序实现1. 创建服务接口服务接口必须继承psdi.server.AppServiceRemote接口;2. 创建服务类服务类必须继承psdi.server.AppService,同时实现创建的服务接口;并且定义如TprService(MXServer mxServer)的带参的构造函数。注意目前service类中还不写逻辑,只继承超类,由超类来完成其全部实现。创建服务类的目的是方便程序的扩展。3.6.2 开发MboSet类参考2.5.3 MboSet类源码? 定义MboSet是Maximo中持久层的核心类,其核心的超类psdi.mbo.MboSet。应用程序对象与MboSet类直接关联,在创建对象时必须指定与对象关联的MboSet类。MboSet类主要用来返回Mbo类的实例。? 程序实现MboSet类必须继承psdi.mbo.MboSet类,实现psdi.mbo.MboSetRemote接口;1) 必须定义如TprMboSet(MboServerInterface arg0)的构造方法;2) 实现getMboInstance(MboSet arg0)方法,在该方法中返回Mbo类的实例。3.6.3 开发Mbo类参考2.5.4 Mbo源码? 定义Mbo是Maximo中持久层的核心类,用来处理与数据库的所有操作。其核心的超类是psdi.mbo.Mbo。Mbo类又分为有状态的Mbo和无状态的Mbo。无状态的Mbo的例子为psdi.mbo.custapp.CustomMbo和psdi.mbo.custapp.CustomMboSet,不考虑应用中状态的变化,所有新建的对象都会使用这个Mbo。而一个有状态的Mbo,如工单,是会发生自己的变化的,系统中没有提供新建一个有状态的Mbo的功能,目前必须自定义。? 程序实现以下介绍有状态Mbo类的实现。有状态Mbo类必须继承psdi.mbo.StatefulMbo类,实现psdi.mbo.StatefulMboRemote接口。1) 必须定义如TprMbo(MboSet arg0)的构造方法;2) 实现getStatusHandler()方法,在该方法中返回自定义StatusHandler类的实例;3) 实现getStatusHistory()方法,在该方法中返回主对象与关系对象的关系名称;4) 实现getStatusListName()方法,在该方法中返回一个定义好的状态synonym域的名称。如:WOSTATUS;3.6.4 开发StatusHandler类参考2.5.5 StatusHandler源码? 定义该类用于工作流中更改状态。? 程序实现StatusHandler必须继承psdi.mbo.StatusHandler类。1)必须定义如TprStatusHandler(StatefulMbo sm)的构造方法并覆写如下两个方法:checkStatusChangeAuthorization(String s),changeStatus(String s, String s1, Date date, String s2):用来做状
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 甲方验收合格协议书范本
- 矿泉水客户销售合同范本
- 维修保养合同协议书范本
- 高端会所会员合同协议书
- 驻地企业抗疫协议书模板
- 麻蜥蜴养殖采购合同范本
- 银行与孵化器合作协议书
- 私人租地合同协议书范本
- 机动车抵押担保合同范本
- 电力数据采集协议书模板
- 血管活性药物的应用及护理
- 康复医学经颅磁刺激技术
- 小红书618【服饰潮流行业】种草全攻略
- 女性导尿术方法步骤
- 农机安全事故典型案例分析
- 花店员工劳务合同协议
- 2025年人教版小学五年级下册奥林匹克数学竞赛试卷(附参考答案)
- DB22-T3309-2021-油莎豆生产技术规程-吉林省
- 2024年宁夏中卫公开招聘社区工作者考试试题答案解析
- 2025年国家心力衰竭诊断和治疗指南(完整版)
- 2025-2030中国煤炭机械行业发展分析及投资前景预测研究报告
评论
0/150
提交评论