Jbpm工作流子流程问题

问题描述

在做报销工作流实例时,用到子流程,在TaskInstance的end时出现如下错误提示:org.jbpm.JbpmException:can'tcreateaprocessinstancewhenprocessDefinitionisnullatorg.jbpm.graph.exe.ProcessInstance.<init>(ProcessInstance.java:87)......报销流程定义(只列出部分内容)<task-nodename="部门主管审核"><taskname="主管审核"><controller><variablename="baixiaoId"access="read"mapped-name="报销ID"></variable></controller><assignmentclass="org.springmodules.workflow.jbpm31.JbpmHandlerProxy"config-type="bean"><targetBean>managerAssignment</targetBean><factoryKey>jbpmConfiguration</factoryKey></assignment></task><transitionname="要求修改"to="申请人修改报销单"></transition><transitionname="主管同意"to="判断走向"></transition></task-node><decisionname="判断走向"><handlerclass="org.springmodules.workflow.jbpm31.JbpmHandlerProxy"><targetBean>processDecision</targetBean><factoryKey>jbpmConfiguration</factoryKey></handler><transitionname="大于10000"to="老板审核申请"></transition><transitionname="小于10000"to="财务处理流程"></transition><transitionname="主管不同意"to="自动处理申请结果"></transition></decision><process-statename="财务处理流程"><sub-processname="caiwu"/><variablename="baixiaoId"access="read"mapped-name="报销ID"></variable><transitionname=""to="自动处理申请结果"></transition></process-state>财务处理流程<?xmlversion="1.0"encoding="UTF-8"?><process-definitionxmlns="urn:jbpm.org:jpdl-3.1"name="caiwu"><start-statename="start"><transitionname="to_caiwu"to="自动财务处理"></transition></start-state><end-statename="end1"></end-state><nodename="自动财务处理"><eventtype="node-enter"><actionname="cai"class="org.springmodules.workflow.jbpm31.JbpmHandlerProxy"><factoryKey>jbpmConfiguration</factoryKey><targetBean>caiwuprocessAction</targetBean></action></event><transitionname="to_end"to="end1"></transition></node></process-definition>部门主管审核,做审核通过,部分代码如下:保存审核通过信息.....JbpmContextjbpmContext=jbpmConfiguration.getCurrentJbpmContext();if(jbpmContext==null){jbpmContext=jbpmConfiguration.createJbpmContext();}try{TaskInstanceti=jbpmContext.getTaskMgmtSession().getTaskInstance(Long.parseLong(tid));if(result=="主管同意"||result=="主管不同意"){ti.end("主管同意");}else{ti.end("要求修改");}执行到ti.end("主管同意")提示org.jbpm.JbpmException:can'tcreateaprocessinstancewhenprocessDefinitionisnullatorg.jbpm.graph.exe.ProcessInstance.<init>(ProcessInstance.java:87)......后来查找网上出现的类似问题的解决方法,其中有个方法说是<sub-process加入属性binding="late",但是提示:cvs-complex-type.3.2.2Attribute'binding'isnotallowedtoappearinelement'sub-process',请使用过Jbpm工作流的高手给予解答,我所使用的jbpm为jbpm-3.1.4.jar,spring-modules-jbpm31.jar

解决方案

解决方案二:
光看你这样描述很难找到问题症状所在。can'tcreateaprocessinstancewhenprocessDefinitionisnull这个信息说明流程定义还没初始化的时候,你就开始创建实例。
解决方案三:
父流程和子流程没有绑定。应该先部署子流程,后部署父流程
解决方案四:
先把子流程模板部署到DB中,最后在JbpmContext.deployProcessDefinition(父流程模板);就不会出现这样的问题了!
解决方案五:
挺烦工作流的
解决方案六:
流程发布的问题.我刚刚才解决.ProcessDefinitionprocessDefinition=ProcessDefinition.parseXmlString(content);//查找子流程for(JbpmNodejbpmNode:graph.getSubProcesses()){StringsubProcessName=jbpmNode.getSubProcessName();ProcessDefinitionsubDefinition=jbpmContext.getGraphSession().findLatestProcessDefinition(subProcessName);if(subDefinition==null){thrownewException("请先发布子流程'"+subProcessName+"'");}//建立关联关系ProcessStateprocessState=(ProcessState)processDefinition.getNode(jbpmNode.getName());processState.setSubProcessDefinition(subDefinition);}//DeploytheprocessdefinitioninthedatabasejbpmContext.deployProcessDefinition(processDefinition);这是我的实际代码.关键在于//建立关联关系ProcessStateprocessState=(ProcessState)processDefinition.getNode(jbpmNode.getName());processState.setSubProcessDefinition(subDefinition);
解决方案七:
该回复于2009-08-28 13:37:35被版主删除
解决方案八:
接触过jbpm和oa系统但没接触有子流程的
解决方案:
这个问题我也碰到过,这个例子我也在刚开始学的时候一直调试,最后问题出在了要先生成财务子流程再生成报销流程这样才行,节点创建是要有先后顺序的,你试试看
解决方案:
先把子流程模板部署到DB中,最后在JbpmContext.deployProcessDefinition(父流程模板);就不会出现这样的问题了!

时间: 2024-07-29 00:11:12

Jbpm工作流子流程问题的相关文章

WF4.0中实现子流程

工作流服务中,经常会在主流程启用一些子流程.我在审批流程中经常会使用bookmark来暂停流程,这篇文章,将结合bookmark来实现主流程启动子流程. 使用以前的一篇WF4.0自定义持久化中的自定义的持久化.不过数据表中加入了一个字段parentid,用于标识父流程: 下面用一个流程实例为例说明主流程是如何启用子流程,子流程又是如何返回主流程的,主流程如下:

JBPM工作流开发经验总结

关于JBPM工作流 1.工作流 工作流是一项分离业务操作和系统流程的技术.工作流由实体(Entity).参与者(Participant).流程定义(Flow Definition).工作流引擎(Engine) 四部分组成. l  实体是工作流的主体,是需要随着工作流一起流动的物件(Object).例如,在一个采购申请批准流程中,实体就是采购申请单:在公文审批流程中,实体就是公文. l  参与者是各个处理步骤中的责任人,可能是人,也可能是某个职能部门,还可能是某个自动化的设备: l  流程定义是预

jbpm4.4怎么将父流程的一些信息传递到子流程中

问题描述 jbpm4.4怎么将父流程的一些信息传递到子流程中 是用jbpm4.4 在父流程中嵌套一个子流程,现在想将父流程中的一些信息传递到子流程中使用,求大神指导如何传递过去

activity-Activity中,关于子流程中的并发节点如何标记?

问题描述 Activity中,关于子流程中的并发节点如何标记? 在一个流程中存在多个子流程,每个子流程中又包括多个并发的节点,但是由于并发节点的执行Id和对应子流程的执行Id是不一样的,所以就很难判断出当前执行的节点为那个子流程的并发节点. 解决方案 你可以增加一个id表示属于哪个 解决方案二: 给每个节点在每个子流程的调用设置 ID,这是假设与子流程的代码不一样 如果各个子流程的代码是相同的,则需要在创建子流程时传入参数加以区分 解决方案三: 为每一个子流程的子节点添加annotation,为

Activiti新增的子流程

flowable和Activiti6新增了ad-hoc子流程(adHocSubProcess),即adHocSubProcess流程.该类型的子流程无需再子流程中为节点配置任何的出线: 操作方式如下: runtimeService.getEnabledActivitiesFromAdhocSubProcess(executionId); runtimeService.executeActivityInAdhocSubProcess(executionId, id); runtimeService

JBPM工作流引擎

java.lang.NoSuchMethodError: antlr.collections.AST.getLine()I  ERP,OA,CRM内网系统,需要多个人(多个步骤)处理 JBPM是由JBoss推出的,用来完成工作流的一套开发包. 工作流并不是技术的概念,而是通过程序描述业务流程的功能. 一般使用工作流实现的功能有:请假,报销,出差申请,保险理赔等 在开发JBPM时,需要先建立一个JBoss的流程描述文件(加入插件), 注意插件在文件夹内部 导入jbpm的sql语句 本栏目更多精彩内

Jbpm如何在流程定义中加入自定义的内容

问题描述 在xpdl中,可以以如下方式在流程定义中加入自己的内容:<ExtendedAttributes> <ExtendedAttribute Name="MBBH" Value="4"/> <ExtendedAttribute Name="MBMC" Value="发文流程(有核文)"/> <ExtendedAttribute Name="YWLB" Value

java除了支持jbpm工作流外,还可以用哪种工作流?

问题描述 我要做一个OA与工作流的系统 解决方案 jbpm比较成熟,我们也在用jbpm作工作流引擎,其他的没接触过解决方案二:用我们成熟的工作流产品更加方便了.解决方案三:osworkflow 也是开源工作流,而且很灵活好用,以前项目用过

java 整合 activiti工作流 web流程设计器 整合视频教程 SSM

本视频为activiti工作流的web流程设计器整合视频教程 整合Acitiviti在线流程设计器(Activiti-Modeler 5.21.0 官方流程设计器) 本视频共讲了两种整合方式 1. 流程设计器和其它工作流项目分开部署的方式 2. 流程设计器和SSM框架项目整合在一起的方式 视频大小 1.13 GB ~[获取地址] QQ313596790 本视频均为本人亲自录的,另免费附加赠送Activiti工作流视频(企业开发实例讲解) (这个赠送的Activiti工作流视频里面的流程设计器用的