## 一、Core 包说明

### 概要信息

> 1. 该包可以独立的被二方/三方以 jar 包的形式引入工程, 即可使用 Flowable 引擎,例如枢智业务便是以此方式进行实践.
> 2. 该包中 `src/main/resources/sql` 是 Flowable 引擎会使用的库表结构, 使用前需要执行创建.
> 3. 该包中 `cn/axzo/workflow/core/service` 下的 Service 接口是主要是抽象集成的 API, 业务主要也是使用这些 API.

### 接口描述

```properties
BpmnProcessModelService:流程模型管理
BpmnProcessDefinitionService:流程定义管理
BpmnProcessInstanceService:流程实例管理
BpmnProcessTaskService:流程实例下任务管理
FormModelService:表单模型管理
FormDefinitionService:表单定义管理
FormInstanceService:表单实例管理
```

### 库表描述

> - ACT_RE ：'RE' 表示 repository。这个前缀的表包含了流程定义和流程静态资源（图片，规则，等等）。
> - ACT_RU：'RU' 表示
    runtime。这些运行时的表，包含流程实例，任务，变量，异步任务，等运行中的数据。Flowable只在流程实例执行过程中保存这些数据，在流程结束时就会删除这些记录。这样运行时表可以一直很小速度很快。
> - ACT_HI：'HI' 表示 history。这些表包含历史数据，比如历史流程实例，变量，任务等等。
> - ACT_GE：'GE' 表示 general。通用数据，用于不同场景下。
> - ACT_ID: 'ID' 表示 identity (组织机构)。这些表包含标识的信息，如用户，用户组，等等。

## 二、RocketMQ 使用说明

1. 服务方需要主动引入二方包

> ```xml
>        <dependency>
>            <groupId>cn.axzo.workflow</groupId>
>            <artifactId>workflow-engine-core</artifactId>
>            <version>1.0.1-SNAPSHOT</version>
>        </dependency>
>        <dependency>
>            <groupId>cn.axzo.framework</groupId>
>            <artifactId>axzo-mybatisplus-spring-boot-starter>    
>        </artifactId>
>        </dependency>
>        <dependency>
>            <groupId>cn.axzo.framework.rocketmq</groupId>
>            <artifactId>axzo-common-rocketmq</artifactId>
>        </dependency>
> ```

2. 服务方主动配置Topic 监听器

> ```java
>    @Configuration(proxyBeanMethods = false)
>    @ConditionalOnClass(RocketMQTemplate.class)
>    @RocketMQMessageListener(topic = DEFAULT_EVENT + "${spring.profiles.active}",
>            consumerGroup = "${spring.application.name}-${spring.profiles.active}"
>    )
>    public static class DefaultListener extends BaseListener implements RocketMQListener<MessageExt> {
>
>        @Autowired
>        private EventConsumer eventConsumer;
>
>        @Override
>        public void onMessage(MessageExt message) {
>            super.onEvent(message, eventConsumer);
>        }
>    }
>```

3. 配置 application.yml

> ```yaml
> rocketmq:
>   name-server: 114.116.202.128:9876
>   producer:
>     group: yoke-dev
>     send-message-timeout: 10000
> ```

4. 使用说明

- mysql-connector-java 目前只能使用8.0.20 版本,否则 flowable 引擎内部会启动异常
- 启动类需要增加包路径扫描 @SpringBootApplication(scanBasePackages="cn.axzo.workflow")
- Mybatis Mapper 文件扫描: MapperScan({"cn.axzo.workflow.core.**.mapper"})

```java
// 接入使用示例
@SpringBootApplication(exclude = RabbitAutoConfiguration.class,
        scanBasePackages = "cn.axzo.workflow")
@MapperScan({"cn.axzo.workflow.core.**.mapper"})
public class YokeApplication {}
```
