基于TFM2平台体系管理项目工作流模块开发.doc_第1页
基于TFM2平台体系管理项目工作流模块开发.doc_第2页
基于TFM2平台体系管理项目工作流模块开发.doc_第3页
基于TFM2平台体系管理项目工作流模块开发.doc_第4页
基于TFM2平台体系管理项目工作流模块开发.doc_第5页
已阅读5页,还剩28页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

基于TFM2平台体系管理项目工作流模块开发指南东南融通集团2010年05月修订历史记录日期版本说明作者2010-6-31.1初稿2010-10-20增加默认执行器以及公用配置部分2011-3-22增加了针对体系开发人员的说明目录1文档概述52模版设计规范72.1模版开发规范72.1.1模版命名规范72.1.2流程节点命名规范72.1.3全局流程变量72.1.4公用流程变量82.1.5流程节点FORM的配置92.1.6结束节点配置92.2适配器开发规范102.2.1应用适配器开发:102.2.2模版适配器102.3流程模块开发规范113业务管理流程模块开发指南123.1列表/查询123.1.1Action类123.2流程发起场景123.2.1Action类123.2.2Form页面143.3流程审批场景153.3.1Action类153.3.2Form页面163.4混合场景163.4.1Action类163.4.2Form页面163.5执行器规范163.5.1初始执行器IInitExecutor163.5.2审批执行器IApproveExecutor163.5.3默认执行器IDefaultExecutor163.5.4默认执行器提供API164工作流实施开发规范原则185工作流开发要点195.1模板设计时195.2后台类开发时195.3前台页面195.4流程部署196问题以及解决方法206.1在流程列表页面怎么显示流程图207附件217.1ProcessListAction提供的API217.2ProcessInitAction提供的API217.3ProcessApproveAction提供的API217.4ProcessDefaultAction218普通编辑模块切换为流程模块228.1申请模块228.1.1Action类228.1.2JSP页面238.2审批模块248.2.1Action类258.2.2JSP页面268.3混合场景288.3.1Action类288.3.2JSP页面299流程相关列表查询SQL参考319.1.1查询自己的未处理流程审批任务319.1.2查询自己的未处理流程审批任务319.1.3查询业务流程信息3110流程客户端公用事件API的引入以及相关的配置3210.1.1公用流程事件以及控件3210.1.2Page配置3210.1.3Command配置3210.1.4Button配置321 文档概述本文档作为TFM2平台下工作流模块开发指南。其他未加描述的请参照intelliplatform关于工作流部分文档。常用API包以及类2 模版设计规范2.1 模版开发规范2.1.1 模版命名规范系统工作流模版的包都必须以“tx” 作为包的根目录。系统中有如下几个子包,序号包名称意义bizCode1filemanage文件管理10XX例如:体系文件审批流程-10102position岗位职责管理20XX3businessflow业务流程管理30XX 4sysmonitor体系运行管理40XX 5targetperf目标及指标管理50XX6improve体系持续改进60XX2.1.2 流程节点命名规范流程模版对流程节点的id命名除警示相关节点外无特殊要求。对于警示相关模版需要发起警示的流程节点命名必须以Warn_作为节点的前缀。比如支付申请审批警示“Warn_approve1”。2.1.3 全局流程变量系统设置四个全局的公用流程变量,流程模版开发人员在配置边条件、分派策略可根据自己的需要使用。序号变量名称意义内容1_g_prov_code省公司编码2_g_prov_fina_code省企管办编码3_g_prov_hard_code省公司机关编码4_g_system_type系统类型系统类型:0商业 1工业2.1.4 公用流程变量com.longtop.tfm.iwf.VarConstants序号变量名称意义内容1approveflag审批意见(审批标识) 2bizId业务主键3bizCode业务类别编码4staffId发起人编号5deptCode发起人所在部门编号6corpCode发起人所在机构编号7muniCorpCode发起人所在市级公司编号8counCorpCode发起人所在营销部/县公司编号非营销部的部门则不传入 9deptLevel发起部门所属的部门级别发起部门所属的部门级别A、商业:省公司1,市公司2,营销部3B、工业:省公司1,卷烟厂2省公司机关下面的部门对应的是省公司,市公司本部下面的部门对应的是市公司,营销部以及以下的部门对应的是营销部,如果有国家级的可使用010deptBizType发起人所在部门的业务类别如财务、办公室等的业务编码1、 工作流模版设计至少要配置公用流程变量2.1.5 流程节点FORM的配置系统摈弃platform的流程实现方式,我项目中配置form不需要配置公用的form页面,只需要配置各自的业务实现界面。比如:1、 platform配置方式2、 本项目的配置方式2.1.6 结束节点配置工作流模版的结束节点如果没有自定义结束适配器,都必须配置结束适配器使用默认的流程适配器com.longtop.tfm.iwf.adapter.BaseDoneAdapter。自定义的结束节点适配器必须继承BaseDoneAdapter,具体见结束节点适配器。2.2 适配器开发规范适配器开发规范适用于复杂流程,需要单独配置业务适配器。对于需要二次开发公用适配器,比如发起流程适配器、取消流程适配、结束流程适配器、收回流程适配器以及自定义审批节点适配器,需要继承各自的公用适配器,同时实现所需要的执行器(Executor)。适配器的类名一定要以Adapter结尾,如com.longtop. BaseInitAdapter.java。2.2.1 应用适配器开发:系统根据不同的场景提供不同的应用适配器,对于特殊功能需求,不同的适配器器需要实现特定的接口:一、 自定义发起节点申报适配器需要实现以下接口:1、 com.longtop.tfm.iwf.adapter.BaseInitAdapter2、 com.longtop.tfm.iwf.adapter.BaseInitV2Adapter,提供读取保存业务对象IPProcessBizVO的功能二、 发起节点的取消流程适配器需要继承以下接口:com.longtop.tfm.iwf.adapter.BaseCancelAdapter(启用默认)三、 审批节点同意适配器需要继承以下接口com.longtop.tfm.iwf.adapter.BaseApproveAdapter四、 审批节点不同意适配器需要继承以下接口com.longtop.tfm.iwf.adapter.BaseDisapproveAdapter五、 审批节点驳回适配器需要继承以下接口com.longtop.tfm.iwf.adapter.BaseRejectAdapter六、 申请、审批节点的收回适配器需要继承以下接口com.longtop.tfm.iwf.adapter.BaseRestractAdapter2.2.2 模版适配器1、 结束适配器流程默认的结束节点必须配置实现指定接口的适配器:com.longtop.tfm.iwf.adapter.BaseDoneAdapter2、 超时适配器com.longtop.tfm.iwf.adapter.BaseOvertimeAdapter2.3 流程模块开发规范3 业务管理流程模块开发指南业务管理模块的开发主要分为列表和编辑两种界面。流程开发常用API如下:3.1 列表/查询3.1.1 Action类业务管理的列表查询类(Action)应该继承自类com.longtop.tfm.iwf.web.ProcessListAction.java以com.longtop.tfm.emp.EmpScoreListAction为例3.2 流程发起场景3.2.1 Action类流程发起场景的Action应该继承自类ProcessInitAction.java以com.longtop.tfm.emp.EmpScoreApplyAction为例: 初始化函数doInitinitProcessBizInfo初始化流程业务主键,该函数为防止在自定义列表页面或者其他非标准方式进入流程处理界面而取不到流程信息。此初始化函数也适用于审批场景和混合场景。 提交申请apply开发人员如果确实需要业务动作与流程动作同一事务,可把executor.doFirst动作挪到service中执行Executor提供设置流程变量api(addCustomActionVariable),当然模版中也需要设置相应的流程变量。Executor 提供设置流程自定义适配器的api(addCustomBizAdaptorName)(只有取消的流程动作启用默认的自定义适配器BaseCancelAdapter),该自定义适配属于应用适配器由公用流程接口自动调用。自定义的适配器流程变量(addCustomBizAdaptorVariable)与之配合使用。Executor 提供设置流程扩展字段值的api(addProcessBizExtObject),对应Ip_process_biz表中的扩展字段。对于流程操作需要在跟业务操作做同一事务控制的话,需要把executor传入service中,并在service中执行流程动作。 收回任务retract 取消流程cancel 扩展开发.1 扩展流程是否允许收回需求:业务上需要判断流程是否允许收回扩展重写方法:boolean isAllowRetract(IInitContext context, TfmTaskVO tfmTaskVO, final List taskInfoList).2 扩展流程是否允许驳回需求:业务上需要判断流程是否允许驳回扩展重写方法:boolean isAllowReject(IInitContext context, TfmTaskVO tfmTaskVO, ITfmUserProfile userProfile).3 扩展流程action初始化需求:在所有的流程信息初始化后,需要对控件或者业务对象做特殊处理扩展重写方法:Void doAfterTaskInit(IInitContext context, final TfmTaskVO tfmTaskVO, ITfmUserProfile userProfile)该方法会在所有的流程动作完成后调用3.2.2 Form页面以/tfm/emp/employeeScoreApply.jsp为例: 任务DatasetA、重新设置datasetid任务datasetid默认使用Dataset_TfmTask。如果需要修改,需要做如下工作:需要在对应的jsp页面head标签中重新设置以下代码DEFAULT_TFMTASK_DATASET_ID = “指定的datasetId”;需要再对应的Action类中实现方法public String getTaskVODatasetId() return “指定的datasetId”; Page控件系统在流程处理页面提供三个默认的初始化后加载函数Function适用情况功能Flow_onAfterLoadPage通用(支持申请与审批)Flow_Apply_onAfterLoadPage流程申请Flow_Approve_onAfterLoadPage流程审批以上三个默认的初始化函数提供根据流程的状态、任务的状态以及业务扩展具体的需要来对流程相关的控件设置是否显示以及动作是否执行。系统如果对初始化有特殊的需求,可自定义onAfterLoadPage函数。 流程动作事件流程操作的Command必须指定以下Id,系统根据以下的id自动注入控件的事件Button_IdComand_Id 名称Button_ApplyCommand_Apply流程申请Button_CancelCommand_Cancel流程取消Button_RetractCommand_Retract流程收回Button_RejectCommand_Reject流程驳回Button_ApproveCommand_Approve流程提交同意Button_DisapproveCommand_Disapprove流程提交不同意.1 Command的配置Command中不需要配置Command的onExecuteSuccess事件,框架根据Command_Id自动注入事件。需要自定义扩展onExecuteSuccess事件,需要实现对应的JS方法Global_Command_ Apply_onExecuteSuccess().2 Button的配置Button中不需要配置Button的onClick事件,框架根据Button_Id自动注入。需要自定义扩展onClick事件,需要实现对应的JS方法Global_Button_Apply _onClick () 审批意见控件1、 审批列表2、 审批意见输入控件GroupBox_ApproveMemo 审批意见区域外框idApprove_Memo_Label 审批意见Label idApprove_Memo 审批意见输入框id3.3 流程审批场景3.3.1 Action类流程审批类(Action)应该继承自类com.longtop.tfm.iwf.web.ProcessApproveAction.java以com.longtop.tfm.emp.EmpScoreApproveAction为例3.3.2 Form页面以/tfm/emp/employeeScoreApprove.jsp为例:3.4 混合场景混合场景可实现支持同一个Action中申请和审批的功能。3.4.1 Action类流程审批类(Action)应该继承自类com.longtop.tfm.iwf.web.ProcessDefaultAction.java 以com.longtop.tfm.emp.EmpScoreDefaultAction为例3.4.2 Form页面以/tfm/emp/employeeScoreDefault.jsp为例:3.5 执行器规范流程执行器是项目引入的的流程执行的API,根据项目的特点提供三种执行器:1、初始执行器(IInitExecutor)2、审批执行器(IApproveExecutor)3、默认执行器(IDefaultExecutor)。执行器实现对任务对象的封装,开发人员可以根据自己的需要扩展实现执行器。由于执行流程可能会占用比较多的系统资源可能会导致事务执行超时,建议流程动作(doXXX)在Action中执行。对于事务控制要求比较严格的地方可在Service执行流程动作。3.5.1 初始执行器IInitExecutor系统提供默认的初始节点执行器com.longtop.tfm.iwf.executor.InitExecutor。提供流程申报场景执行器所需要的API。3.5.2 审批执行器IApproveExecutor系统提供默认的审批节点执行器com.longtop.tfm.iwf.executor. ApproveExecutor。提供流程审批场景执行器所需要的API。3.5.3 默认执行器IDefaultExecutor系统提供默认的审批节点执行器com.longtop.tfm.iwf.executor.DefaultExecutor。提供流程混合场景执行器所需要的API。3.5.4 默认执行器提供API执行器提供,发起流程、审批(同意不同意)流程、取消流程、收回流程和驳回(驳回上一个节点、驳回到第一个节点)流程等流程动作。同时也提供设置、添加流程适配器、适配器变量、流程变量以及流程扩展字段。voiddoCancelProcess(FlowBizObjectflowBizObject) 取消流程voiddoFirstNodeCommitTask(FlowBizObjectflowBizObject) 在第一个节点发起流程1、判断该流程是否已经发起,如果未发起则发起自动提交的任务如果流程已经发起则提交流程voiddoApproveTask(FlowBizObjectflowBizObject) 提交同意审批1、如果审批意见为空 默认为同意voiddoDisapproveTask(FlowBizObjectflowBizObject) 提交不同意审批1、如果审批意见为空 默认为不同意voiddoRejectTask(FlowBizObjectflowBizObject) 执行提交驳回默认驳回API,驳回到第一个节点1、如果审批意见为空 默认为驳回voiddoRejectToLastTask(FlowBizObjectflowBizObject) 执行驳回驳回API,驳回到上一个结点voiddoRetractTask(FlowBizObjectflowBizObject) 收回任务voidaddCustomActionVariable(java.lang.Stringkey, java.lang.Objectvalue) 新增流程事件的字定义流程变量voidaddCustomBizAdaptorVariable(java.lang.Stringkey, java.lang.Objectvalue) 添加一个自定义适配器流程变量voidaddProcessBizExtObject(java.lang.Stringkey, java.lang.Objectvalue) 增加流程业务的扩展字段TfmTaskVOgetTaskVO() 获取当前执行器处理的任务对象booleanisProcessNull() 当前流程是否是未创建voidremoveProcessBizExtObject(java.lang.Stringkey) 删除流程业务的扩展字段voidsetCustomBizAdapterName(java.lang.StringbizAdapterName) 设置适配器名称4 工作流实施开发规范原则工作流实施开发规则意在指导系统实施、开发人员在实施过程对工作流相关维护行为。1、 不要随意升级流程模版2、 不能直接在生产机上修改流程模版,修改流程模版必须在测试机上全面测试通过后把正确的流程模版手工导入到生产机上3、 对已经生效的流程模版的重大变更,涉及到映射表单重大变更的,为了确保流程历史业务数据的展现完整性和正确性,必须重新开发表单页面5 工作流开发要点5.1 模板设计时 流程模板设计时必须要指南中的10个流程变量, 业务所需变量根据需要再添加;结束结点必须要设置com.longtop.tfm.iwf.adapter.BaseDoneAdapter;人工结点必须要有目标页面;如果用到边条件,则条件要完备(例如一个有两个条边出的结点,一个条件用到 flag=0 ,另一个一定要设置 flag=1);5.2 后台类开发时按DEMO 所示各层ACTION 继承相关类;service 中 bizcode 对应部署时业务编码;5.3 前台页面涉及流程处理的页面(例如:申请、审批)中必须要有 Dataset_TfmTask;5.4 流程部署要在流程管理中注册 流程模板所对应的业务编码;6 问题以及解决方法6.1 在流程列表页面怎么显示流程图系统提供通过JS函数直接显示动态流程图1、 JSP文件引入js文件script language=javascript src=/script language=javascript src=/2、 函数调用,其中mpid为流程idfunction RecordButton_ShowFlow_onClick() /获取Dataset的当前记录 record = $J(Dataset_RuleApproveTask).getCurrentRecord(); if (record != null) var mpid = record.getValue(mpid);/mpid为流程的poid showFlowPicWithProcessId(mpid); return; 7 附件7.1 ProcessListAction提供的APIcom.longtop.tfm.iwf.ProcessListActionaction1、 getTaskUrl(IActionContext context)获取当前人的任务路径供form页面调用2、 generateTaskUrl(IActionContext context, String bizCode,String bizId)生成bizname和taskpath7.2 ProcessInitAction提供的APIcom.longtop.tfm.iwf.ProcessInitAction1、 getInitExecutor(IProcessAction action,IActionContext context) 函数获取一个初始节点执行器,对于需要重新实现初始节点执行器的必须重写本借口。7.3 ProcessApproveAction提供的API com.longtop.tfm.iwf.ProcessApproveAction1、 getApproveExecutor(IProcessActionaction,IActionContext context)函数获取一个审批节点执行器,对于需要重新实现初始节点执行器的必须重写本借口。7.4 ProcessDefaultActioncom.longtop.tfm.iwf.ProcessDefaultAction 1、 getDefaultExecutor(IProcessActionaction,IActionContext context)函数获取一个审批节点执行器,对于需要重新实现初始节点执行器的必须重写本借口。8 普通编辑模块切换为流程模块8.1 申请模块基于intelliweb开发的编辑模块切换为tfm的流程申请模块需要做Action类和JSP 页面两部分的改造,如下。包含有提交申请、取消流程、收回流程三个事件8.1.1 Action类参考代码:com.longtop.tfm.emp.web.EmpScoreApplyAction.java(注意加粗部分字体)序号位置内容1类声明public class EmpScoreApplyAction extends ProcessInitAction2doInit方法protected void doInit(IInitContext context) /获取业务主键 id为传入的业务主键String id = getBizId(context, “id”);if (id != null) /加载数据或者进行相关的业务处理/初始化流程业务信息 如果是流程的Form Action类都应该在本函数里面调用本函数initProcessBizInfo(context, IempScoreService.FLOW_BIZ_CODE, id);3apply申请public void apply(IactionContext context) throws BasCheckedException /获取业务对象、相关的业务操作(修改/保存/删除等)DemoEmployeeScoreVO bizObject = / 提交流程IinitExecutor executor = getInitExecutor(this, context);/获取执行器IInitExecutor executor = getInitExecutor(this, context);/设置自定义适配器,如果没有设置则使用默认/executor.setCustomBizAdapterName(EmpInitAdapter.class.getName();/如果需要设置自定义流程变量,自定义流程变量将覆盖默认/executor.addCustomActionVariable(bizNumber, 111);/如果需要设置适配器的自定义流程变量/executor.addCustomBizAdaptorVariable(adaptorName, a);/设置流程业务扩展字段/executor.addProcessBizExtObject(ProcessBizUtil.KEY_EXTNUMBER1, 11110.0);/ 提交流程executor.doFirstNodeCommitTask(new FlowBizObject(bizObject.getScoreId();4Cancel取消public void cancel(IActionContext context) throws BasCheckedException /获取业务对象、相关的业务操作(修改/保存/删除等)DemoEmployeeScoreVO flowBizObject = /取消流程FlowBizObject fb = new FlowBizObject(flowBizObject.getScoreId();IInitExecutor executor = getInitExecutor(this, context); /设置其它参数executor.doCancelProcess(fb);5收回流程retractpublic void retract(IActionContext context) throws BasCheckedException /获取业务对象、相关的业务操作(修改/保存/删除等)DemoEmployeeScoreVO flowBizObject = /收回流程FlowBizObject fb = new FlowBizObject(flowBizObject.getScoreId();IInitExecutor executor = getInitExecutor(this, context); /设置其它参数executor.doRetractTask(fb);扩展开发见流程发起场景8.1.2 JSP页面参考代码:tfm/emp/employeeScoreApply.jsp(注意加粗部分字体)序号位置内容1.引入文件头2.引入JSscript language=javascript src=/script language=javascriptsrc=/3.需要引入任务Dataset4.需要引入的审批意见控件5.流程页面加载后的事件配置用于控制流程信息初始化以及业务按钮的显示6.流程事件Command控件Command_Cancel,Command_Apply,Command_Retract,具体说明以及扩展开发见流程发起场景7.流程事件Button控件 Button_Cancel,Button_Apply,Button_Retract,具体说明以及扩展开发见流程发起场景8.2 审批模块基于intelliweb开发的编辑模块切换为tfm的流程申请模块需要做Action类和JSP 页面两部分的改造,如下。包含有同意、不同意、驳回、收回流程四个事件8.2.1 Action类参考代码:com.longtop.tfm.emp.web.EmpScoreApproveAction.java(注意加粗部分字体)序号位置内容1类声明public class EmpScoreApproveAction extends ProcessApproveAction 2doInit方法protected void doInit(IInitContext context) /获取业务主键 id为传入的业务主键String id = getBizId(context, “id”);if (id != null) /加载数据或者进行相关的业务处理/初始化流程业务信息 如果是流程的Form Action类都应该在本函数里面调用本函数initProcessBizInfo(context, IempScoreService.FLOW_BIZ_CODE, id);3Approve同意public void approve(IActionContext context) throws BasCheckedException /获取业务对象、相关的业务操作(修改/保存/删除等)DemoEmployeeScoreVO flowBizObject1 = /提交工作流请求IApproveExecutor executor = getApproveExecutor(this, context); /设置自定义适配器,如果没有设置则使用默认/executor.setCustomBizAdapterName(EmpInitAdapter.class.getName();/如果需要设置自定义流程变量,自定义流程变量将覆盖默认/executor.addCustomActionVariable(bizNumber, 111);/如果需要设置适配器的自定义流程变

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论