《comframe20二次开发手册》由会员分享,可在线阅读,更多相关《comframe20二次开发手册(49页珍藏版)》请在金锄头文库上搜索。
1、ComFrame2.0二次开发手册1 概述Comframe20是统一的流程化驱动设计运行平台,并且提供业务流程的增值服务。例如异常处理机制,会签,任务再分配等等,以及流程的管理、控制和统计能力。提供对商用工作流引擎的封装(包括BPS,FUEGO,WPS),为业务系统提供无差别的使用方式,包括业务流程的绘制和业务流程使用API两个方面。实现工作流的开发应用与部署无关。提供与工作流配套的自动表单系统,实现流程应用的快速配置开发。与Appframe的无缝连接,方便系统的开发测试配置。Comframe20系统结构:2 数据对象Vm_work_flow:流程实例表,一个流程实例对应一条数据,在流程创建时
2、插入,state=2;状态为99表示执行出现异常。流程处理结束后(竣工状态置为3,终止状态置为4)移入历史表。Vm_task:流程任务实例表,记录流程执行的节点,state=2表示未执行;state=3表示已经完成;state=5表示等待人工处理;state=99表示处理失败Vm_task_trans:流程任务迁移表,记录会签任务以及转派任务,与vm_task处理相同His_vm_work_flow,his_vm_task,his_vm_task_trans:历史表,流程实例处理结束后,流程及任务实例数据一起移入历史表Vm_schedule:调度表,流程创建时插入,state=W,schedu
3、le_server为空;开始调度,state=W, schedule_server为调度它的队列编号;停止调度,state=F(例如遇到人工节点);流程执行完成后删除数据。Queue_schedule_server:与扫描队列公用,不需要人工维护,每启动一个调度队列在其中自动增加一条数据,并以固定的时间间隔(1分钟)自动刷新queue_schedule_server.last_modify_date,同时比较相同task_type调度队列的last_modify_date和当前时间,如果时间间隔大于固定的间隔(3分钟),则认为该调度队列已经停止,并把它的数据清理掉,已经分配给它的任务将被收回,
4、等待重新分配。Queue_schedule_list:需要手工配task_id和task_type,task_type即调度队列的类型,task_id一般配0到9,中间不能跳跃Vm_config: 可以配置QUEUE_ID,DISTRICT_ID,TABLE_POSTFIX,ID_POSTFIX,DATA_SOURCE。配置的是各数据源和QUEUE_ID,DISTRICT_ID,ID_POSTFIX之间的关系,可以通过此表来确定实际所取的数据源。oracle依次执行以下脚本:id_generator.sqlqueue.sqlworkflow.sqlvm_exception.sqldb2执行以下
5、脚本:id_generator_db2.sqlqueue_db2.sqlworkflow_db2.sqlvm_exception_db2.sql VM_STATIC_DATA中code_type为101的数据是流程实例对象类型,根据业务系统需要配置:insert into VM_STATIC_DATA(code_type,code_id,code_name,sort_id,is_used) values(101,CRM,CRM,1,1);insert into VM_STATIC_DATA(code_type,code_id,code_name,sort_id,is_used) values(
6、101,IOM,IOM,2,1);insert into VM_STATIC_DATA(code_type,code_id,code_name,sort_id,is_used) values(101,RMS,RMS,3,1);3 配置文件3.1 Vm.moduleComframe20基本服务配置。使用comframe20必须加载此模块。 UserDataSource linhl true 蓝色部分是固定的,绿色部分根据项目配置。Defaultqueue:默认的queueId,可在创建流程实例时指定。queueId用于区分不同的流程实例,当流程实例较多时实现分优先级调度。Publish:模板发布
7、模式,true为发布模式,即流程模板保存在数据库中,支持版本控制; False为非发布模式,即流程模板保存在文件系统中,替换模板后所有流程实例及以新模板处理,不能进行版本控制。Queue:处理内部vm引擎调度(vm_schedule中state = W and (engine_type = VM or engine_type is null) 的实例数据)Timer:处理定时任务,自动打单任务等Scanengine:处理商用引擎调度(vm_schedule中state = W and engine_type is not null and engine_type VM 的实例数据)Scanbu
8、si:处理业务调度(vm_schedule中state = E and engine_type is not null and engine_type VM 的实例数据)exception:处理异常流程tasktype:调度队列类型,表queue_schedule_list 中必须配对应的数据。相同tasktype的调度队列,则queueid也必须一致。反之亦然。Threenum:处理的线程数Fetchnum:每次取的数据量Start:模块加载时是否启动该队列,默认为trueCenterid:中心信息Districtid:地区信息Scanengine和scanbusi必须配合使用,且仅在使用商
9、用流程引擎时需要。调度队列可如上配在vm.module中,也可单独配置module,然后通过main函数加载。3.2 Comframe.ini#客户端调用comframe的方式#支持:local(本地调用),ejb,jboss,默认为localserver.type=localjava.naming.factory.initial=weblogic.jndi.WLInitialContextFactoryjava.naming.provider.url=t3:/192.168.0.14:7001#任务配pojo类型时,将对应路径的pojo转为ejb调用,#boss20对应ai-service-
10、config.xml中ejb-context的idpojo.ejb.example.vm=boss20#process是否debug模式,默认为true#debug模式下,每次执行process都重新生成类process.debug=true#路由信息,默认为VM#左侧路径下的模板由右侧的流程引擎调度process.route=BPSprocess.route.example.fuego=FUEGOprocess.route.example.wps=WPS#console操作员console.login.id=1console.login.code=AdminWorkflow#使用appfra
11、me加密工具加密,默认配置为workflowconsoleconsole.login.password=7C6479606D67647C6864657864676Econsole.login.org.id=1console.login.org.name=工作流组织#工作流自动处理员工workflow.staff.id=1workflow.staff.org=1workflow.staff.domain=14 任务类型4.1 自动任务自动任务可配置一个服务或pojo的方法,派单后立即执行(派单与执行任务是相互独立的事务),执行成功后派下一任务(独立事务),执行失败则再重试两次,仍然失败则停止执行,并置流程实例状态为99。4.2 人工任务人工任务实际是半自动任务,即派单后先执行前置任务(与自动任务相同。也可不配前置任务),然后等待人工回单。