# 操作手册

## 1. 项目启动

### 1.1 前端启动

前端启动本地安装npm和yarn，node版本推荐16

安装依赖：

```shell
yarn
```

本地启动项目：

```yarn
yarn run dev
```

前端打包：

```shell
yarn run build
```

前端启动时需要注意修改连接的后台地址：

![](.operate_images/95fb0c18.png)

### 1.2 后端启动

后端启动之前需要先进行数据库配置，检查如下文件中的数据库连接和配置：

![](.operate_images/c2908840.png)

## 2. 功能介绍

登录到流程管理系统后台，可以看到如下界面：

![](.operate_images/62fa08d7.png)

这4个菜单的功能如下：

* 1.发起：进行发起流程。
* 2.任务：查看当前用户的待办任务列表、已办任务列表等信息。
* 3.模型：维护流程的模型信息，定义了流程运行过程需要执行哪些节点。
* 4.实例：查看当前项目中运行的流程模型实例，也就是正在进行中的流程。

### 2.1 模型设计

使用流程平台第一步需要先进行流程模型的设计，流程模型的设计定义了流程执行的节点有哪些，同时包含流程的执行路径。

#### 2.1.1 流程分类

流程分类是针对流程模型的一个分组功能，通过创建流程分类，可以将不同种类的流程模型进行划分。

![](.operate_images/b20d1d4b.png)

#### 2.1.2 创建流程模型

点击流程模型界面右上角的新建按钮，可以创建流程模型，创建过程中需要选择流程模型的分类，填写模型名称，模型编码和排序。

![](.operate_images/dc50b5dd.png)

#### 2.1.3 流程模型设计

创建完流程模型之后，点击流程模型的图标或标题进入到流程设计界面

![](.operate_images/0add645a.png)

流程设计界面进去后，左侧是流程相关的组件，右侧是流程设计的画布，可以将左侧组件区域的组件拖拽到右侧的流程设计画布上。

![](.operate_images/16f2deb0.png)

下面分别介绍介绍一下组件的用法：

**开始事件**：每个流程，都必须由开始事件开始。

开始事件中可以配置流程执行过程中需要的属性，这些属性一般是在流程的网关节点需要用到的，例如条件网关中的条件判断时，需要用到这些定义的流程变量在组成条件判断的表达式，从而进行控制流程的走向。

![](.operate_images/64d4bae0.png)

开始事件，流程配置选项卡中可以配置流程的发起方式，可以控制流程是从接口发起还是从平台发起，接口发起是由外部系统调用Api接口发起，平台发起是通过工作流平台，工作台界面进行发起流程。

![](.operate_images/e5e94b72.png)

在流程事件选项卡中，可以配置针对整个流程或者针对特定节点的流程事件，流程事件指地是当流程进行到某个节点或接收到某个控制信号时，流程将会进行一个或多个自定义的操作，这些操作来自于预先定义好的代码片段。

![](.operate_images/96bbe757.png)

**消息监听**：当流程执行到消息监听节点，流程系统将等待外部的执行信号，直到收到外部系统的信号，才会继续执行流程。

![](.operate_images/0ebd5797.png)

**审批节点**：审批节点一般用在办公OA和审批上，审批节点指定时，系统会创建指定人的待办任务，审批节点有4种配置方式：指定人、角色、岗位、指定审批组。

![](.operate_images/188fe2e1.png)

**抄送节点**：抄送节点同审批节点，也是支持4种选人策略，抄送节点执行时不会创建用户的待办任务，而是会创建用户的待阅通知。

**自定义活动**：自定义活动节点执行过程中，会调用外部的HTTP接口或者RPC接口，执行自定义活动，有两种方式可选，是否异步以及调用后的执行策略，如果采用**异步的调用方式**，流程引擎会在后台调用外部接口，不影响主流程的执行。
关于调用后执行策略，如果选择的是**继续流程**，则流程执行完毕会自动结束本节点，直接开始下个流程节点的执行，如果选择的是**等待信号**，则接口调用后，会监听外部系统调用流程引擎的接口，直到流程引擎收到外部的信号才可以继续执行流程。

![](.operate_images/96ca535e.png)

**条件网关**：条件网关用在流程的分支执行过程中，通过针对流程变量的参数值进行判断，进行不同的流程路径的控制。

条件网关创建后，条件网关后需要使用条件节点进行连接，条件节点设置后，可以设置基础字段和表单字段，基础字段是系统默认提供的当前登录部门，角色，岗位（指地是当前登录人的信息进行判断）。表单字段是在开始节点中创建的属性。

![](.operate_images/114d341d.png)

### 2.2 发起流程

点击**发起**菜单，之后点击任意一个流程模型即可进行发起流程。

![](.operate_images/00162439.png)

发起流程第一步，需要填写流程配置的流程参数，这些参数会贯穿整个流程，流程在执行任意一个节点中可以读取使用这些流程参数。

![](.operate_images/0f57d6dd.png)

点击右上角提交，可以开始流程执行的流转，流转过程中，流程引擎会分析流程的执行路径，同时，在各个节点执行过程，会触发各个节点的执行业务逻辑。

### 2.3 流程实例

流程发起成功后，在流程实例中，可以看到当前流程的流转执行情况。

![](.operate_images/2d5437f3.png)

点击流程实例，进入到流程实例详情，可以看到流程的属性，流程当前的执行情况，流程的审批日志和流程的流转日志。

![](.operate_images/bfead8b9.png)

通过右上角**流程控制**按钮，可以进行流程实例的**完成、挂起、激活、作废**4种操作。

**流程完成**指的是将当前执行中的节点进行完成，将当前流程节点改为已完成。

**挂起**指的是将当前流程状态改为暂停状态。

**激活**指的是将当前流程状态从暂停状态恢复，继续进行流程的流转。

**作废**指的是将流程进行停止，状态改为废弃状态。

## 3. 外部接口

流程引擎提供一个流程节点完成的接口，当业务系统执行完各自的业务逻辑后，调用流程引擎的接口，即可将流程节点进行完成，从而流程引擎可以继续执行流程流转。

下面提供一个业务系统调用流程引擎的代码示例，如下：

```java

@GetResource(name = "回调流程引擎接口，告知流程引擎某个业务节点执行完成", path = "/beCalled/finish", requiredLogin = false, requiredPermission = false)
public ResponseData<?> beCalledFinish(@RequestParam Long runtimeNodeId) {

    HashMap<String, Object> stringObjectHashMap = new HashMap<>();
    stringObjectHashMap.put("runtimeNodeId", runtimeNodeId);

    HttpRequest request = HttpUtil.createRequest(Method.POST, "http://192.168.31.111:8081/workflowOpenApi/finishNode");
    request = request.body(JSON.toJSONString(stringObjectHashMap));
    HttpResponse execute = request.execute();
    System.out.println("请求工作流的open api，结束工作流运行时节点，获取到结果是：" + execute.body());

    System.out.println(DateUtil.formatDateTime(new Date()) + "  结束某个节点---调用流程完成接口");
    return new SuccessResponseData<>();
}
```

