# 与SuperPage集成
工作流支持与SuperPage集成使用。当需要搭建一个完整的工作流业务系统时,工作流负责处理底层的流程运转,SuperPage则负责处理流程数据的查询、填报以及审批的相关页面。工作流与SuperPage集成的关键点在于流程数据源的使用。下面分章节讲解集成各部分的原理:
# 工作流流转原理
在工作流流转过程中,系统会自动对流程相关的两张系统表流程实例表与流程任务表进行操作,以请假申请为例,当张三发起一条请假申请,并在后续走完审批流程的过程中,系统表中的数据操作如下:
- 流程实例表
- 发起请假申请,表中新增一行数据,会记录流程ID、业务主键(此处是记录请假单号)等关键信息来标识这是张三发起的一条请假申请
- 组长李四进行审批,审批通过后会更新这行数据的最后处理人,处理结果以及时间等信息来表示这条流程的最新状态
- 流程完整走完后,会将这行数据的实例状态更新为
finished
,代表张三的这条请假申请已经走完流程了
- 流程任务表
TIP
# 查询流程任务列表
用户在处理工作流相关事务时,针对不同的用户角色,通常需要查看不同的任务列表,以OA系统为例,常用的列表有:
待办列表 | 已办列表 | 申请列表 |
---|---|---|
- 待办列表 (opens new window):系统的审批用户使用,用于展示OA系统中所有待自己处理的流程任务,可能是请假或报销的待审批任务等
- 已办列表 (opens new window):系统的审批用户使用,用于展示OA系统中所有自己已处理的流程任务,可以查看自己的处理记录
- 申请列表 (opens new window):所有人通用,用于展示OA系统中自己申请的流程,如需要查询自己发起的报销申请到了流程的哪一环节
在SuperPage中提供了流程数据源的设置,通过我的待办、我的已办等流程数据源的引入可以很方便的获取到需要查询的任务列表。详细说明可参考引入数据文档。
# 跳转到工作流表单页面
以OA系统为例,整个系统中可能有多种工作流,请假流程,报销流程,合同审批流程等。这意味着审批用户的待办列表中会有多个流程的审批任务。点击这些任务后跳转到的处理任务的表单页面都是不同的,比如审批请假申请和报销申请的表单页面必然是不同的两个页面。系统能够从任务列表根据选择的流程任务自动跳转到表单页面,这其中涉及到两个关键点:
- 在工作流的配置中,在流程全局和节点设置中可以指定处理任务的表单页面,系统可以很容易的得到流程节点对应的表单页面地址
- 任务列表中设置打开链接交互,链接的对象指定为工作流表单,则打开链接时会根据当前选择的流程任务自动找到其在工作流上配置的表单页面地址
工作流的表单页面设置如下:
- 表单页面选择:默认的下拉框中可选择系统内部资源作为表单页面
- 指定表单URL:勾选后,下拉框会变为输入框,可手动输入表单页面的URL
- 指定手机端:勾选后,可额外设置手机端的表单页面,系统会自动根据使用的设备跳转到指定页面
# 读写流程表单数据
以请假申请为例,审批用户在待办列表中点击张三的申请跳转到了处理请假流程的表单页面,此时表单页面中需要展示张三的请假申请信息。也就是说跳转到表单页面后,系统需要自动定位到当前在处理的业务数据,不能出现点击张三的任务结果进到页面看到的是李四的申请信息的情况。工作流表单数据的读写需要使用流程表单数据,在数据>工作流中可添加流程表单数据,设置说明可参考引入数据文档。此处介绍系统如何通过流程表单数据定位业务数据:
- 从待办列表跳转到表单页面时,在打开链接交互中需要将任务代码信息传递给了表单页面的
taskId
参数 - 在表单页面中将
taskId
设置到引入的流程表单数据中,以请假申请的设置为例,就是将taskId
设置到流程表单数据请假申请表
的任务ID属性中 - 将
请假申请表
设置为单行数据集,并在表单页面中的输入组件上绑定请假申请表
中对应的字段
通过上述设置,当表单页面获取到从待办列表传递过来的任务代码时,系统能从流程任务表中自动获取当前任务对应的业务代码,以请假流程为例,此处获取到的是请假单号
。同时,在流程表单数据请假申请表
中也设置了这个任务代码,系统可以很自然的通过获取到的请假单号
来过滤请假申请表
,并将信息自动装载到绑定了请假申请表
的组件中。
TIP
# 控制表单输入项的权限
同一个工作流,在不同的流程节点中,某些业务数据可能会有不同的读写权限设置。以请假申请为例,在申请节点,用户可以填写基本的申请信息,但无法输入调休天数
的内容,而当申请进入组长审批环节,此时组长可以修改组员的调休天数
但无法修改其基本的申请信息。类似的效果可以通过在组件上写禁用条件的方式来实现,但带有流程的表单,一般推荐在工作流上进行配置,容易管理,这涉及到以下关键点:
- 在流程节点中可添加节点数据权限设置,确定业务数据的字段读写权限
- 在表单页面中通过流程表单数据来读写流程表单数据,页面中的组件需要绑定流程表单数据中的字段
- 流程表单数据的设置中需要勾选根据流程设置显示隐藏或禁用输入项属性,设置说明可参考引入数据文档
通过上述设置,当表单页面获取到任务代码后,系统能自动获取到对应的流程节点信息,从而根据流程节点上的字段权限设置来自动控制绑定了对应字段的输入组件的读写情况。
TIP
- 只有能够绑定字段的输入组件才能根据节点数据权限设置来自动控制读写,按钮、文本等组件如果也想达到类似的效果,则需要在显示和禁用条件中通过wfl_canview、wfl_canedit函数进行设置。
- 针对已完成的任务,再次进入到任务的表单页面时,绑定了流程表单数据中字段的输入组件都会自动变成禁用模式。
# 流程操作交互
流程相关的操作交互可以分为两种:
以下主要对操作流程任务的交互进行说明:
- 提交表单:应用于流程的发起,在提交流程业务的同时发起新的流程,更多详细说明可参考提交表单文档
- 执行流程:用于流程发起后,处理流程任务的审批工作,可对用户的待办流程任务进行批准、否决以及退回等操作,更多详细说明可参考执行流程文档
- 批量发起流程:多用于上级分配的流程任务,比如由管理员批量选择一批员工来发起考核流程,更多说明可参考批量发起流程文档
# 通知消息
工作流流转过程中,当符合发送条件时,系统会自动根据配置的消息模板来给对应用户发送消息通知。比如请假流程的待办消息模板配置的发送条件是当流程中的任意节点有新的流程任务生成时就发送消息,那么当张三完成申请后,组长李四生成了一条待办的流程任务,此时系统就会根据模板配置自动给李四发送待办消息。详细的通知说明可参考消息通知文档。