ldc199375的gravatar头像
ldc199375 2018-01-21 13:45:57
Activiti流程基础入门简介-推荐使用Activiti5.22

1. Activiti相关概念

1.1 Activiti表清单

  序号 表名 说明
    1             act_ge_bytearray  二进制数据表
    2           act_ge_property 属性数据表存储整个流程引擎级别的数据,初始化表结构时,会默认插入三条记录
    3      act_hi_actinst 历史节点表
    4             act_hi_attachment 历史附件表
    5         act_hi_comment 历史意见表
    6            act_hi_identitylink 历史流程人员表
    7  act_hi_detail 历史详情表,提供历史变量的查询
    8      act_hi_procinst 历史流程实例表
    9      act_hi_taskinst 历史任务实例表
    10   act_hi_varinst 历史变量表
    11   act_id_group 用户组信息表
    12 act_id_info 用户扩展信息表
    13           act_id_membership 用户与用户组对应信息表
    14 act_id_user 用户信息表
    15           act_re_deployment 部署信息表
    16 act_re_model 流程设计模型部署表
    17 act_re_procdef 流程定义数据表
    18         act_ru_event_subscr throwEvent、catchEvent时间监听信息表
    19   act_ru_execution 运行时流程执行实例表
    20     act_ru_identitylink 运行时流程人员表,主要存储任务节点与参与者的相关信息
    21 act_ru_job 运行时定时任务数据表
    22 act_ru_task 运行时任务节点表
    23 act_ru_variable 运行时流程变量数据表

注:为了使系统原有的用户认证和Activiti中用户认证结合起来,采用了建立视图的方式act_id_user,act_id_group,act_id_membership

1.2 Activiti服务组件清单

组件名称 说明
                  RepositoryService 管理流程定义和流程部署的API
                  RuntimeService 流程运行时对流程实例进行管理和控制
                  TaskService 管理流程任务(签收,提交)
                  HistoryService 管理流程历史数据
                  IdentityService 流程用户角色管理
                  ManagementService 管理维护流程引擎

注:所有的组件都是通过ProcessEngine进行初始化的.

组件服务使用示例:

// 流程启动, 传入流程定义key和参数
ProcessInstance processInstance = runtimeService.startProcessInstanceByKey(defintionKey, variables);

// 流程实例查询
ProcessInstance processInstance = runtimeService.createProcessInstanceQuery().processInstanceId(processInstanceId).singleResult();


// 任务签收 传入任务Id和任务受理人Id
taskService.claim(taskId, userId);

// 流程任务提交 传入流程任务Id和参数
taskService.complete(taskId, variables);


// 查询指定流程的候选组任务 传入流程定义key和候选组Id
List<Task> tasks = taskService.createTaskQuery().taskCandidateGroup(groupId).processDefinitionKey(defintionKey).list();


// 使用原生SQL进行查询执行实例查询(原生SQL只做查询,建议不要进行修改操作)
String sql = "SELECT * FROM "+managementService.getTableName(Execution.class)+
                " E WHERE E.SUPER_EXEC_ IN (SELECT DISTINCT T.ID_ FROM act_ru_execution T where T.PROC_INST_ID_='"+mainProcessInstanceId+"')";
Execution execution = runtimeService.createNativeExecutionQuery().sql(sql).singleResult();

1.3 Activiti相关概念

     流程实例ProcessInstance:流程启动后创建流程实例.
     任务实例TaskInstance:流程执行到某一任务创建任务实例.
     执行实例ExecutionInstance:流程上走过的节点都会创建一个执行实例,即使是流程的开始和结束
     任务受理人Assignee:任务提交的权限控制,任务的执行人(为空的受理人,流程任务也是可以提交的,可代码控制)
     任务候选组CandidateGroup:在一个候选组的人可以看到当前候选任务,然后进行任务签收(变为任务受理人)

 


打赏
最近浏览
alt1127  LV1 2021年2月9日
lxfhi6  LV7 2021年1月15日
zh367291119  LV2 2021年1月12日
crazyfly1115 2020年10月10日
暂无贡献等级
jeety太阳雨  LV14 2020年2月23日
kwm2921944  LV10 2019年12月8日
woohyuk117  LV6 2019年11月14日
无我一心  LV1 2019年10月23日
huberycheng  LV1 2019年9月3日
大程123456  LV2 2019年8月15日
顶部 客服 微信二维码 底部
>扫描二维码关注最代码为好友扫描二维码关注最代码为好友