jbpm-example
jbpm---example
这些都被传智播客封装了的例子。。我只是抄下来而已 使用: deployProcessDefinition.jsp JbpmContext jbpmContext = JbpmConfiguration.getInstance().createJbpmContext(); DiskFileUpload fileUpload = new DiskFileUpload(); List list = fileUpload.parseRequest(request); Iterator iterator = list.iterator(); FileItem fileItem = (FileItem)iterator.next(); if(fileItem.getContentType().indexOf("application/x-zip-compressed") == -1){ throw new Exception("Only zip format is accepted!"); } try{ WorkflowEngine workflowEngine = ServiceLocator.getWorkflowEngine() String pdname = workflowEngine.deployProcessDefinition(fileItem.getInputStream(),null); out.println("流程定义部署成功:"+pdname); }catch(Exception e){ } jbpmContext.close(); -------------------------------------------- saveQingjiaForm.jsp //注意,先填写请假表单,然后就到这个页面 //这个页面有两个功能,一个是提交给下一个人,一个只是单独保存,而不提交 QingjiaForm qingjiaForm = new QingjiaForm(); qingjiaForm.setApplier((String)session.getAttribute("actorId")); qingjiaForm.setNday(Integer.parseInt(ndays)); qingjiaForm.setReason(reason); if("commit".equals(actionType)){ qingjiaForm.setState(QingjiaForm.SENT); }else{ qingjiaForm.setState(QingjiaForm.INITIAL); } JbpmContext jbpmContext = JbpmConfiguration.getInstance().getCurrentJbpmContext(); jbpmContext.getSession().save(qingjiaForm) ; //先把这个表单放到自己的数据库中 if("commit".equals(actionType)){ //如果是提交,那么需要启动工作流引擎 WorkflowEngine workflowEngine = ServiceLocator.getWorkflowEngine(); Map varMap = new HashMap(); varMap.put("infoid",qingjiaForm.getId()); //因为是请假,那么流程定义的名字肯定是知道的,这里就叫做qingjia //第二个是提交给谁,这个因为在表单填写的时候由用户指定,当然也是传过来的 //String pdname,String starter,String version,Map varMap workflowEngine.startProcess("qingjia",(String)session.getAttribute("actorId"),varMap); } --------listTaskInstances.jsp-->openTask.jsp-------------------- JbpmContext jbpmContext = JbpmConfiguration.getInstance().getCurrentJbpmContext(); Session session = jbpmContext.getSession(); Criteria rootCriteria = session.createCriteria(TaskInstance.class); String pdname = request.getParameter("pdname"); String actorId = request.getParameter("actorId"); String tname = request.getParameter("tname"); String tstate = request.getParameter("tstate"); WorkflowEngine workflowEngine = ServiceLocator.getWorkflowEngine(); WorkitemCriteria workitemCriteria = new WorkitemCriteria(); workitemCriteria.setPdname(pdnane); workitemCriteria.setTname(tname); workitemCriteria.setActorId((String)session.getAttribute("actorId")); String pageNum = request.getParameter("pageNum"); pageNum = pageNum == null || pageNum.equals("")?"0":pageNum; int everyPage = workitemCriteria.getNeveryPage(); int target = Integer.parseInt(pageNum); int startNum = targetPage * everyPage; workitemCriteria.setStart(startNum); workitemCriteria.setStatus(tstate); PagedObject po = workflowEngine.getWorklist(workitemCriteria); pageContext.setAttribute("list",po.getResult()); <c:forEach items="${list}" var="ti"> <a href="<c:url value="/sysadmin/openTask.jsp?tiid=${ti.id}" />"><c:out value="ti.name" /></a> </c:forEach> -------------------------------- OpenTask.jsp 对应办理任务 String tiid = request.getParameter("tiid"); WorkflowEngine workflowEngine.takeWorkitem(null,tiid); pageContext.forward(view+"?tiid="+tiid); ------------------------------------------------ auditQingjiaForm.jsp --->endTask.jsp Long tiid = Long.parseLong(request.getParameter("tiid")); JbpmContext jbpmContext = JbpmConfiguration.getInstance().getCurrentJbpmContext(); TaskInstance ti = jbpmContext.loadTaskInstance(tiid); pageContext.setAttribute("tokenId",ti.getToken().getId()); Long infoid = (Long)ti.getProcessInstance().getContextInstance().getVariable("infoid"); QingjiaForm qingjiaForm = (QingjiaForm)jbpmContext.getSession().get(QingjiaForm.class,infoid); @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ ...有些请假的信息 @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ <input type="hidden" name="tiid" value="<%=tiid%>" /> List list = ti.getTask().getTaskNode().getLeavingTransitions(); pageContext.setAttribute("nextTrans",list); if(list.size()>1){ <select name="nextPath"> <c:forEach items="${nextTrans}" var="nextTran" varStatus="s"> <option value="<c:out value="${nextTran.name}"/>"><c:out value="${nextTran.name}"/></option> </c:forEach> </select> } <input type="submit" value="提交任务" /> ---------------------------------------------- endTask.jsp String tiid = request.getParameter("tiid"); String transitionName = request.getParameter("nextPath"); String actorId = request.getParameter("actorId"); ti.getProcessInstance().getContextInstance().setVariable("currentUser",session.getAttribute("actorId")); WorkflowEngine workflowEngine = ServiceLocator.getWorkflowEngine(); workflowEngine.completeWorkitem(tiid,new NextStep(transitionName.actorId));