内容
使用变量
指定任务分配者
指定任务候选人
任务变量
1。 变量
流程变量在流程外部,可以通过ExcutionService提供的方法进行访问
缺省情况下,变量会创建在顶级的流程实例中
流程变量可以动态创建
Jbpm支持的变量类型:
java.lang.String、java.lang.Long、java.lang.Double、
java.util.Date、java.lang.Boolean、java.lang.Character、java.lang.Byte、java.lang.Short、java.lang.Integer、
java.lang.Float、byte[]、char[]、
hibernate entity with a long it 、
hibernate entity with a string id 、
serializable
2。指定任务分配者
1。使用assignee
2。用法
assignee=“username”
assignee=“#{username}.
测试未指定任务分配者:
流程定义:
<task assignee="#{username}" g="159,176,92,52" name="check">
<transition g="-23,-13" name="reject" to="modify"/>
<transition name="approval" to="inform" g="-59,-17"/>
</task>
测试代码:
ProcessInstance processInstance = executionService.startProcessInstanceByKey("dishpub");
在流程启动时未加入流程中,报下列错误:
org.jbpm.api.JbpmException: script evaluation error: javax.el.PropertyNotFoundException: Cannot find property username
正确:
Map<String,Object> variables=new HashMap<String,Object>();
variables.put("username","zhujh");
ProcessInstance processInstance = executionService.startProcessInstanceByKey("dishpub",variables);
3。指定任务候选人
1。任务可以分配给一组用户
使用 candidate-groups,candidate-users
用法类似于assignee
用法
candidate-groups =“groupname”
candidate-groups =“#{groupname}”
例子:
流程定义:
<task candidate-groups="manager" g="159,176,92,52" name="check">
<transition g="-23,-13" name="reject" to="modify"/>
<transition name="approval" to="inform" g="-59,-17"/>
</task>
测试代码:
public class dishpubTest extends JbpmTestCase {
String deploymentId;
String manager;
protected void setUp() throws Exception {
super.setUp();
deploymentId = repositoryService.createDeployment()
.addResourceFromClasspath("org/dishweb/process/dishpub.jpdl.xml")
.deploy();
//创建用户
identityService.createUser("zjh", "zhujh", "zhu");
//创建用户组
manager=identityService.createGroup("manager");
//将用户和用户组关联
identityService.createMembership("zjh", manager);
}
protected void tearDown() throws Exception {
repositoryService.deleteDeploymentCascade(deploymentId);
//删除用户
identityService.deleteUser("zjh");
//删除用户组
identityService.deleteGroup(manager);
super.tearDown();
}
public void testServicesTest() {
ProcessInstance processInstance = executionService.startProcessInstanceByKey("dishpub");
List<Task> taskList=taskService.findGroupTasks("zjh");
System.out.println(taskList.size());
}
长度为1
2。candidate-groups =“#{groupname}”
Map<String,Object> variables=new HashMap<String,Object>();
variables.put("managerGroup", "manager");
ProcessInstance processInstance = executionService.startProcessInstanceByKey("dishpub",variables);
可以将任务分配给多个人,需要人员和组绑定关系,其中一个执行完毕流程执行完毕
//创建用户
identityService.createUser("zjh", "zhujh", "zhu");
identityService.createUser("lh", "zhujh", "zhu");
//创建用户组
manager=identityService.createGroup("manager");
//将用户和用户组关联
identityService.createMembership("zjh", manager);
identityService.createMembership("lh", manager);