我可以: 邀请好友来看>>
ZOL星空(中国) > 技术星空(中国) > Java技术星空(中国) > 针对iMatrix平台的子流程中的事件处理研究所得,分享给大家!
帖子很冷清,卤煮很失落!求安慰
返回列表
签到
手机签到经验翻倍!
快来扫一扫!

针对iMatrix平台的子流程中的事件处理研究所得,分享给大家!

27浏览 / 0回复

nortek_imatr...

nortek_imatrix

0
精华
6
帖子

等  级:Lv.1
经  验:0
  • Z金豆: 0

    千万礼品等你来兑哦~快点击这里兑换吧~

  • 城  市:北京
  • 注  册:2013-03-07
  • 登  录:2014-06-05
发表于 2013-09-17 13:56:42
电梯直达 确定
楼主
针对iMatrix平台的子流程中的事件处理研究所得,分享给大家:获得子流程实体的spring bean
当子流程的表单为标准表单时,子表单对应的实体实例是流程引擎通过回调该bean获得的。这里的bean必须实现接口com.norteksoft.wf.engine.client.onlingSubProcess
  进入子流程前spring bean
开始子流程前回调该bean。如果该bean不存在,则直接启动子流程;如果该bean存在,则调用该beanisIntoSubProcess ()方法。如果该方法返回true,启动子流程;如果该方法返回false,不进入启动子流程,主流程将跳过子流程继续向下执行。这里的bean必须实现接口com.norteksoft.wf.engine.client.BeforeStartSubProcess
子流程结束后返回时的spring  bean
当子流程结束返回主流程时,流程引擎将回调该bean。这里的bean必须实现接口com.norteksoft.wf.engine.client.AfterSubProcessEnd
子流程实现是使用了jbpmcustom节点,如下:"   g="191,243,80,40" class="com.norteksoft.wf.engine.core.SubProcessService">… … … …当走到该节点时根据jbpmcustom的处理,会自动调用com.norteksoft.wf.engine.core.SubProcessService中的execute方法,同时给jbpm信号,等待子流程结束,当子流程结束时在给主流程继续流转的信号,如下:红色字体代码段为:获得执行的bean名称、获得spring容器中的bean、执行该bean中的方法。进入子流程前的处理实现:public voidexecute(ActivityExecution execution) throws Exception {… … … …String beforeStartSubProcessName= DefinitionXmlParse.getBeforeStartSubProcess(subprocessParse.getParentDefinitionId(),subprocessParse.getActivityName());       log.info("实现类的beforeStartSubProcessName:"+beforeStartSubProcessName);       BeforeStartSubProcess beforeStartSubProcess = null;       if(StringUtils.isNotEmpty(beforeStartSubProcessName)){           beforeStartSubProcess = (BeforeStartSubProcess)ContextUtils.getBean(beforeStartSubProcessName);           log.debug("beforeStartSubProcess:"+beforeStartSubProcess);       }       if(beforeStartSubProcess==null || beforeStartSubProcess.isIntoSubProcess(parentWorkflow.getDataId())){… … … …//jbpm信号,等待子流程结束execution.waitForSignal();}… … … …}获得子流程实体的spring bean”的处理实现:com.norteksoft.wf.engine.core.SubProcessService中的execute方法为入口,public voidexecute(ActivityExecution execution) throws Exception {… … … …taskService.startSubProcessWorkflow(transactor,subprocessParse,null);… … … …}public void startSubProcessWorkflow(Map transactor,SubProcessParse subprocessParse,Collectiontranscators){… … … …String beanName =DefinitionXmlParse.getSubProcessBeginning(subprocessParse.getParentDefinitionId(),subprocessParse.getActivityName());           log.info("实现类的beanname:"+beanName);onlingSubProcessbeginning = (onlingSubProcess)ContextUtils.getBean(beanName);… … … …//获得子流程对应的实体FormFlowable subFormEntity =eginning.getRequiredSubEntity(param);… … … …}    “子流程结束后”的处理实现:当子流程结束时,给主流程继续流转的信号:com.norteksoft.wf.engine.core.ProcessEndListener中,public voidnotify(EventListenerExecution execution) {… … … …//设置继续流转的信号executionService.signalExecutionById(workflow.getParentExcutionId(),transitionName);… … … …}当给了该信号后,会走com.norteksoft.wf.engine.core.SubProcessService中的signal方法,在该方法中处理“子流程结束后”的事件:public voidsignal(ActivityExecution execution, String signalName, Mapparameters) throws Exception {… … … …String subProcessEndName = DefinitionXmlParse.getSubProcessEnd(subprocessParse.getParentDefinitionId(),subprocessParse.getActivityName());       log.info("实现类的subProcessEndName:"+subProcessEndName);       if(StringUtils.isNotEmpty(subProcessEndName)){           AfterSubProcessEnd afterSubProcessEnd = (AfterSubProcessEnd)ContextUtils.getBean(subProcessEndName);           log.info("subProcessEnd:"+afterSubProcessEnd);if(afterSubProcessEnd!=null) afterSubProcessEnd.execute(parentWorkflow.getDataId());}… … … …}
高级模式
星空(中国)精选大家都在看24小时热帖7天热帖大家都在问最新回答

针对ZOL星空(中国)您有任何使用问题和建议 您可以 联系星空(中国)管理员查看帮助  或  给我提意见

快捷回复 APP下载 返回列表