/** 结束活动 */ public synchronized void finish( Session session, String personExpression, String username, String userid) throws Exception { // 解析传递过来的对象属性 JSONArray array = new JSONArray(personExpression); JSONObject firstObj = array.getJSONObject(0); final String data = firstObj.getString("data"); JSONObject dataObj = new JSONObject(data); // 把前台传过来的,活动对应的人员,转换成json串 state = "结束"; // 设置完成人,完成时间 this.setPerson(username); this.setUserid(userid); this.setFinishTime(new Date()); // 根据每个转移创建任务和活动 ProcessDef procDef = ProcessDefManager.getInstance().getProcessDef(processName); ActivityDef actDef = procDef.getActivity(defid); for (DiversionDef divDef : actDef.getSplits()) { ActivityDef tailDef = divDef.getTail(); // 给流程中的变量赋值 this.process.putVar(dataObj); // 如果不满足表达式条件,继续下一个 String expression = divDef.getExpression(); if (expression != null && !expression.equals("") && !this.process.getExpressionValue(expression)) { continue; } // 根据人员表达式,产生人员对照表 String exp = tailDef.getPersonExpression(); if (dataObj.has(tailDef.getName())) { String pExp = dataObj.getString(tailDef.getName()); exp = pExp; } PersonService.Run(exp, session); ActivityInstance actIns = new ActivityInstance(tailDef, process, exp, username, userid, this); session.save(actIns); } session.update(this); }