jbpm4.4请假流程

assignee =“mike”                            只能分配给用户,而不能是组

candidate-groups="sales"    ,sales是group常量    

 candidate-groups="#{dev}"          dev在map变量里

 

task候选人

任务可能被分配给一组用户。 其中的一个用户应该接受这个任务并完成它。

表 6.11. 任务属性:

属性类型默认值是否必填描述
candidate-groups表达式 可选一个使用逗号分隔的组id列表。 所有组内的用户将会成为这个任务的 候选人。
candidate-users表达式 可选一个使用逗号分隔的用户id列表。 所有的用户将会成为这个任务的候选人。


 

 

 

<processname="leave"xmlns="http://jbpm.org/4.4/jpdl">

<startg="196,25,48,48"name="start1">

<transitionto="approval request"/>

</start>

<taskform="qhrequest.jsp"g="172,118,92,52"name="approval request"candidate-groups="sales">           //sales是group常量

<!-- //*****candidate-groups="#{dev}" 采用JBPM用户组进行处理任务 candidate-groups="#{dev}"  dev在map变量里

//*****assignee="manager" 采用指定manager用户进行处理任务  ,assignee只能分配给用户,manager是用户,而不能是组

-->

<transitionto="manager approval"/>

</task>

<taskassignee="manager"form="qhmanager.jsp"g="175,217,92,52"name="manager approval">

<transitiong="-32,-8"name="approval"to="exclusive1"/>

<transitiong="128,221;124,165:-42,-18"name="reject"to="approval request"/>

</task>

<decisionexpr="#{day > 3 ? 'administrator approval' : 'end'}" g="200,308,48,48"name="exclusive1">

<transitiong="-39,-10"name="end"to="end1"/>

<transitiong="339,342:-71,-17"name="administrator approval" to="administrator approval"/>

</decision>

<taskassignee="administrator"form="qhboss.jsp"g="294,375,92,52"name="administrator approval">

<transitiong="339,457:"name="approval"to="end1"/>

</task>

<endg="199,445,48,48"name="end1"/>

</process>

 

 

 

2、qhlogin.jsp:
HttpSession session = request.getSession();
session.setAttribute("username", request.getParameter("username"));
response.sendRedirect("qhindex.jsp");
登录页面,验证用户登录,登录成功返回qhindex.jsp
3、qhindex.jsp
<%@ page language="java" contentType="text/html; charset=UTF-8"%>
< %@page import="java.util.*,org.jbpm.api.*,org.jbpm.api.task.*" %>
<%
ProcessEngine processEngine = Configuration.getProcessEngine();
RepositoryService repositoryService = processEngine.getRepositoryService();
ExecutionService executionService = processEngine.getExecutionService();
TaskService taskService = processEngine.getTaskService();
String username = (String) session.getAttribute("username");
List<ProcessDefinition> pdList = repositoryService.createProcessDefinitionQuery().list();
List<ProcessInstance> piList = executionService.createProcessInstanceQuery().list();
//***指对指定用户处理任务列表
List<Task> taskList = taskService.findPersonalTasks(username);
//***指对指定用户组处理任务列表
List<Task> groupTaskList = taskService.findGroupTasks(username);
%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" " http://www.w3.org/TR/html4/loose.dtd">
<html>
  <head>
    <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
    <title>index</title>
  </head>
  <body>
    <a href="qhdeploy.jsp">发布新流程</a>&nbsp;[username: <%=username %>]<a href="qhlogin.jsp">登陆</a>

    <table border="1" width="100%">
      <caption>流程定义</caption>
      <thead>
        <tr>
          <td>id</td>
          <td>name</td>
          <td>version</td>
          <td>&nbsp;</td>
        </tr>
      </thead>
      <tbody>
<%
 for (ProcessDefinition pd : pdList) {
%>
     <tr>
       <td><%=pd.getId() %></td>
       <td><%=pd.getName() %></td>
       <td><%=pd.getVersion() %></td>
       <td>
         <a href="qhremove.jsp?id=<%=pd.getDeploymentId() %>">remove</a>
         &nbsp;|&nbsp;
         <a href="qhstart.jsp?id=<%=pd.getId() %>">start</a>
       </td>
     </tr>
<%
 }
%>
   </tbody>
 </table>

    <table border="1" width="100%">
      <caption>流程实例</caption>
      <thead>
        <tr>
          <td>id</td>
          <td>activity</td>
          <td>state</td>
          <td>&nbsp;</td>
        </tr>
      </thead>
      <tbody>
<%
 for (ProcessInstance pi : piList) {
%>
     <tr>
       <td><%=pi.getId() %></td>
       <td><%=pi.findActiveActivityNames() %></td>
       <td><%=pi.getState() %></td>
       <td><a href="qhview.jsp?id=<%=pi.getId() %>">view</a></td>
     </tr>
<%
 }
%>
   </tbody>
 </table>

    <table border="1" width="100%">
      <caption>待办任务</caption>
      <thead>
        <tr>
          <td>id</td>
          <td>name</td>
          <td>&nbsp;</td>
        </tr>
      </thead>
      <tbody>
<%
 for (Task task : taskList) {
%>
     <tr>
       <td><%=task.getId() %></td>
       <td><%=task.getName() %></td>
       <td><a href="<%=task.getFormResourceName() %>?id=<%=task.getId() %>">view</a></td>
     </tr>
<%
 }
%>
   </tbody>
 </table>
  </body>
</html>
3-1、qhdeploy.jsp:发布新流程
<%@page import="java.util.*,org.jbpm.api.*,java.util.zip.*"%>
<%
 ProcessEngine processEngine = Configuration.getProcessEngine();
 RepositoryService repositoryService = processEngine
   .getRepositoryService();

 //repositoryService.createDeployment().addResourceFromClasspath("leave.jpdl.xml").deploy();
 ZipInputStream zis = new ZipInputStream(this.getClass()
   .getResourceAsStream("/leave.zip"));
 repositoryService.createDeployment()
   .addResourcesFromZipInputStream(zis).deploy();
 response.sendRedirect("qhindex.jsp");
%>
3-2、qhstart.jsp:开始启动流程
<%@page import="java.util.*,org.jbpm.api.*,java.util.*"%>
<%
 ProcessEngine processEngine = Configuration.getProcessEngine();
 ExecutionService executionService = processEngine
   .getExecutionService();
//***********对指定用户进行启动流程
 Map map = new HashMap();
 map.put("owner", session.getAttribute("username"));

//***********用JPBM用户组启动流程
 Map map = new HashMap();
 IdentityService identityService = processEngine.getIdentityService();
 identityService.createGroup("dev");
 identityService.createUser("user1", "user1", "user1");
 identityService.createUser("user2", "user2", "user2");
 identityService.createMembership("user1", "dev");
 identityService.createMembership("user2", "dev");
 map.put("dev",identityService.findGroupById("dev").getId());
 executionService.startProcessInstanceById(request
   .getParameter("id"), map);
 response.sendRedirect("qhindex.jsp");
%>
3-3、qhview.jsp查看流程视图执行节点:
3-3-1qhview.jsp:
<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
< %@page import="org.jbpm.api.*,java.util.*,org.jbpm.api.model.*" %>
<%
 String id = request.getParameter("id");
 ProcessEngine processEngine = Configuration.getProcessEngine();
 RepositoryService repositoryService = processEngine.getRepositoryService();
 ExecutionService executionService = processEngine.getExecutionService();
 ProcessInstance processInstance = executionService.findProcessInstanceById(id);
 Set<String> activityNames = processInstance.findActiveActivityNames();
 ActivityCoordinates ac = repositoryService.getActivityCoordinates(processInstance.getProcessDefinitionId(),activityNames.iterator().next());
%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" " http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>Insert title here</title>
</head>
<body>
<img src="qhpic.jsp?id=<%=id %>" style="position:absolute;left:0px;top:0px;">
<div style="position:absolute;border:1px solid red;left:<%=ac.getX()%>px;top:<%=ac.getY()%>px;width:<%=ac.getWidth()%>px;height:<%=ac.getHeight()%>px;"></div>
</body>
</html>
3-3-2、qhpic.jsp 画出流程图
< %@page import="org.jbpm.api.*,java.io.*"%>
<%
 ProcessEngine processEngine = Configuration.getProcessEngine();
 RepositoryService repositoryService = processEngine
   .getRepositoryService();
 ExecutionService executionService = processEngine
   .getExecutionService();
 String id = request.getParameter("id");
 ProcessInstance processInstance = executionService
   .findProcessInstanceById(id);
 String processDefinitionId = processInstance
   .getProcessDefinitionId();
 ProcessDefinition processDefinition = repositoryService
   .createProcessDefinitionQuery().processDefinitionId(
     processDefinitionId).uniqueResult();
 InputStream inputStream = repositoryService.getResourceAsStream(processDefinition.getDeploymentId(),"leave.png");
 byte[] b = new byte[1024];
 int len = -1;
 while ((len = inputStream.read(b, 0, 1024)) != -1) {
  response.getOutputStream().write(b, 0, len);
 }
%>
3-4、进入表单处理任务<a href="<%=task.getFormResourceName() %>?id=<%=task.getId() %>">view</a>
表单定义:
leave.jpdl.xml
   <task form="qhrequest.jsp" g="172,118,92,52" name="申请" candidate-groups="#{dev}"//指定用户组办理任务 ||assignee="manager" //指定用户办理任务>
    <transition to="经理审批"/>
   </task>
------------------------------------------------
qhrequest.jsp:
  <fieldset>
    <legend>申请</legend>
    <form action="qhsubmit.jsp" method="post">
      <input type="hidden" name="taskId" value="${param.id}">
       申请人:<input type="text" name="owner" value="${sessionScope['username']}"/><br/>
   请假时间:<input type="text" name="day" value=""/><br/>
     请假原因:<textarea name="reason"></textarea><br/>
    <input type="submit"/>
    </form>
  </fieldset>

3-5、qhsubmit.jsp处理表单任务:
<%@page import="java.util.*,org.jbpm.api.*"%>
<%
 ProcessEngine processEngine = Configuration.getProcessEngine();
 TaskService taskService = processEngine.getTaskService();

 String taskId = request.getParameter("taskId");
 String owner = request.getParameter("owner");
 int day = Integer.parseInt(request.getParameter("day"));
 String reason = request.getParameter("reason");
 Map map = new HashMap();
 map.put("day", day);
 map.put("reason", reason);
 taskService.completeTask(taskId, map);
 response.sendRedirect("qhindex.jsp");
%>

 4、经理对请假进行审批:
index.jsp---进入表单处理任务<a href="<%=task.getFormResourceName() %>?id=<%=task.getId() %>">view</a>
---------------------------------------
manager.jsp
<%
 ProcessEngine processEngine = Configuration.getProcessEngine();
 TaskService taskService = processEngine.getTaskService();
 String taskId = request.getParameter("id");
 Task task = taskService.getTask(taskId);
%>
<body>
  <fieldset>
    <legend>经理审核</legend>
    <form action="qhsubmit_manager.jsp" method="post">
      <input type="hidden" name="taskId" value="${param.id}">
      申请人:<%=taskService.getVariable(taskId, "owner") %><br/>
  请假时间:<%=taskService.getVariable(taskId, "day") %><br/>
    请假原因:<%=taskService.getVariable(taskId, "reason") %><br/>
    <input name="result" type="submit" value="批准"/><input name="result" type="submit" value="驳回"/>
    </form>
  </fieldset>
----------------------------------------------
qhsubmit_manager.jsp  处理经理审批结果
< %@page contentType="text/html;charset=UTF-8" %>
< %@page import="java.util.*,org.jbpm.api.*"%>
<%
 ProcessEngine processEngine = Configuration.getProcessEngine();
 TaskService taskService = processEngine.getTaskService();
 String taskId = request.getParameter("taskId");
 String result = request.getParameter("result");
 result = new String(result.getBytes("ISO-8859-1"), "UTF-8");
 taskService.completeTask(taskId, result);
 response.sendRedirect("qhindex.jsp");
%>
5、老板对请假天数大于三天的流程进行审批:
index.jsp---进入表单处理任务<a href="<%=task.getFormResourceName() %>?id=<%=task.getId() %>">view</a>
--------------------------------------------------
< %@page import="org.jbpm.api.*,org.jbpm.api.task.*" %>   
<%
 ProcessEngine processEngine = Configuration.getProcessEngine();
 TaskService taskService = processEngine.getTaskService();
 String taskId = request.getParameter("id");
 Task task = taskService.getTask(taskId);
%>
<fieldset>
    <legend>老板审核</legend>
    <form action="qhsubmit_boss.jsp" method="post">
      <input type="hidden" name="taskId" value="${param.id}">
      申请人:<%=taskService.getVariable(taskId, "owner") %><br/>
  请假时间:<%=taskService.getVariable(taskId, "day") %><br/>
    请假原因:<%=taskService.getVariable(taskId, "reason") %><br/>
    <input type="submit" value="批准"/>
    </form>
  </fieldset>
----------------------------------------------
< %@page import="java.util.*,org.jbpm.api.*"%>
<%
 ProcessEngine processEngine = Configuration.getProcessEngine();
 TaskService taskService = processEngine.getTaskService();
 String taskId = request.getParameter("taskId");
 taskService.completeTask(taskId);
 response.sendRedirect("qhindex.jsp");
%>

 

  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值