指定方式:
1),直接指定某人,在.jpdl.xml中写:assignee="张三"
2),使用流程变量,在.jpdl.xml中写:assignee="#{manager}"
3),使用类(这时,不需要将将该属性宣城none),在.jpdl.xml中写:
<assignment-handler class="com.njupt.task.AssignmentHandlerImpl"/>
4),processEngine.getTaskService().assignTask(taskId, userId); //重新指定办理人
以下分点进行说明
1、 对于2),其源代码如下:
package com.njupt.task; import java.io.InputStream; import java.util.HashMap; import java.util.Map; import org.jbpm.api.Configuration; import org.jbpm.api.ProcessEngine; import org.jbpm.api.ProcessInstance; import org.jbpm.api.task.Task; import org.junit.Test; public class ProcessTest { private ProcessEngine processEngine = Configuration.getProcessEngine(); @Test public void test() throws Exception { // 1,部署流程定义 InputStream in = getClass().getResourceAsStream("test.jpdl.xml"); processEngine.getRepositoryService()// .createDeployment()// .addResourceFromInputStream("test.jpdl.xml", in)// .deploy(); // 2,启动流程实例 Map<String, Object> variables = new HashMap<String, Object>(); variables.put("manager", "李经理");//这里就对应了我们指定的#{manager} ProcessInstance pi = processEngine.getExecutionService().startProcessInstanceByKey("test", variables); } }
2、对于3),4)起源代码如下
1>首先书写处理人的处理类
package com.njupt.task; import org.jbpm.api.model.OpenExecution; import org.jbpm.api.task.Assignable; import org.jbpm.api.task.AssignmentHandler; public class AssignmentHandlerImpl implements AssignmentHandler { // 计算并指定任务的办理人 @Override public void assign(Assignable assignable, OpenExecution execution) throws Exception { System.out.println("---> AssignmentHandlerImpl.assign()"); // 计算办理人 String userId = "赵经理+++"; // 指定办理人 assignable.setAssignee(userId); // // assignable.addCandidateUser("经理AA"); // assignable.addCandidateUser("经理BB"); // assignable.addCandidateUser("经理CC"); } }2>编写流程设计的测试类
package com.njupt.task; import java.io.InputStream; import org.jbpm.api.Configuration; import org.jbpm.api.ProcessEngine; import org.jbpm.api.ProcessInstance; import org.junit.Test; public class ProcessTest { private ProcessEngine processEngine = Configuration.getProcessEngine(); @Test public void test() throws Exception { // 1,部署流程定义 InputStream in = getClass().getResourceAsStream("test.jpdl.xml"); processEngine.getRepositoryService()// .createDeployment()// .addResourceFromInputStream("test.jpdl.xml", in)// .deploy(); // 2,启动流程实例 ProcessInstance pi = processEngine.getExecutionService().startProcessInstanceByKey("test"); } // 重新分配任务(重新指定办理人) @Test public void testAssignTask() throws Exception { String taskId = "270009"; String userId = "赵经理++++++"; processEngine.getTaskService().assignTask(taskId, userId); } }