首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 软件管理 > 软件架构设计 >

jbpm4.3惯用操作

2012-10-16 
jbpm4.3常用操作?//得到流程定义ListProcessDefinition pdL repositoryService.createProcessDefiniti

jbpm4.3常用操作

?

//得到流程定义
List<ProcessDefinition> pdL = repositoryService.createProcessDefinitionQuery().list();
//流程实例
List<ProcessInstance> piL = executionService.createProcessInstanceQuery().list();
//当前用户的任务列表
List<Task> tL = taskService.findGroupTasks(username);
List<Task> tLByPerson = taskService.findPersonalTasks(username);

?

1、执行流程
?? 根据类ProcessInstance的属性ID,执行流程
???String pid = processInstance.getId();
?? executionService.signalExecutionById(pid);

?? //获取指定节点的Execution

?

?? Execution?exec?=?processInstance.findActiveExecutionIn(??}??
??else {??
????? for (String name: activityNames) {??
????? System.out.println("activity name is "+name);???
??????}??
??}

?

1、设置添加变量

 executionService.setVariable(pid, "content","task2");

?

? Map<String, Object> variables = new HashMap<String, Object>();
? variables.put("result", "ok");
? taskService.setVariables(task.getId(), variables);

?

1、获取变量

 Set<String> variableNames = taskService.getVariableNames(taskDbid);
 Map<String, Object> variables = taskService.getVariables(taskDbid, variableNames);

?

?

?

?

2、查找所有任务

 List<Task> ts = jbpmTemplate.getTaskService().createTaskQuery().list();
???? for(Task t : ts){
???? ?if(t.getName().equals("task1")){ 
???????jbpmTemplate.completeTask(t.getId());//通过任务id让任务向下流转

??   Map map = HashMap();

??????? map.put("day",day);

    jbpmTemplate.getTaskService().completeTask(t.getId(),map);//可以传参数
??}

????} ?? }??

?

?

3、通过任务ID取指定变量的值

 String leaveId = (String) jbpmTemplate.getVariableByTaskId(taskId, "leaveId");

 String leaveId = (String) taskService.getVariable(taskId, "leaveId");

? //通过流程实例id取指定变量的值

? String pid = processInstance.getId();
??String answer = (String) executionService.getVariable(pid, "answer");

?

4、判断流程是否执行在某个节点

 processInstance.isActive("submit document");

?

5、任务转交

1.设置candidate-groups="lingo"
2.lingo可以通过findGroupsTasks()看到共享任务
3.使用assignTask(taskid, "admin")将这个任务转交给admin
4.admin通过findPersonalTasks()看到待办任务
5.admin通过completeTask()完成任务。
如果按照上面的步骤,jbpm-4.3下测试是通过的,下面是测试代码:
??????? ProcessInstance processInstance = executionService
??????????? .startProcessInstanceByKey("X0603CandidateGroupTest");

??????? List<Task> taskList = taskService.findGroupTasks("lingo");
??????? assertEquals(1, taskList.size());

??????? Task task = taskList.get(0);
??????? taskService.assignTask(task.getId(), "admin");
??????? taskList = taskService.findPersonalTasks("admin");
??????? assertEquals(1, taskList.size());
??????? taskService.completeTask(task.getId());

?

6、多条件判断

? expr="#{a == 1 && b == 1}"

?

7、获取一个流程中的个人任务

public void assign(Assignable assignable, OpenExecution execution) { TaskImpl taskImpl = (TaskImpl)assignable; ExecutionImpl executionImpl = (ExecutionImpl)execution;}

?

?

?

热点排行