业务对象
业务对象是流程运行时的业务数据,业务对象与流程实例相关联,一个流程实例可以关联多个业务对象
在不同节点可以对业务对象进行授权,只有有权限的数据才会在该节点被展示或保存更新
表单
在线表单
在线表单是由业务对象和表单模板生成,用于展示业务对象数据。
不同节点的表单会通过该节点权限配置情况来展示数据,不同的节点可以配置不同的表单,若节点未配置表单会使用全局表单
URL表单
URL 表单需要配合 “前置处理器” 一同使用,URL表单会通过配置的 URL + bussinessKey(业务主键) 去获取展示表单内容
假如 org\user\userEdit.html
为用户编辑页面 ,流程处理逻辑如下
- 流程展示页面会 通过链接
org\user\userEdit.html?id={bizId}
去加载 iframe - userEdit.html 页面需要提供一个
getData()
js 方法,流程提交的时候会调用该方法获取业务数据 - 流程提交表单后,后台会以
ActionCmd
为参数 调用配置的前置处理器 - 前置处理器保存业务数据。获取 数据
actionCmd.getBusData()
去保存或者更新 - 若第一次启动流程、“前置处理器”需要为 ActionCmd 设置业务主键
actionCmd.setBusinessKey(bizId)
这样做可以保证业务数据保存与流程处理处于同一事务
如果 URL 表单为远程服务器提供的服务,那么 推荐使用 “后置处理器” 保存数据
后置处理器会在流程逻辑处理完毕后再调用后置处理器执行业务数据保存,此时假如业务数据保存失败、流程则会回滚(不过远程服务器存在跨域,鉴权等问题,但是都能解决)
节点业务对象授权
流程选择了自定义表单后,可以对业务对象进行权限配置,若不配置则自动继承 “全局表单配置”
字段权限含一下类型:
- 无权限: 表单字段会被隐藏。无权限业务对象不会查询改字段数据,若整个对象字段均无权限,则不查询该表数据,也不会对该对象执行保存或者更新操作
- 只读权限: 业务对象不会更新只读权限字段,前端字段展示为只读
- 编辑权限: 拥有编辑更新权限
- 必填权限: 表单会展示必填校验
业务对象可授权层级
- 业务对象
- 实体(表)
- 字段
下级没有配置的情况下会自动继承上级配置的权限,所以业务对象权限配置粒度可粗可细
当流程需要一个比较大的业务对象时,比如一个业务对象 主表关联了多张子表,不同节点,只维护部分信息,这时候配置权限可以减少数据获取、保存,也能保证节点数据提交的安全性
节点按钮
节点按钮在流程后台都存在对应的处理器,处理器定义了该动作执行具体逻辑以及按钮属性配置等信息
不同的节点类型会展示不同的按钮,比如启动节点不会存在同意、反对按钮
目前支持的按钮类型
- 启动: 启动流程实例
- 保存: 保存草稿
- 同意: 任务提交,会驱动流程走向下一个节点
- 反对: 反对动作提交任务,与同意是不同的业务语义,可用于分支判断,在会签中会计票为反对(同意 Action
agree
,反对 Action 是oppose
) - 驳回: 根据流程节点属性配置的驳回情况执行驳回动作,默认驳回至上一节点,可以指定驳回至任意节点
- 审批历史: 查看历史审批记录和审批意见
- 流程图: 流程运转情况展示
- 人工终止: 强制终止流程,会触发终止节点配置的人工终止脚本执行。
- 打印: 打印当前任务页面
按钮扩展配置
- 前置JS脚本: 表单提交前执行,常用于扩展特殊 JS 逻辑(此处与表单内置校验JS 方法不冲突)
- 前置 Groovy 脚本: 流程任务打开前服务器执行的 Java 脚本,
return false
则不展示该按钮。比如通过业务数据动态判断是否展示某按钮
流程扩展属性
- 流程标题: 配置的流程标题模板,可以使用流程属性、流程变量、作为参数来生成个性化标题
- 状态: 配置状态
- 允许执行人为空: 不允许执行人为空时,如果下个任务执行人为空。提交流程会 提示业务异常
- 支持移动端: 流程若不支持移动端,流程实例、任务则不会出现在 移动端中。若支持移动端没有配置移动端表单,系统会提示业务异常
流程插件
AgileBPM 流程支持很多插件,这里罗列介绍、详细说明请移步 插件文档
节点消息通知 插件: 配置流程在某些节点发送消息给任务候选人
节点表单初始化: 用于流程表单业务数据的初始化
流程数据提交日志插件:该插件会异步记录流程每次提交的业务数据,保存在
bpm_submit_data_log
表流程节点自动跳过 插件: 用于配置全局任务跳过策略
流程任务自由跳转:当前节点任务提交后,会执行自由跳转脚本,如果脚本返回 true ,则流程会跳转至 配置的目标节点
流程变量定义
用于约定当前流程定义会使用到的流程变量。可以在流程启动时、任务提交时、前后置脚本中 对流程设置流程变量,流程变量可用于分支判断,特殊流程标记等