【组件开发实践】云巧流程组件对接实践

简介: 通过简单的业务场景进行举例,介绍如果通过云巧流程组件的API进行集成对接

1. 用户需求

假设A系统有如下员工请假审批流场景:

员工请假小于等于3天,只需主管直接审批;大于3天需要主管先审批,审批通过后再由二级主管进行审批。当员工请假审批流节后后,需要通知A系统进行业务处理(例如:如果同意,则扣除相应假期,如果拒绝,则不扣除)。

2. 需求分析

通过对用户故事的分析,需要经过如下步骤完成此需求。

  1. 进入流程组件,在流程组件里设计上述“员工请假审批流”
  2. A系统内实现“员工请假审批流”结束后的业务自定义处理逻辑。
  3. A系统内实现通过流程组件API 发起“员工请假审批流”
  4. 用户在A系统发起“员工请假审批流”。

3. 前置条件

已部署云巧流程组件,且服务已正常运行。

4. 服务接入

1. 流程设计

1. 设计流程图:进入流程组件,设计如下的流程图,流程编码employee_leave

2. 新增办理人变量:点击画布空白页,进入“流程配置”,新增如下“流程变量”,作为“主管审批”“二级主管审批”的办理人变量。

3. 设置用户任务节点办理人:在“主管审批”节点设置办理人变量为“主管”。在“二级主管审批”节点设置办理人变量为“二级主管”

4. 设置排他网关条件,其中approve为排他网关入口用户任务的处理结果变量(true为同意、false为拒绝),leaveDays为业务定义的请假天数变量,&&表示且的意思:

  • 拒绝:${!approve}
  • 同意-且小于等于3天:${approve && leaveDays<=3}
  • 同意-且大于3天:${approve  && leaveDays>3}

2. A系统实现流程结束后的处理逻辑

在A系统中实现流程结束后的处理逻辑B,然后订阅并消费流程组件的RocketMQ消息,消费流程组件RocketMQ消息时根据消息体内的流程实例ID、流程实例结果、...等字段调用处理逻辑B完成业务处理。

【备注】流程组件RocketMQ消息:

○ 流程事件TOPIC:为流程后端服务FLOW_NOTICE_ROCKETMQ_TOPIC_EVENT环境变量值,或flow.notice.rocketmq.topic.event配置值,默认为FLOW_EVENT。

○ 流程事件Tag:流程编码(例如:此用户故事即为employee_leave)。

○ 流程事件消息体类型:包括流程开始、流程结束、任务开始、任务结束、任务转办等事件消息。

3. A系统发起流程

  1. 引入流程组件API二方包。
<dependency><groupId>com.aliyun.gts</groupId><artifactId>flow-facade-api</artifactId><version>${flow.version}</version></dependency>


  1. 注入流程组件API类。

在A系统的Application启动类上使用如下Feign注解自动注入流程组件API类FlowProcessApi.class

@EnableFeignClients(clients= {FlowProcessApi.class})
publicclassFlowApplication {
// ....}
  • 当A系统和流程组件在同一个集群,且使用Nacos作为服务注册发现时,此处需要在A系统配置Nacos服务发现相关配置,如已经配置,则忽略。
  • 当不在一个集群,或在一个集群但未使用Nacos作为服务注册发现时,需要在A系统新增flow.be.url配置项,即流程组件后端服务地址。


  1. 参考如下方式发起“员工请假审批流”
// 员工请假审批流 流程编码finalStringemployeeLeaveProcessKey="employee_leave";
// 主管用户IDStringleaderId="xxx";
// 二级主管用户IDStringsecondaryLeaderId="yyy";
// 请假天数,应从业务系统传入,此处为了演示写为5IntegerleaveDays=5;
// 请假人ID(即流程发起人ID)StringuserId="1";
// 租户ID(如果没有租户概念,默认写为1)StringtenantId="1";
// 构造流程发起请求FlowProcessStartRequestflowProcessStartRequest=newFlowProcessStartRequest();
// 设置流程编码flowProcessStartRequest.setProcessDefinitionKey("employee_leave");
// 设置流程变量,包括审批人变量和请假天数变量Map<String, Object>variables=newHashMap<>();
variables.put("leader", leaderId);
variables.put("secondaryLeader", secondaryLeaderId);
variables.put("leaveDays", leaveDays);
flowProcessStartRequest.setVariables(variables);
ResultResponse<String>response=flowProcessApi.startProcess(flowProcessStartRequest, userId, tenantId);
if (response.getSuccess()) {
// 发起成功// 获取此流程的流程实例IDStringprocessInstanceId=response.getData();
// 保存流程实例ID与业务系统内对象的关系,用于后续收到流程结束的通知后查询对应的业务对象// ....} else {
// 发起失败// 获取失败的错误信息和错误码Stringmessage=response.getMessage();
Stringcode=response.getCode();
// 执行发起失败逻辑// ....}


相关实践学习
快速体验阿里云云消息队列RocketMQ版
本实验将带您快速体验使用云消息队列RocketMQ版Serverless系列实例进行获取接入点、创建Topic、创建订阅组、收发消息、查看消息轨迹和仪表盘。
消息队列 MNS 入门课程
1、消息队列MNS简介 本节课介绍消息队列的MNS的基础概念 2、消息队列MNS特性 本节课介绍消息队列的MNS的主要特性 3、MNS的最佳实践及场景应用 本节课介绍消息队列的MNS的最佳实践及场景应用案例 4、手把手系列:消息队列MNS实操讲 本节课介绍消息队列的MNS的实际操作演示 5、动手实验:基于MNS,0基础轻松构建 Web Client 本节课带您一起基于MNS,0基础轻松构建 Web Client
相关文章
|
缓存 运维 安全
云巧组件标准
可组装式应用的理论,结合了云原生的理念和交付质量要求,云巧对云巧组件设计了六大维度的标准。根据这六大维度名称的英文首字母组成单词ACCORD
2678 0
|
网络协议 Linux Android开发
解决GitHub无法访问的问题:手动修改hosts文件与使用SwitchHosts工具
解决GitHub无法访问的问题:手动修改hosts文件与使用SwitchHosts工具
1331 1
|
C#
【C#】 如何实现文本框历史记录提示功能
【C#】 如何实现文本框历史记录提示功能
237 0
|
数据可视化 IDE 安全
云巧-让开发更简单,更高效,更方便
近年来,快速迭代的新需求将引导企业改变其开发方式,进而转向使用支持快速、安全和高效的技术架构,组装式应用便成为了企业重要的战略技术趋势。组装式应用引入模块化的理念,使得各企业可以更敏捷、更有效地复用能力模块,提高商业的韧性和效率。云巧平台应运而生,能极大的改善开发环境,节省开发工作量,让开发更简单,更高效,更方便。
2255 0
|
1月前
|
JavaScript Java 关系型数据库
基于springboot的古树名木保护管理系统
本研究针对古树保护面临的严峻挑战,构建基于Java、Vue、MySQL与Spring Boot技术的信息化管理系统,实现古树资源的动态监测、数据管理与科学保护,推动生态、文化与经济可持续发展。
|
1月前
|
NoSQL 关系型数据库 MySQL
改了 Nacos 一行配置,搞崩线上支付系统!
Nacos服务注册默认使用临时实例,通过心跳机制实时感知服务状态,适合支付、订单等动态业务。持久化实例由服务端探活,适用于MySQL、Redis等静态组件。配置中心所有配置均持久化,无“临时”概念,动态更新指内容变更而非生命周期短暂。正确理解差异,避免因`ephemeral=false`误配导致生产事故。
133 1
|
1月前
|
XML Java 应用服务中间件
【SpringBoot(一)】Spring的认知、容器功能讲解与自动装配原理的入门,带你熟悉Springboot中基本的注解使用
SpringBoot专栏开篇第一章,讲述认识SpringBoot、Bean容器功能的讲解、自动装配原理的入门,还有其他常用的Springboot注解!如果想要了解SpringBoot,那么就进来看看吧!
365 2
|
运维 前端开发 Java
云巧组装式交付介绍
Gartner在2021年10月19日,正式发布了2022年重要战略趋势。其中包括了“组装式应用”这一战略。 云巧是“组装式应用”理念的落地,是围绕生态,面向产业的首个产业数字组件中心。 你可以从本文了解组装式开发的理念,以及阿里云GTS通过组装式理念交付项目的最佳实践:云巧。 如果你是阿里及阿里云生态合作伙伴的开发者,可以进一步访问云巧首页:https://gts.work/portal/yunqiao ,进一步了解云巧的能力。 即使你不是阿里及阿里云生态合作伙伴的开发者,也可以在自己的日常的开发过程中通过运用可组装式理念提升业务交付效率。
6170 1
云巧组装式交付介绍
|
JSON Prometheus Cloud Native
Grafana 系列 -Loki- 基于日志实现告警
Grafana 系列 -Loki- 基于日志实现告警
|
JavaScript 网络协议 前端开发
深入 webpack,直接使用 webpack-dev-server 轻松创建一个可以热加载的本地服务器
深入 webpack,直接使用 webpack-dev-server 轻松创建一个可以热加载的本地服务器
459 0