工作流 activiti

Define

  1. Task 任务
  2. Execute 执行实例
  3. Process Instance * Multi 流程实例
  4. Boundary Event 边界事件 (StartEvent/EndEvent)
  5. Event Gateway 事件网关
  6. Process Define 流程定义
  7. deadletter_job job: 任务; 指责; deadletter: 形同虚设的协议; 空文; 死信;

Expose API

domain - dao - service
熟悉表可以直接调用, 但调用 activiti 更简便

  1. ProcessEngines.getDefaultProcessEngine();

    1. activiti.cfg.xml -> ProcessEngineConfiguration 得到 ProcessEngine
      1. Impl: StandaloneProcessengineConfiguration
      2. DataSource:
        1. jdbc: jdbcDriver, ~Url, ~Username, ~Password
        2. dataSource
      3. databaseSchemaUpdate
    2. SpringProcessEngineConfiguration
  2. ProcessEngineConfiguration#buildProcessEngine

  3. ProcessEngine 流程引擎

    1. [re]RepositoryService 部署
    2. [ru]RuntimeService 可获取流程执行相关信息
    3. [ru|hi]TaskService 获取任务信息
    4. [hi]HistoryService
    5. ManagementService 引擎管理, Activiti 日常维护
    6. IdentityService*
    7. FormService*

*注: 已被Activiti7删除

25 Tables

  • act
    • evt
    • procdef 流程定义
    • ge general 一般数据, 流程资源、通用定义、系统属性
    • hi 历史 流程实例、任务实例、流程附件的历史, 运行中的变量信息 | 拿出来分析/查找
    • re repository 部署单元信息、已部署的流程定义的内容、模型、及其所需静态资源
    • ru runtime 运行时流程实例、任务、变量、运行所需数据, id: 用户关系信息, 结束后会删除

4 + 2 类

Symbol (BPMN2.0)

Business Process Management Initiative 非盈利机构
BPMN: Business Process Model and Notation, 业务流程建模和标注 (Notation 是 BPMN 的核心, 用图形表达)

  • 3 类符号: Event 事件 Activity/Action 活动 Gateway 网关
  1. Event
    1. 开始事件(薄圆圈)
    2. 中间事件Intermediate_Event(双层圆圈)
    3. 结束事件(厚圆圈)
  2. Activity
    1. UserTask
    2. ServiceTask
    3. SubProcess
  3. Gateway
    1. 排他网关 x (need 条件顺序流; default顺序流, 都不满足会执行)
    2. 并行网关 + (fork-join两类)
    3. 包容网关 +
    4. 综合网关
    5. 事件网关 +
  4. Flow 流向
    1. 顺序流Sequence_Flow(实线)
    2. 消息流Message_Flow(虚线空心箭头)
    3. 关联Association(虚线)
    4. 数据关联Data_Association(虚线开口箭头)

Usage

  1. 定义流程
  2. 流程部署
  3. 启用流程: 使用java代码, 操作数据库表内容

定义流程

  1. 使用设计器, 利用流程符号
  2. 画出流程图 (bpmn、png/svg)

部署流程 (repositoryService)

  1. 上传到数据库中, 利用java代码来进行流程部署
  2. 一次部署
    1. act_re_deployment 会生成一条记录
    2. act_re_procdef 生成流程定义信息
    3. deployment: procdef = 1: n (每条记录对应流程定义信息, 3人审批变为4人审批, 类似多版本)
Deployment deploy = repositoryService.createDeployment()
    .name("evection")
    .addClasspathResource("bpm/evection.bpmn")
    .addClasspathResource("bpm/evection.png").deploy();
deploy.getId();
deploy.getName();
// 改进
InputStream inputStream = this.getClass().getClassLoader().getResourceAsStream("bpm/evection.zip");
ZipInputStream zipInputStream = new ZipInputStream(inputStream);
Deployment deploy = repositoryService.createDeployment().name("process-one.bar").addZipInputStream(zipInputStream).deploy();
act_re_deployment   # 部署表, 每次部署都会新增
act_re_procdef      # 流程定义
act_ge_bytearray    # 流程资源表(bpmn文件、svg文件)

act_ge_property     # update dbid 系统相关

开启流程实例 (taskService)

act_ge_property     # update dbid 系统相关

act_hi_actinst      # (流程实例执行)历史活动节点表 historic-activity-instances: taskId actType startTime endTime
act_hi_identitylink # 流程参与者的历史信息
act_hi_procinst     # 流程实例 历史信息
act_hi_taskinst     # 任务 历史信息
act_ru_execution    # 执行实例的信息
act_ru_identitylink # 流程参与者信息 (当前任务是由谁来负责做)
act_ru_task         # 任务信息 (运行时的任务)

查询个人待执行的任务 (taskService)

List<Task> taskList = taskService.createTaskQuery().processDefinitionKey("myEvection").taskAssignee("zhangsan").list()
for task in taskList:
    print(
        task.getProcessInstanceId(),
        task.getId(),
        task.getAssignee(),
        task.getName()
    )
# act_ge_property
act_ru_task inner join act_re_procdef

完成任务 (taskService)

act_ru_task -> act_hi_taskinst (先存hi, 再存ru表)

taskService.complete("2505")
// 改进
Task task = taskService.createTaskQuery().processDefinitionKey("myEvection").taskAssignee("zhangsan").singleResult();
taskService.complete(task.getId());
act_ge_property
act_ru_task where id_ = '2505' 
act_re_procdef where id_ = 'myEvention:1:4' -- 复合id
act_re_deployment where id_
act_ge_bytearray where deployment_id_
act_re_procdef deployment_id_ and key_ and (tenant_id_ = '' or tenant_id_ is null)
-- update act_ge_property set rev_ = 
insert into act_hi_taskinst
insert into act_hi_actinst
insert into act_hi_identitylink
insert into act_ru_task
insert into act_ru_identitylink
update act_hi_taskinst
update act_ru_execution
update act_hi_actinst
delete from act_ru_task where id_ and rev_

查询流程定义

删除流程定义

act_ge_bytearray
act_re_deployment
act_re_procdef
act_ge_property update
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值