一、Core 包说明
概要信息
- 该包可以独立的被二方/三方以 jar 包的形式引入工程, 即可使用 Flowable 引擎,例如枢智业务便是以此方式进行实践.
- 该包中
src/main/resources/sql 是 Flowable 引擎会使用的库表结构, 使用前需要执行创建.
- 该包中
cn/axzo/workflow/core/service 下的 Service 接口是主要是抽象集成的 API, 业务主要也是使用这些 API.
接口描述
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 使用说明
- 服务方需要主动引入二方包
<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>
- 服务方主动配置Topic 监听器
@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);
}
}
- 配置 application.yml
rocketmq:
name-server: 114.116.202.128:9876
producer:
group: yoke-dev
send-message-timeout: 10000
- 使用说明
- mysql-connector-java 目前只能使用8.0.20 版本,否则 flowable 引擎内部会启动异常
- 启动类需要增加包路径扫描 @SpringBootApplication(scanBasePackages="cn.axzo.workflow")
- Mybatis Mapper 文件扫描: MapperScan({"cn.axzo.workflow.core.**.mapper"})
// 接入使用示例
@SpringBootApplication(exclude = RabbitAutoConfiguration.class,
scanBasePackages = "cn.axzo.workflow")
@MapperScan({"cn.axzo.workflow.core.**.mapper"})
public class YokeApplication {}