1. 概要

在处理流程时,比如在启动流程之前,启动流程之后,审批任务之前,审批任务之后,在这件点上面,用户想实现一些自己的业务逻辑,对流程进行扩展。比如用户希望在启动时,将流程的表单数据和当前流程实例进行一个关联,将数据保存下来,这个时候可以实现平台的接口将数据进行存储。

2. 实现方法

我们在平台中定义了一个接口类,用户可以对这个接口类进行扩展,然后再流程中做配置。

2.1 接口类定义

com.redxun.bpm.activiti.processhandler.ProcessHandler

接口定义类:

  1. public interface ProcessHandler {
  2. String getName();
  3. //结束时执行
  4. default void endHandle(BpmInst bpmInst) {
  5. }
  6. /**
  7. * 流程启动之后执行。
  8. * @param processConfig
  9. * @param cmd
  10. * @param bpmInst
  11. * @return
  12. */
  13. default void processStartAfterHandle(ProcessConfig processConfig, ProcessStartCmd cmd, BpmInst bpmInst) {
  14. }
  15. /**
  16. * 流程启动之前执行。
  17. * ProcessStartCmd
  18. *
  19. * @param cmd
  20. */
  21. default void processStartPreHandle(ProcessStartCmd cmd) {
  22. }
  23. /**
  24. * 当前任务处理
  25. *
  26. * @param cmd 当前任务执行的
  27. * @param nodeId
  28. * @param busKey
  29. */
  30. default void taskAfterHandle(IExecutionCmd cmd, String nodeId, String busKey) {
  31. }
  32. /**
  33. * 当前任务处理
  34. *
  35. * @param cmd 当前任务执行的
  36. * @param task
  37. * @param busKey
  38. */
  39. default void taskPreHandle(IExecutionCmd cmd, BpmTask task, String busKey) {
  40. }
  41. }

接口类中定义了4个方法,开发者可以根据需要实现其中的一个或几个方法。

2.2 接口实现

  1. @Component
  2. public class DemoProcessHandler implements ProcessHandler {
  3. @Override
  4. public String getName() {
  5. return "测试流程处理";
  6. }
  7. }

可以这样实现,但是这个实现没有实现任何功能而已。

2.3 在流程设计器中进行配置

在流程全局设置中,点击编程扩展。

文档更新时间: 2020-09-30 15:25   作者:zyg