# 与SuperPage集成

工作流支持与SuperPage集成使用。当需要搭建一个完整的工作流业务系统时,工作流负责处理底层的流程运转,SuperPage则负责处理流程数据的查询、填报以及审批的相关页面。工作流与SuperPage集成的关键点在于流程数据源的使用。下面分章节讲解集成各部分的原理:

# 工作流流转原理

在工作流流转过程中,系统会自动对流程相关的两张系统表流程实例表流程任务表进行操作,以请假申请为例,当张三发起一条请假申请,并在后续走完审批流程的过程中,系统表中的数据操作如下:

  • 流程实例表
    • 发起请假申请,表中新增一行数据,会记录流程ID、业务主键(此处是记录请假单号)等关键信息来标识这是张三发起的一条请假申请
    • 组长李四进行审批,审批通过后会更新这行数据的最后处理人,处理结果以及时间等信息来表示这条流程的最新状态
    • 流程完整走完后,会将这行数据的实例状态更新为finished,代表张三的这条请假申请已经走完流程了
  • 流程任务表
    • 每个流程节点经过时都会生成对应的流程任务,以张三发起申请后,需要经过组长审批、部门经理审批的简单流程为例,此处对应3个流程节点,会生成3条流程任务,即在流程任务表中对应新增3行数据
    • 同一流程节点有多人处理时,按照处理人数生成流程任务,比如张三的组长有两个,那么在组长审批节点时,会给两个组长都生成流程任务,如果是或签,则其中一个组长审批完成后,另外一个组长的流程任务就会由系统自动完成
    • 流程中多次经过同一流程节点,如张三发起申请后被组长李四退回,流程再次回到申请节点,此时是针对申请节点生成新的流程任务,而不是在第一次申请时的任务基础上进行修改。

TIP

  1. 一条申请记录,在流程实例表中始终只有一条数据,用于记录申请的实时状态。流程任务表中会有多条数据,每一个流程任务对应一条数据。流程实例表流程任务表是一对多的关系。
  2. 在发起流程时,流程任务表中会生成申请节点的流程任务并直接将任务状态置为已完成,同时会生成下一个节点的待办任务。

# 查询流程任务列表

用户在处理工作流相关事务时,针对不同的用户角色,通常需要查看不同的任务列表,以OA系统为例,常用的列表有:

待办列表 已办列表 申请列表

待办列表

已办列表

申请列表

  • 待办列表 (opens new window):系统的审批用户使用,用于展示OA系统中所有待自己处理的流程任务,可能是请假或报销的待审批任务等
  • 已办列表 (opens new window):系统的审批用户使用,用于展示OA系统中所有自己已处理的流程任务,可以查看自己的处理记录
  • 申请列表 (opens new window):所有人通用,用于展示OA系统中自己申请的流程,如需要查询自己发起的报销申请到了流程的哪一环节

在SuperPage中提供了流程数据源的设置,通过我的待办我的已办流程数据源的引入可以很方便的获取到需要查询的任务列表。详细说明可参考引入数据文档。

TIP

我的待办我的已办等设置只是系统提供的一种快捷设置方式,用户也可以自行引入流程任务表或相关数据加工并为其添加需要的过滤条件作为查询的任务列表。

以OA系统为例,整个系统中可能有多种工作流,请假流程,报销流程,合同审批流程等。这意味着审批用户的待办列表中会有多个流程的审批任务。点击这些任务后跳转到的处理任务的表单页面都是不同的,比如审批请假申请和报销申请的表单页面必然是不同的两个页面。系统能够从任务列表根据选择的流程任务自动跳转到表单页面,这其中涉及到两个关键点:

  1. 工作流的配置中,在流程全局和节点设置中可以指定处理任务的表单页面,系统可以很容易的得到流程节点对应的表单页面地址
  2. 任务列表中设置打开链接交互,链接的对象指定为工作流表单,则打开链接时会根据当前选择的流程任务自动找到其在工作流上配置的表单页面地址

工作流表单页面设置如下:

表单页面

  • 表单页面选择:默认的下拉框中可选择系统内部资源作为表单页面
  • 指定表单URL:勾选后,下拉框会变为输入框,可手动输入表单页面的URL
  • 指定手机端:勾选后,可额外设置手机端的表单页面,系统会自动根据使用的设备跳转到指定页面

# 读写流程表单数据

以请假申请为例,审批用户在待办列表中点击张三的申请跳转到了处理请假流程的表单页面,此时表单页面中需要展示张三的请假申请信息。也就是说跳转到表单页面后,系统需要自动定位到当前在处理的业务数据,不能出现点击张三的任务结果进到页面看到的是李四的申请信息的情况。工作流表单数据的读写需要使用流程表单数据,在数据>工作流中可添加流程表单数据,设置说明可参考引入数据文档。此处介绍系统如何通过流程表单数据定位业务数据:

  1. 待办列表跳转到表单页面时,在打开链接交互中需要将任务代码信息传递给了表单页面taskId参数
  2. 表单页面中将taskId设置到引入的流程表单数据中,以请假申请的设置为例,就是将taskId设置到流程表单数据请假申请表任务ID属性中
  3. 请假申请表设置为单行数据集,并在表单页面中的输入组件上绑定请假申请表中对应的字段

通过上述设置,当表单页面获取到从待办列表传递过来的任务代码时,系统能从流程任务表中自动获取当前任务对应的业务代码,以请假流程为例,此处获取到的是请假单号。同时,在流程表单数据请假申请表中也设置了这个任务代码,系统可以很自然的通过获取到的请假单号来过滤请假申请表,并将信息自动装载到绑定了请假申请表的组件中。

TIP

  1. 流程表单数据提供正确的任务代码就可以定位到指定的业务数据,但数据的自动装载还需要注意将流程表单数据设置为单行数据集
  2. 业务模型为主从表的场景中,比如报销流程,可能有报销申请表报销明细表,主表与从表是一对多的关系,这种情况下从表的数据装载,不需要设置对应流程表单数据单行数据集

# 控制表单输入项的权限

同一个工作流,在不同的流程节点中,某些业务数据可能会有不同的读写权限设置。以请假申请为例,在申请节点,用户可以填写基本的申请信息,但无法输入调休天数的内容,而当申请进入组长审批环节,此时组长可以修改组员的调休天数但无法修改其基本的申请信息。类似的效果可以通过在组件上写禁用条件的方式来实现,但带有流程的表单,一般推荐在工作流上进行配置,容易管理,这涉及到以下关键点:

  1. 流程节点中可添加节点数据权限设置,确定业务数据的字段读写权限
  2. 表单页面中通过流程表单数据读写流程表单数据,页面中的组件需要绑定流程表单数据中的字段
  3. 流程表单数据的设置中需要勾选根据流程设置显示隐藏或禁用输入项属性,设置说明可参考引入数据文档

通过上述设置,当表单页面获取到任务代码后,系统能自动获取到对应的流程节点信息,从而根据流程节点上的字段权限设置来自动控制绑定了对应字段的输入组件的读写情况。

TIP

  1. 只有能够绑定字段的输入组件才能根据节点数据权限设置来自动控制读写,按钮、文本等组件如果也想达到类似的效果,则需要在显示和禁用条件中通过wfl_canviewwfl_canedit函数进行设置。
  2. 针对已完成的任务,再次进入到任务的表单页面时,绑定了流程表单数据中字段的输入组件都会自动变成禁用模式。

# 流程操作交互

流程相关的操作交互可以分为两种:

  1. 操作流程业务数据的交互,如提交表单更新数据
  2. 操作流程任务的交互,用来发起流程或在审批时对流程任务进行批准、退回等操作

以下主要对操作流程任务的交互进行说明:

  • 提交表单:应用于流程的发起,在提交流程业务的同时发起新的流程,更多详细说明可参考提交表单文档
  • 执行流程:用于流程发起后,处理流程任务的审批工作,可对用户的待办流程任务进行批准、否决以及退回等操作,更多详细说明可参考执行流程文档
  • 批量发起流程:多用于上级分配的流程任务,比如由管理员批量选择一批员工来发起考核流程,更多说明可参考批量发起流程文档

# 通知消息

工作流流转过程中,当符合发送条件时,系统会自动根据配置的消息模板来给对应用户发送消息通知。比如请假流程的待办消息模板配置的发送条件是当流程中的任意节点有新的流程任务生成时就发送消息,那么当张三完成申请后,组长李四生成了一条待办的流程任务,此时系统就会根据模板配置自动给李四发送待办消息。详细的通知说明可参考消息通知文档。

# 数据安全

WARNING

当使用工作流与SuperPage集成来搭建完整的业务系统时,请尽量使用流程数据源来制作SuperPage页面,这涉及到流程的数据安全问题。使用流程数据源时,系统会自动判断当前用户对他正在处理的流程任务是否具备相应的权限,如张三不能在没有权限的情况下看到李四的待办任务详情,更不能直接处理李四的待办任务。直接在页面中引入流程实例表流程任务表以及其加工模型的操作可能导致数据泄露

是否有帮助?
0条评论
评论