activiti7-3-与业务系统关联

这里写目录标题

  • 1. 思考
    • 1.1 关联方式
  • 2. 根据流程定义的key启动一个流程实例
    • 2.1 确认流程是否部署
    • 2.2 查看流程定义
    • 2.3 指定bussinessKey启动流程实例
    • 2.4 观察act_ru_execution

1. 思考

我们可以想一下在一个业务系统中,例如我们公司有一套系统,里面有请假流程、调岗流程、调薪流程、面试流程。
例如,请假流程,那在业务系统里面  你是不是得有请假表,然后有相关请假的内容,
那问题来了   这些相关的请假的内容是存在Activiti的这25张表里面还是存在我们的业务系统里面呢?
结论:肯定是存在我们的公司业务系统之中,因为你请假相关的内容可能会有很多.

下面DB1代表公司的业务系统,DB2代表activiti的25张表的库
例如,请假内容可能会有:

  • 请假当事人
  • 请假开始时间
  • 请假结束时间
  • 事由
  • 状态
  • 类型

而这些信息,是不会在activiti里面的,而是要存在我们自己的业务系统之中
现在要保存一个请假的信息,这些就要保存到DB1里面去,这个DB1里面要有一张请假表(holiday),将来有一个员工发起请假,就应该往里面存一条记录,但,这条记录和activiti有关系吗?很明显 毫无关联。

那activiti想要控制这个请假流程,就要和业务系统进行关联,就涉及到关联方式

1.1 关联方式

在DB1中holiday每条记录都有一个id,也就是主键,然后存入activiti的bussinessKey
关键就是在activiti这25张表里面,哪些表或者哪些字段是与业务系统相关联的,我这里直接找出来
在表act_ru_execution这个表中存在一个bussinessKey,这就可以进行关联。当然不仅仅是这张表,其他表应该也有,但这张表是最重要也是最核心的。

2. 根据流程定义的key启动一个流程实例

2.1 确认流程是否部署

通过查看act_ge_bytearray表可以看到

2.2 查看流程定义

通过查看act_re_procdef表

2.3 指定bussinessKey启动流程实例

public static void main(String[] args){
        //1.获得引擎
        ProcessEngine processEngine = ProcessEngines.getDefaultProcessEngine();
        //2.得到runtimeService
        RuntimeService runtimeService = processEngine.getRuntimeService();
        //3.准备启动流程实例,同时指定业务标识businessKey,其本身就是请假单id
        ProcessInstance instance = runtimeService.startProcessInstanceByKey("holiday", "1001");
        System.out.println(instance.getBusinessKey());
    }

2.4 观察act_ru_execution

如果bussinessKey有值,即为关联成功

你可能感兴趣的:(activiti7,activiti,java,maven,idea)