当前位置:编程学习 > JAVA >>

jdpm4.4 流程问题

业务逻辑是这样:
    任何人可以发起单子,先到发起人的直接领导那里,领导同意,发起人在发起给多个人(人数不确定),多个人处理完成,发起给最大领导,领导看了,直接结束。
jpdl.xml文件如下:
<?xml version="1.0" encoding="UTF-8"?>
<process name="servicePrepose" xmlns="http://jbpm.org/4.4/jpdl">
   <start g="180,43,48,48" name="start1">
      <transition g="-69,-22" name="部门领导" to="部门领导"/>
   </start>
   <task candidate-users="#{userLists}" g="346,311,120,68" name="会签">
      <transition g="-33,-31" name="通知" to="join1"/>
   </task>
   <task assignee="张三" form="nodePrepose2.do" g="690,329,127,78" name="最大领导">
      <transition g="-13,-23" name="结束" to="end1"/>
   </task>
   <end g="890,273,48,48" name="end1"/>
   <task assignee="#{owner}" form="firstPrepose.do" g="75,154,114,71" name="部门领导">
      <transition g="15,-18" name="任务" to="foreach1"/>
   </task>
   <foreach var="userList"  in="#{userLists}" name="foreach1" g="301,184,48,48">
      <transition name="to join1" to="会签" g="-12,-31"/>
   </foreach>
   <join name="join1" g="519,233,48,48" multiplicity="#{quorum}" >
      <transition name="to end1" to="最大领导" g="-11,-31"/>
   </join>
</process>


点击派发给领导是action

@Action("firstPrepose")
public void firstPrepose(HttpServletRequest request,
HttpServletResponse response, String servid,
String deptcode, String psncode, String daylimit, String is_sms,
String username, String psnid,String backstate) throws SQLException {


ProcessTechnological tech = new ProcessTechnological();
String owner = userName;
String png = "servicePrepose.png";
String id = tech.getProcessIdPs(png);
String taskIdCode ="";
ProcessInstance processInstance = tech.startTech(id, owner);// 启动流程
String forword = "任务";
Map taskParam = new HashMap();
taskParam.put("node1", psncode);
tech.techForword(taskIdCode, forword, taskParam);
         techForword()是调用taskService.completeTask(taskIdCode, str, map);
正常 假如领导同意
再派发给多个人:
@SuppressWarnings("unchecked")
@Action("firstPreposeList")
public void firstPreposeList(HttpServletRequest request,
HttpServletResponse response, String servid,
String deptcode, String psncode, String daylimit, String is_sms,
String username, String psnid,String backstate) throws SQLException {
System.out.println("========servid======" + servid);
// 得到登录用户
String loginId = XUtils.getUser().getLoginId();
String usersql = "select t.login_id , t.login_name login_name  from cs_dss.sc_login_user t where t.login_id = '"+loginId+"'";
Map map = runner.queryForMap(usersql) ;
// 根据login_name获得当前登录用户
userName = map.get("login_name").toString();
try {
ProcessTechnological tech = new ProcessTechnological();
String owner = userName;
String png = "servicePrepose.png";
String id = tech.getProcessIdPs(png);
String taskIdCode ="";
ProcessInstance processInstance = tech.startTech(id, owner);// 启动流程
System.out.println(processInstance.getId()+"服务工单实例Id");
String getIdsql="select t.dbid_ as dbId  from jbpm4_task t where t.execution_id_ = '"+processInstance.getId()+"'";
Map mapId = runner.queryForMap(getIdsql);
taskIdCode = mapId.get("dbId").toString();
System.out.println("=========taskIdCode========" + taskIdCode);
// 以上为流程开始部分并且把他们写到表里
// 以下为自动跳下一个环节,因为流程是由发起问题单时开起。此环节需要流转两个节点
String forword = "任务";
// 通过servid获得派发的所有人名称
String userSqlList = "select t.psn_id psnid from cs_dmcode.dmcode_process_prep_hand_curr t where t.service_id= '"+servid+"'";
List<Map<?,?>> mapList = (List<Map<?, ?>>) runner.queryForMapList(userSqlList);
quorum = mapList.size();// 为join获得数量
userLists = new String();
// 循环得到每个需要派发的人员
for(int i=0; i<mapList.size(); i++){
userLists += (String) mapList.get(i).get("psnid")+",";// 给各个名称添加一个逗号
}
userLists = userLists.substring(0, userLists.length()-1);//去掉最后的一个逗号
    Map<String, Object> variables = new HashMap<String, Object>();
    variables.put("userLists", userLists);
    variables.put("quorum", quorum);
tech.techForword(taskIdCode, forword, variables);


报错了 :javax.el.PropertyNotFoundException: Cannot resolve identifier 'node1'
at de.odysseus.el.tree.impl.ast.AstIdentifier.eval(AstIdentifier.java:86)
at de.odysseus.el.tree.impl.ast.AstEval.eval(AstEval.java:51)
at de.odysseus.el.tree.impl.ast.AstNode.getValue(AstNode.java:28)
at de.odysseus.el.TreeValueExpression.getValue(TreeValueExpression.java:122)
at org.jbpm.pvm.internal.el.UelValueExpression.evaluateInScope(UelValueExpression.java:52)
at org.jbpm.pvm.internal.el.Expression.evaluate(Expression.java:112)
at org.jbpm.pvm.internal.model.ExecutionImpl.initializeAssignments(ExecutionImpl.java:778)
at org.jbpm.jpdl.internal.activity.TaskActivity.execute(TaskActivity.java:107)
at org.jbpm.jpdl.internal.activity.TaskActivity.execute(TaskActivity.java:58)
at org.jbpm.pvm.internal.model.op.ExecuteActivity.perform(ExecuteActivity.java:60)
at org.jbpm.pvm.internal.model.ExecutionImpl.performAtomicOperationSync(ExecutionImpl.java:672)
at org.jbpm.pvm.internal.model.ExecutionImpl.performAtomicOperation(ExecutionImpl.java:632)
at org.jbpm.pvm.internal.model.ExecutionImpl.signal(ExecutionImpl.java:430)
at org.jbpm.pvm.internal.model.ExecutionImpl.signal(ExecutionImpl.java:416)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
at java.lang.reflect.Method.invoke(Method.java:597)
at org.hibernate.proxy.pojo.javassist.JavassistLazyInitializer.invoke(JavassistLazyInitializer.java:197)
at org.jbpm.pvm.internal.model.ExecutionImpl_$$_javassist_5.signal(ExecutionImpl_$$_javassist_5.java)
at org.jbpm.pvm.internal.task.TaskImpl.complete(TaskImpl.java:201)
at org.jbpm.pvm.internal.cmd.CompleteTaskCmd.execute(CompleteTaskCmd.java:65)
at org.jbpm.pvm.internal.cmd.CompleteTaskCmd.execute(CompleteTaskCmd.java:32)
at org.jbpm.pvm.internal.cmd.CompositeCmd.execute(CompositeCmd.java:42)
at org.jbpm.pvm.internal.cmd.CompositeCmd.execute(CompositeCmd.java:34)
at org.jbpm.pvm.internal.svc.DefaultCommandService.execute(DefaultCommandService.java:42)
at org.jbpm.pvm.internal.tx.StandardTransactionInterceptor.execute(StandardTransactionInterceptor.java:50)
at org.jbpm.pvm.internal.svc.EnvironmentInterceptor.executeInNewEnvironment(EnvironmentInterceptor.java:53)
at org.jbpm.pvm.internal.svc.EnvironmentInterceptor.execute(EnvironmentInterceptor.java:40)
at org.jbpm.pvm.internal.svc.RetryInterceptor.execute(RetryInterceptor.java:56)
at org.jbpm.pvm.internal.svc.SkipInterceptor.execute(SkipInterceptor.java:43)
at org.jbpm.pvm.internal.svc.TaskServiceImpl.completeTask(TaskServiceImpl.java:105)
at com.bonc.custserver.process.ProcessTechnological.techForword(ProcessTechnological.java:251)
at com.bonc.custserver.process.ProcessBaseInfo.firstPreposeList(ProcessBaseInfo.java:863)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
at java.lang.reflect.Method.invoke(Method.java:597)
at cn.com.easy.action.EasyAction.execute(EasyAction.java:136)
at cn.com.easy.action.ActionServlet.process(ActionServlet.java:234)
at cn.com.easy.action.AbstractActionServlet.doPost(AbstractActionServlet.java:51)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:637)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:717)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:290)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
at cn.com.easy.filter.CharacterEncodingFilter.doFilter(CharacterEncodingFilter.java:39)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:235)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:233)
at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:191)
at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:127)
at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:102)
at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:109)
at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:298)
at org.apache.coyote.http11.Http11AprProcessor.process(Http11AprProcessor.java:859)
at org.apache.coyote.http11.Http11AprProtocol$Http11ConnectionHandler.process(Http11AprProtocol.java:579)
at org.apache.tomcat.util.net.AprEndpoint$Worker.run(AprEndpoint.java:1555)
at java.lang.Thread.run(Thread.java:619)   jbpm --------------------编程问答-------------------- 顶一个            顶一个顶一个顶一个顶一个  --------------------编程问答-------------------- 你需要给node1参数传值 --------------------编程问答-------------------- --------------------编程问答-------------------- jbpm吧 --------------------编程问答-------------------- el.jar包冲突了,也许你在TOMCAT下没有冲突,部署到WEBLOGIC就有了,那就把这个EL包去掉。
补充:Java ,  Web 开发
CopyRight © 2012 站长网 编程知识问答 www.zzzyk.com All Rights Reserved
部份技术文章来自网络,