关于jbpm中的actionID的问题,很奇怪
huangguan
2007-07-13
下面是我的部分流程设计:
<swimlane name="starter"> <assignment expression="AAA"></assignment> </swimlane> <start-state name="create a new process"> <task name="input studentID" swimlane="starter"> <controller> <variable name="StudentID" access="read,write,required"></variable> <variable name="StudentName" access="read,write,required"></variable> </controller> </task> <transition name="" to="validate notice"></transition> </start-state> 个人理解这样就可以把任务input studentID 就交给AAA来处理了,但是新键任务实例的时候,数据库中的task-instance表中的ActionID是空的,这个怎么回事呢? 但是我在创建任务实例的时候,用taskInstance.setActorId("AAA")来设置一下,他在数据库表中ActionID就是AAA。 但是他的websale例子中却不用怎么折腾的? 这是为什么呢? 请大家指教一下。。。。。 |
|
wuxufeng8080
2007-07-13
这个表达式不是这么写的
|
|
huangguan
2007-07-13
wuxufeng8080,谢谢你的回复哈
那该怎么写呢? 还有,我的流程控制老是有问题也。 我修该之后的流程 <process-definition xmlns="urn:jbpm.org:jpdl-3.1" name="simple"> <swimlane name="validator"> <assignment expression="user(BBB)"></assignment> </swimlane> <swimlane name="arranger"> <assignment expression="user(CCC)"></assignment> </swimlane> <swimlane name="doctor"> <assignment expression="user(EEE)"></assignment> </swimlane> <swimlane name="receiver"> <assignment expression="user(DDD)"></assignment> </swimlane> <start-state name="create a new process"> <task name="input studentID"> <controller> <variable name="StudentID" access="read,write,required"></variable> <variable name="StudentName" access="read,write,required"></variable> </controller> </task> <transition name="" to="validate notice"></transition> </start-state> <end-state name="end"></end-state> <task-node name="validate notice"> <task name="validation" swimlane="validator"> <controller> <variable name="StudentID" access="read"></variable> <variable name="StudentName" access="read"></variable> <variable name="comment" access="read,write,required"></variable> </controller> </task> <transition name="" to="arrange room"></transition> </task-node> <task-node name="arrange room"> <task name="arrangement" swimlane="arranger"> <controller> <variable name="StudentID" access="read"></variable> <variable name="StudentName" access="read"></variable> <variable name="RoomNum" access="read,write,required"></variable> </controller> </task> <transition name="" to="fork1"></transition> </task-node> <task-node name="money"> <task name="money receive" swimlane="receiver"> <controller> <variable name="StudentID" access="read"></variable> <variable name="StudentName" access="read"></variable> <variable name="money" access="read,write,required"></variable> </controller> </task> <transition name="" to="join1"></transition> </task-node> <fork name="fork1"> <transition name="" to="money"></transition> <transition name="tr2" to="health"></transition> </fork> <task-node name="health"> <task name="health" swimlane="doctor"> <controller> <variable name="StudentID" access="read"></variable> <variable name="StudentName" access="read"></variable> <variable name="comment" access="read,write,required"></variable> </controller> </task> <transition name="" to="join1"></transition> </task-node> <join name="join1"> <transition name="" to="end"></transition> </join> </process-definition> 在流程开始状态: JbpmConfiguration config = JbpmConfiguration.getInstance(); JbpmContext context = config.createJbpmContext(); ProcessDefinition processDefinition =context.getGraphSession().findLatestProcessDefinition("simple"); ProcessInstance processInstance = processDefinition.createProcessInstance(); TaskInstance taskInstance = processInstance.getTaskMgmtInstance().createStartTaskInstance(); taskInstance.setVariable("studentID", "001"); taskInstance.setVariable("studentName", "huang"); taskInstance.end(); context.save(taskInstance); context.close(); 只要我加上taskInstance.end就要报错,但是不加的话,它又没办法跑到下一个节点,这个改怎么办呢? |
|
huangguan
2007-07-13
我研究过了websale的例子,他是通过taskInstance.end()来进入下一个节点的,为什么我就不行呢?
郁闷了。。。。。 |
|
wuxufeng8080
2007-07-14
你把错误信息贴上来,还有,你可以给transition一个名字,然后调用 taskInstance.end("transitionName");
试下 |
|
huangguan
2007-07-15
你说的那个方法,我试过了,没有任何作用!!!!
|
|
huangguan
2007-07-15
错误信息如下:
Exception in thread "main" org.jbpm.graph.def.DelegationException at org.jbpm.taskmgmt.exe.TaskMgmtInstance.performAssignment(TaskMgmtInstance.java:208) at org.jbpm.taskmgmt.exe.TaskMgmtInstance.getInitializedSwimlaneInstance(TaskMgmtInstance.java:176) at org.jbpm.taskmgmt.exe.TaskInstance.assign(TaskInstance.java:191) at org.jbpm.taskmgmt.exe.TaskMgmtInstance.createTaskInstance(TaskMgmtInstance.java:148) at org.jbpm.graph.node.TaskNode.execute(TaskNode.java:167) at org.jbpm.graph.def.Node.enter(Node.java:316) at org.jbpm.graph.def.Node$$FastClassByCGLIB$$d187eeda.invoke(<generated>) at net.sf.cglib.proxy.MethodProxy.invoke(MethodProxy.java:149) at org.hibernate.proxy.CGLIBLazyInitializer.intercept(CGLIBLazyInitializer.java:161) at org.jbpm.graph.def.Node$$EnhancerByCGLIB$$24e7b758.enter(<generated>) at org.jbpm.graph.def.Transition.take(Transition.java:119) at org.jbpm.graph.def.Node.leave(Node.java:383) at org.jbpm.graph.node.StartState.leave(StartState.java:70) at org.jbpm.graph.def.Node$$FastClassByCGLIB$$d187eeda.invoke(<generated>) at net.sf.cglib.proxy.MethodProxy.invoke(MethodProxy.java:149) at org.hibernate.proxy.CGLIBLazyInitializer.intercept(CGLIBLazyInitializer.java:161) at org.jbpm.graph.def.Node$$EnhancerByCGLIB$$24e7b758.leave(<generated>) at org.jbpm.graph.exe.Token.signal(Token.java:178) at org.jbpm.graph.exe.Token.signal(Token.java:149) at org.jbpm.taskmgmt.exe.TaskInstance.end(TaskInstance.java:443) at org.jbpm.taskmgmt.exe.TaskInstance.end(TaskInstance.java:382) at com.sample.action.Client.main(Client.java:29) Caused by: org.jbpm.identity.assignment.ExpressionAssignmentException: couldn't resolve assignment expression 'user(BBB)' at org.jbpm.identity.assignment.ExpressionAssignmentHandler.assign(ExpressionAssignmentHandler.java:97) at org.jbpm.taskmgmt.exe.TaskMgmtInstance.performAssignmentDelegation(TaskMgmtInstance.java:217) at org.jbpm.taskmgmt.exe.TaskMgmtInstance.performAssignment(TaskMgmtInstance.java:193) ... 21 more Caused by: org.jbpm.identity.assignment.ExpressionAssignmentException: user 'BBB' couldn't be fetched from the user db at org.jbpm.identity.assignment.ExpressionAssignmentHandler.getUserByName(ExpressionAssignmentHandler.java:209) at org.jbpm.identity.assignment.ExpressionAssignmentHandler.resolveFirstTerm(ExpressionAssignmentHandler.java:147) at org.jbpm.identity.assignment.ExpressionAssignmentHandler.assign(ExpressionAssignmentHandler.java:75) ... 23 more |
|
huangguan
2007-07-15
这个错误信息是加了taskInstance.end()之后产生的,但是不加的话,任务无法结束,他就没办法进入到下一个节点。。
这咋回事呢? |
|
huangguan
2007-07-15
wuxufeng8080,有没有什么常用的联系方式啊?
msn或者其他什么的。。 这样有问题才好问你啊 |
|
gsccnu
2007-07-15
应该是在下一个TASK ASSIGN时产生的错误。
确认你的USER表中存在那几个用户。如果你使用的是3.2,按以下写法 <assignment actor-id="AAA" /> |
相关讨论
相关资源推荐
- Cruise Control
- CruiseControl
- CruiseControl简介
- Open Sourcing Kafka Cruise Control Automating Kafka’s Operation at Scale
- CruiseControl.Net Setup Constructions,CruiseControl.Net安装流程(NUnit+FxCop+NCover+NDoc+Fitness)
- 使用CruiseControl
- CruiseControl step by step(2)
- CruiseControl使用总结
- 搭建CruiseControl 环境
- CruiseControl定点触发(该文章为复制别人的博客)