工作流 activiti
创始人
2024-02-23 09:22:02
0

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 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

相关内容

热门资讯

喜欢穿一身黑的男生性格(喜欢穿... 今天百科达人给各位分享喜欢穿一身黑的男生性格的知识,其中也会对喜欢穿一身黑衣服的男人人好相处吗进行解...
发春是什么意思(思春和发春是什... 本篇文章极速百科给大家谈谈发春是什么意思,以及思春和发春是什么意思对应的知识点,希望对各位有所帮助,...
网络用语zl是什么意思(zl是... 今天给各位分享网络用语zl是什么意思的知识,其中也会对zl是啥意思是什么网络用语进行解释,如果能碰巧...
为什么酷狗音乐自己唱的歌不能下... 本篇文章极速百科小编给大家谈谈为什么酷狗音乐自己唱的歌不能下载到本地?,以及为什么酷狗下载的歌曲不是...
家里可以做假山养金鱼吗(假山能... 今天百科达人给各位分享家里可以做假山养金鱼吗的知识,其中也会对假山能放鱼缸里吗进行解释,如果能碰巧解...
华为下载未安装的文件去哪找(华... 今天百科达人给各位分享华为下载未安装的文件去哪找的知识,其中也会对华为下载未安装的文件去哪找到进行解...
四分五裂是什么生肖什么动物(四... 本篇文章极速百科小编给大家谈谈四分五裂是什么生肖什么动物,以及四分五裂打一生肖是什么对应的知识点,希...
怎么往应用助手里添加应用(应用... 今天百科达人给各位分享怎么往应用助手里添加应用的知识,其中也会对应用助手怎么添加微信进行解释,如果能...
苏州离哪个飞机场近(苏州离哪个... 本篇文章极速百科小编给大家谈谈苏州离哪个飞机场近,以及苏州离哪个飞机场近点对应的知识点,希望对各位有...
客厅放八骏马摆件可以吗(家里摆... 今天给各位分享客厅放八骏马摆件可以吗的知识,其中也会对家里摆八骏马摆件好吗进行解释,如果能碰巧解决你...