activiti java service task 服务任务

我就是我 2022-05-16 10:50 302阅读 0赞
  1. java 服务任务 有三种实现方式
  2. 1. activiti:class 要实现 javaDelegateActivityBehavior
  3. 2. activiti:delegateExpression 也要实现上面两个类
  4. 3. activiti:expression 直接调用javaBean
  5. 第一种方式在前面博客中已经实现过了,这里实现一下23这两个方式
  6. activiti:delegateExpression的实现方式:
  7. 1. bmpn中的serviceTask中引用类
  8. <process id="leaveBill" name="leaveBillprocess" isExecutable="true">
  9. <startEvent id="startevent1" name="Start"></startEvent>
  10. <endEvent id="endevent1" name="End"></endEvent>
  11. <userTask id="usertask1" name="User Task"></userTask>
  12. <sequenceFlow id="flow1" sourceRef="startevent1" targetRef="usertask1"></sequenceFlow>
  13. <serviceTask id="servicetask1" name="Service Task"></serviceTask>
  14. <sequenceFlow id="flow2" sourceRef="usertask1" targetRef="servicetask1" activiti:delegateExpression="${myDelegate}"></sequenceFlow>
  15. <sequenceFlow id="flow3" sourceRef="servicetask1" targetRef="endevent1"></sequenceFlow>
  16. </process>
  17. 2. 定义myDelegate
  18. public class Mydelegate implements JavaDelegate,Serializable{
  19. @Override
  20. public void execute(DelegateExecution execution) {
  21. System.out.println("自定义java类");
  22. }
  23. }
  24. RuntimeService runtimeService = engine.getRuntimeService();
  25. Deployment de = rs.createDeployment().addClasspathResource("test.bpmn").deploy();
  26. ProcessDefinition defi = rs.createProcessDefinitionQuery().deploymentId(de.getId()).singleResult();
  27. Map<String,Object> vars=new HashMap<>();
  28. vars.put("myDelegate", new Mydelegate());
  29. ProcessInstance pi = runtimeService.startProcessInstanceByKey(de.getKey(),vars);
  30. 实现activiti:expression 直接调用javaBean
  31. 1. 定义bmpn文件
  32. <serviceTask id="servicetask2" name="Service Task"activiti:expression="${myBean.print(execution)}" ></serviceTask>
  33. <sequenceFlow id="flow3" sourceRef="servicetask1" targetRef="servicetask2"
  34. activiti:expression="${execution.setVariable('myName',myBean.name)}"></sequenceFlow>
  35. 2. 定义自定义类
  36. public class MyBean implements Serializable{
  37. private static final long serialVersionUID = 4888650505758480822L;
  38. private String name="test";
  39. public String getName() {
  40. return name;
  41. }
  42. public void print(Execution exe) {
  43. System.out.println("执行流id"+exe.getId());
  44. }
  45. }
  46. RuntimeService runtimeService = engine.getRuntimeService();
  47. Deployment de = rs.createDeployment().addClasspathResource("test.bpmn").deploy();
  48. ProcessDefinition defi = rs.createProcessDefinitionQuery().deploymentId(de.getId()).singleResult();
  49. Map<String,Object> vars=new HashMap<>();
  50. vars.put("myBean", new Mydelegate());
  51. ProcessInstance pi = runtimeService.startProcessInstanceByKey(de.getKey(),vars);
  52. runtimeService.getVariable(pi.getId(), "myName");

70

发表评论

表情:
评论列表 (有 0 条评论,302人围观)

还没有评论,来说两句吧...

相关阅读

    相关 [java]spring-task定时任务

    前面两篇博客讲解了Quartz来实现定时任务,不过spring3以后,自己封装了spring的task来实现定时任务,配置起来不要太简单,用起来真的很方便,下面咱们来一起实现一