# 3. 流程模块

# 3.1. 概述

流程建模、流程配置、流程数据交互、流程实例管理及干预是整个工作流系统的核心部分。红迅JSAAS流程基于Spring与有着10多年开源流程引擎Activiti 5.X的基础上构建,它支行于JAVA EE应用服务器,而又不需要依赖特定的中间件或服务器,可以在业务处理、数据持久化等各个方面与应用系统进行灵活集成;引擎采用组件化设计,为开发者灵活选择流程引擎的功能、自定义已有功能和拓展新功能提供了无限可能;流程引擎的轻量级化大幅度降低了部署的复杂度,使系统更加容易设计实现。用户可以将流程引擎作为业务流程管理的基础,在此基础上实现业务流程的电子化以及业务流程统一管理。

# 3.2. 流程功能模块

# 3.3. 企业流程管理理念

企业的流程管理是需要一套完善、科学的管理过程,通过基于企业的业务分析、设计、运行、优化以达到高质量的管理效率,平台提供一套完整的管理手段,让流程管理轻松、快捷与方便。

# 3.4. 流程建模

# 3.4.1. 在线建模工具

提供在线的bpmn设计工具,也可基于线下的bpmn设计工具设计完成后,上传导入在线的设计文件 bpmn editor,如下所示:

企业的业务流程建模一般由企业的业务人员进行设计,设计完成后上传发布至系统即可。而流程业务的组装即由IT运维或开发人员来完成。平台使用了Activiti的流程引擎,Activiti是BPMN2的实现标准,基于这种标准的实现,它已经实现了以下的常规的流程需求:

  1. 人工任务
  2. 自动节点
  3. 脚本节点
  4. WebService节点
  5. 串行流程
  6. 并行流程
  7. 条件并行流程
  8. 分支流程
  9. 按泳道角色的流程
  10. 内部子流程
  11. 外部子流程
  12. 多实例的任务实现的会签
  13. 多实例的子流程

# 3.4.2. 流程模型导入、导出

实现流程模型的线下导入与导出功能,满足运维的不同的环境的数据迁移的需要,如下图为下载与上传流程文件界面。

下载流程模型

上传流程模型

# 3.5. 流程业务组装

运维人员或IT开发人员根据业务流程的需求,需要对流程的每个环节处理的事项与交互的细节进行组装与设计,以使得其满足企业业务处理的需要,一般包括考虑的需求有:

  1. 审批环节中的业务表单与单据的数据编辑权限
  2. 审批环节的审批人员
  3. 审批环节中的通知事项
  4. 审批环节的条件分支等

在平台内只需要新建流程业务表单方案即可:

平台还提供更多的节点环节的事项,包括通知、催办、运算、会签、加签,审批按钮,审批环节与外部事项的交互等。

# 3.5.1. 挂接流程定义

流程方案是一个组装流程的总体解决方案,它是通过流程建模的定义来实现流程的流转的,因此第一步就需要挂接上流程定义。如下所示:

# 3.5.2. 定义节点单据及权限

为审批环节配置一张或多张有关联或没关联的业务单据,并且为不同节点的单据提供字段与按钮级别的权限配置。

平台可以简化用户对表单的配置,对于节点比较多的流程,只需要配置一个全局节点,对于节点间的表单有个性化的需求的,可直接在节点上配置差异化的即可,包括表单的字段权限。如下图:

# 3.5.3. 定义流程变量

流程变量相当流程的运行参数,在流程执行过程中,可影响流程的流转,流程数据的交互,流程节点的人员计算,甚至通知模板 ;

流程变量的定义,即定义了流程在运行过程中需要的参数变量,可定义于流程级的变量,也可定义流程变量的值来自表单字段值。当流程在执行过程中,可根据定义的流程变量值实现其值计算,最终服务于流程的全生命周期中。

# 3.5.4. 定义流程节点人员

流程节点在执行过程中,可实现节点的人员定义,平台提供多种节点的人员查找算法,可允许在节点上配置不同的人员查找策略,最终形成每个节点的人员集合。多个人员集合可进行与、或、非的人员计算,以实现复杂的人员运算需要。如下所示:

平台已经提供的人员运算策略有:

  1. 发起人
  2. 扩展属性
  3. 实例用户
  4. 用户
  5. 用户组
  6. 用户来自其他节点的审批人
  7. 用户或组来自流程变量
  8. 用户或组来自表单数据
  9. 用户或组来自脚本运算
  10. 人员脚本运算
  11. 用户来自用户关系运算
  12. 用户组来自用户与组关系运算
  13. 用户来自用户与组关系运算
  14. 用户来自发起人所在部门往上查找符合等级的部门的关系用户
  15. 查找某部门下的拥有某种用户组(角色、职务)的人

平台同时支持开发级的用户进行人员策略的扩展,以支持更复杂的人员计算。

# 3.5.5. 定义流程外部数据交互

流程在执行过程中,需要与外部系统实现数据交互时,可在流程以下事件:

  1. 流程启动
  2. 流程结束
  3. 流程任务创建
  4. 流程任务结束

执行以下流程数据交互的配置:

  1. 执行动态(Groovy)脚本
  2. 执行外部WebService接口,包括(RESTful API)
  3. 执行SQL(含外部数据源)
  4. 发送MQ消息
  5. 执行ProcessCall接口
  6. 启动外部子流程

# 3.5.6. 定义流程催办

系统产生的流程事项,若用户没有在规定时间内完成,平台提供了事项的催办办理,用户可在平台内配置节点的逾期办理事项,以实现事项的催办处理。

# 3.5.7. 节点会签配置

对于某些任务需要进行并行或串行办理时,我们需要把该审批节点设置为多实例节点,同时可在平台上设置该节点的会签配置方案。

** 会签投标规则设置**

系统支持会签投票的规则:

  • 按票数投票

  • 按百分比投票

  • 支持特权的投票比重设置

  • 支持加签权限的设置

# 3.5.8. 定义节点属性

流程还支持在节点上进行各种属性扩展定义,可根据审批任务节点配置该节点的开关参数或其他参数,如:

  1. 如审批节点的按钮
  2. 通知模板
  3. 通知消息类型
  4. 执行路径开关
  5. 人员配置开关
  6. 子表权限等

同时也支持在节点上扩展更多 的一些业务与流程绑定的参数。

# 3.5.9. 定义流程通知模板

可针对流程定义或流程任务的触发事件中,对任务执行人、相关负责人或主管实现消息的推送,包括邮件、短信、IM消息,系统提供在线的模板配置等。

# 3.6. 中国式流程业务

平台支持中国国情的流程处理,因此加上了比较多符合国人类似OA业务协同的流程业务支持,以满足企业的流程标准化与非标准化的操作处理,如:

  1. 流程变更及多版本
  2. 自由流程
  3. 任务办理
  4. 流程回退及原路返回、追回
  5. 流程催办(基于工作日)及过期动作设置
  6. 流程任务的人员更改
  7. 流程会签、加签、投票
  8. 流程表单权限配置及模板打印
  9. 流程的串行、并行、多路分发、汇总、自动脚本执行
  10. 流程的撤办、转办、传阅、提交、暂存、复制
  11. 流程异常挂起、无人员跳过或相同人员跳过
  12. 支持流程的沟通、协办
  13. 流程导入、导出
  14. 流程任务的代理

# 3.7. 流程监控

系统提供对流程实例、流程任务实体的监控,可查看平台、机构、部门下按分类或流程定义的流程实例,可查看流程运行的执行过程、审批历史、超时办理。

# 3.8. 流程干预

系统提供了强大的流程干预运算,可实现对流程的以下属性进行干预:

  1. 流程流转方向
  2. 流程回退、驳回
  3. 流程节点人员
  4. 流程变量更改
  5. 流程单据数据
  6. 流程转办、抄送
  7. 流程复活

# 3.9. 流程归档

在运行一段时间后,特别是流程实例数增长比较快时,系统平台提供了一段运维管理手段就是进行流程数据的归档。

用户只需要在一定的时间内,执行一次手工归档的指令配置即可。

# 3.10. 流程服务接口

  1. 根据用户账号获取待办列表
  2. 启动流程
  3. 审批任务
  4. 获取有权限发起的流程方案
  5. 根据任务ID获取后续节点
  6. 根据流程实例ID获取流程相关任务
  7. 根据流程实例ID获取审批意见
  8. 创建沟通任务
  9. 回复沟通接口
  10. 撤销沟通
  11. 根据任务ID获取表单数据
  12. 根据流程实例ID获取表单数据
  13. 获取我发起的流程实例
  14. 撤销任务接口
  15. 获取代理给我的任务
  16. 根据流程实例ID获取流程实例明细
  17. 返回我已审批的流程实例列表
  18. 删除流程实例
  19. 保存流程草稿
  20. 从草稿中启动流程
  21. 获取我的草稿列表
  22. 根据任务ID获取任务信息详细信息
  23. 根据任务ID获取后续执行人信息