---
order: 55
navTitle: 执行流程
---
# SuperPage交互-执行流程

当需要在SuperPage中使用**工作流**时，比如使一个请假或报销流程能够正常流转，这涉及到两个关键点：

1. 申请人在填写完申请信息后需要[发起流程](./submit-data.md#start-flw)，相关设置可参考[提交表单](./submit-data.md#start-flw)文档
2. [发起流程](./submit-data.md#start-flw)后，在审批环节中，用户需要通过**执行流程**交互对流程任务进行审批，使流程能够继续走到下一环节直到流程结束

本文主要讲解如何使用**执行流程**交互去处理流程任务，如下动图就是通过**执行流程**交互来批准请假申请：

![请假审批](./images/2021_09_27_15_09_32.gif)

示例地址：[请假申请](https://demo.succbi.com/v5/DEMO_OA/app/OA.app?:edit=true&:file=glysp.spg)

## 使用执行流程{#use}

一个工作流想要正常运转通常至少需要具备两个页面：

1. **任务列表**：用于展示当前用户所有待办或已办的流程任务，通常使用工作流数据源[我的待办](../datasourse.md#my-tasks)制作，设置方法可参考[引入数据](../datasourse.md#my-tasks)文档
2. **表单页面**：用于发起人填报申请信息，处理人进行审批操作的页面，通常是从**任务列表**跳转到对应任务的处理表单页面

**执行流程**交互主要应用于上述提到的**表单页面**中，且大部分情况都是在做审批处理的**表单页面**中使用，**执行流程**交互会根据从**任务列表**传递过来的**任务代码**按照配置的[流程操作](../../../workflow/operate.md)去处理指定的流程任务，以请假流程的审批页面中的批准按钮为例：

![批准](./images/2021_09_27_15_22_32.gif)

1. **按钮组件添加交互**：选中**按钮**组件，在**交互**中添加**执行流程**
2. **指定流程任务来源**：
   1. 在**交互属性**>**目标流程任务**中选择[来自流程数据源](#wfl-data)选项，此处在交互添加时已有默认设置
   2. 在**交互属性**>**流程数据源**中选择引入到SuperPage页面中的[流程表单数据](../datasourse.md#page-img)
3. **指定流程操作**：在[流程操作](#operate)设置中可选择以什么样的方式来处理流程，此处默认选择**批准**操作
4. **指定处理意见**：勾选[指定处理意见](#advice)后，将输入意见的组件值添加到设置中

## 定位待处理的流程任务{#workflow}

使用**执行流程**交互，首先需要确定当前在处理的是什么流程任务，比如当前流程任务在处理的是张三发起的请假申请，[流程节点](../../../workflow/design.md#add-node)走到了组长审批环节。这些任务信息需要通过交互属性**目标流程任务**中的设置来获取，**目标流程任务**设置中提供了多种设置选项，下面分章节介绍不同选项的设置方法以及应用场景。

### 来自流程数据源{#wfl-data}

从一个[流程数据源](../datasourse.md#page-img)中，通过其模型设置中提供的**任务代码**，可以获取到当前在处理的流程任务信息。往往在当前页面需要使用[流程数据源](../datasourse.md#page-img)来展示流程任务的表单信息时使用。如请假申请的审批页面需要通过[流程数据源](../datasourse.md#page-img)来展示申请人填写的申请信息，此时可直接借助[流程数据源](../datasourse.md#page-img)`请假申请表`来获取当前处理的请假流程的任务信息。这种方式下的**执行流程**，有以下关键点：

1. 页面中需正确引入[流程表单数据](../datasourse.md#page-img)，且进入到表单页面时要传递正确的**任务代码**
2. **执行流程**交互的**目标流程任务**设置为**来自流程数据源**，并正确指定设置好的[流程数据源](../datasourse.md#page-img)

示例地址：[请假审批](https://demo.succbi.com/v5/DEMO_OA/app/OA.app?:edit=true&:file=glysp.spg)

:::tip

[流程数据源](../datasourse.md)有多种类型，此处提到的[流程数据源](../datasourse.md)专指[流程表单数据](../datasourse.md#page-img)。

:::

### 用户批量选择{#batch-use}

任务信息可以从一个带有流程**任务代码**的数据[列表](../../components/data/list.md)中获取。往往应用在申请信息在列表中一目了然，审批人希望直接在列表上批量勾选一批数据同时批准或否决的场景。如请假流程，其申请信息足够简单，审批人往往希望直接批量处理自己的待审批任务。在将属性**目标流程任务**设置为**用户批量选择**后，具体设置属性如下：

- **数据**：选择SuperPage中的[引入模型](../datasourse.md)，不限模型类型，但模型中需要包含记录**任务代码**的字段
- **任务代码**：可在模型字段范围中选择，批量处理流程任务时，通过选择的字段内容得到**任务代码**从而定位到对应的流程任务
- **数据范围**：可选择**勾选的**或**当前行**，用于确定要处理的流程任务范围
- **数据组件**：数据范围选择**勾选的**时可以设置，选择勾选数据的对象组件

:::tip

**用户批量选择**所使用的数据表通常直接就是[流程任务表](../../../../dev/sys-tables/README.md#flow-tasks)，或是由[流程任务表](../../../../dev/sys-tables/README.md#flow-tasks)加工后得到的数据表。

:::

### 指定任务代码{#taskid}

任务信息还可以从指定的**任务代码**中获取。往往应用于在任务列表行中去处理当前行的流程任务。参考批量处理请假申请的场景，用户可能不想批量勾选处理而是根据列表行上展示的信息来逐条点击行上的处理按钮来执行流程。这种设置下有以下几点需要注意：

1. 仅支持通过表达式设置单个**任务代码**
2. 设置的**任务代码**必须是当前用户可处理的，否则触发交互时系统会自动给出提示信息，可处理的任务是指：
   1. **任务代码**对应的流程任务是分配给当前用户的
   2. **任务代码**对应的流程任务尚未被处理

:::tip

与从**流程数据源**中获取任务信息来处理流程任务不同，**指定任务代码**设置通常是应用在不需要进入到表单页面来处理流程任务时的场景。

:::

## 流程操作{#operate}

在交互设置**流程操作**中提供了工作流中审批相关的[流程操作](../../../workflow/operate.md)，如批准，否决，退回等。详细说明可参考[流程操作](../../../workflow/operate.md)文档。

:::tip

在流程节点的设置上也可以配置[流程操作](../../../workflow/operate.md)，需要注意的是，在执行某流程节点的任务时，如果触发的操作是流程节点上未配置的，则会提示用户不能使用未配置的操作。如请假申请的组长审批节点中只配置了**批准**和**退回**操作，则此时通过交互去**否决**该流程任务是不被允许的。

:::

## 指定处理意见{#advice}

交互设置**指定处理意见**，勾选后可以通过表达式来设置流程任务处理时的**处理意见**，通常是取页面某输入组件的值。

![指定处理意见](./images/2021-10-10-10-27-40.png)

1. 表单页面中需要提供输入**处理意见**的输入组件
2. **执行流程**交互勾选**指定处理意见**属性后，需要将输入组件的值设置到表达式中
3. 交互执行时，系统自动将对应输入组件的内容记录到[流程任务表](../../../../dev/sys-tables/README.md#flow-tasks)的**处理意见**字段中

:::tip

如果处理意见是不需要记录在业务表中的，则审批页面中提供的输入处理意见的输入组件都是不需要绑定提交字段的。

:::

## 指定跳转节点{#node}

交互设置**指定跳转节点**，用于**流程退回**时可自由指定要退回到的节点的场景。在[流程节点](../../../workflow/design.md#add-node)的[退回](../../../workflow/operate.md)操作设置中，可将多个节点设置为可退回的节点。以下图部门经理审批节点为例：

![流程图](./images/2021-10-09-17-20-48.png)

当张三发起请假申请，经由他的项目经理李四审批通过后，申请到达部门经理审批节点，由王五处理。此时针对退回有以下两种情况：

1. 不指定跳转节点时，默认退回到离当前节点最近的[流程节点](../../../workflow/design.md#add-node)，即项目经理审批节点
2. 指定跳转节点时，所添加表达式的计算结果需要是[流程节点](../../../workflow/design.md#add-node)的**节点ID**，例如此处可以直接指定为申请节点的**节点ID**，则退回时直接退到申请节点。**节点ID**的设置可参考[绘制工作流](../../../workflow/design.md#task-node)文档

:::tip

**指定跳转节点**的表达式支持设置多个**节点ID**，多个**节点ID**之间逗号分隔，只支持并行分支的场景，如对一份合同进行审批，需要A，B，C三个部门并行审批后再由领导审批，领导审批时，可能A，B部门的资料提交错误，此时可以通过**指定跳转节点**设置只退回A，B审批的节点，部门C无需处理。

:::

## 提示信息设置{#tooltips}

**执行流程**交互完成前后可自定义提示信息，设置后会在交互动作完成前后弹出对话框确认，具体设置可参考[提交表单](./submit-data.md)。
