流程配置:项目中工作流引入和流程触发
一、使用工作流需要依赖的包和设置
(一)工作流需要依赖的模块
1、需在 pom.xml 中增加 workflow、sql-record 和 trigger 相关模块的依赖
- workflow:工作流运行核心模块
- sql-record:监听流程发布以后对应模型的增删改监听
- trigger:异步任务调度模块
<dependency>
    <groupId>pro.shushi.pamirs.workflow</groupId>
    <artifactId>pamirs-workflow-api</artifactId>
</dependency>
<dependency>
    <groupId>pro.shushi.pamirs.workflow</groupId>
    <artifactId>pamirs-workflow-core</artifactId>
</dependency>
<dependency>
    <groupId>pro.shushi.pamirs.core</groupId>
    <artifactId>pamirs-sql-record-core</artifactId>
</dependency>
<dependency>
    <groupId>pro.shushi.pamirs.core</groupId>
    <artifactId>pamirs-trigger-core</artifactId>
</dependency>
<dependency>
    <groupId>pro.shushi.pamirs.core</groupId>
    <artifactId>pamirs-trigger-bridge-tbschedule</artifactId>
</dependency>2、在 application.yml 中增加对应模块的依赖以及 sql-record 路径以及其他相关设置
pamirs:
...
  record:
    sql:
      #改成自己路径
      store: /opt/pamirs/logs
...
  boot:
    init: true
    sync: true
    modules:
...
      - sql_record
      - trigger
      - workflow
...
  sharding:
    define:
      data-sources:
        ds:
          pamirs
      models:
        "[trigger.PamirsSchedule]":
          tables: 0..13
  event:
    enabled: true
    schedule:
      enabled: true
      # ownSign区分不同应用
      ownSign: demo
    rocket-mq:
      # enabled 为 false情况不用配置
      namesrv-addr: 192.168.6.2:19876
    trigger:
      auto-trigger: true注:更多 YAML 配置请前往 Module API 查阅。
二、触发方式
(一)自动触发方式
在流程设计器中设置触发方式,如果设置了代码触发方式则不会自动触发
(二)代码调用方式触发
1、再流程设计器中触发设置中,设置为是否人工触发设置为是

2、查询数据库获取该流程的编码

3、在代码中调用
/**
     * 触发⼯作流实例
     */
private Boolean startWorkflow(WorkflowD workflowD, IdModel modelData) {
    WorkflowDefinition workflowDefinition = new WorkflowDefinition().queryOneByWrapper(
        Pops.<WorkflowDefinition>lambdaQuery()
        .from(WorkflowDefinition.MODEL_MODEL)
        .eq(WorkflowDefinition::getWorkflowCode, workflowD.getCode())
        .eq(WorkflowDefinition::getActive, 1)
    );
    if (null == workflowDefinition) {
        // 流程没有运⾏实例
        return Boolean.FALSE;
    }
    String model = Models.api().getModel(modelData);
    //⼯作流上下⽂
    WorkflowDataContext wdc = new WorkflowDataContext();
    wdc.setDataType(WorkflowVariationTypeEnum.ADD);
    wdc.setModel(model);
    wdc.setWorkflowDefinitionDefinition(workflowDefinition.parseContent());
    wdc.setWorkflowDefinition(workflowDefinition);
    wdc.setWorkflowDefinitionId(workflowDefinition.getId());
    IdModel copyData = KryoUtils.get().copy(modelData);
    // ⼿动触发创建的动作流,将操作⼈设置为当前⽤户,作为流程的发起⼈
    copyData.setCreateUid(PamirsSession.getUserId());
    copyData.setWriteUid(PamirsSession.getUserId());
    String jsonData = JsonUtils.toJSONString(copyData.get_d());
    //触发⼯作流 新增时触发-onCreateManual 更新时触发-onUpdateManual
    Fun.run(WorkflowModelTriggerFunction.FUN_NAMESPACE, "onCreateManual", wdc, msgId, jsonData);
    return Boolean.TRUE;
}