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

简介: 通过简单的业务场景进行举例,介绍如果通过云巧流程组件的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版的基础消息收发功能,涵盖实例创建、Topic、Group资源创建以及消息收发体验等基础功能模块。
消息队列 MNS 入门课程
1、消息队列MNS简介 本节课介绍消息队列的MNS的基础概念 2、消息队列MNS特性 本节课介绍消息队列的MNS的主要特性 3、MNS的最佳实践及场景应用 本节课介绍消息队列的MNS的最佳实践及场景应用案例 4、手把手系列:消息队列MNS实操讲 本节课介绍消息队列的MNS的实际操作演示 5、动手实验:基于MNS,0基础轻松构建 Web Client 本节课带您一起基于MNS,0基础轻松构建 Web Client
相关文章
|
4天前
|
人工智能 开发框架 JavaScript
LowCodeEngine:阿里开源的企业级低代码开发平台,提供预制的 UI 组件和模板,覆盖完整的研发周期
LowCodeEngine 是阿里巴巴开源的低代码开发框架,旨在通过拖拽、配置等简单操作,帮助开发者快速构建复杂的系统页面,提升开发效率和质量。
36 4
LowCodeEngine:阿里开源的企业级低代码开发平台,提供预制的 UI 组件和模板,覆盖完整的研发周期
|
存储 数据可视化 JavaScript
(低代码)可视化搭建平台数据源设计剖析
低代码平台属于APaaS(应用平台即服务),其解决的是企业内部应用协调和人效成本的问题. 随着计算机技术诸如云服务等的发展, 传统软件服务已无法满足数字化浪潮的压力,
1078 0
|
8月前
|
前端开发 数据可视化 JavaScript
探索前端可视化开发:低代码平台原理与实践
【4月更文挑战第7天】本文探讨了低代码平台在前端开发中的应用,介绍了其模型驱动、组件化和自动化部署的原理,强调了提升效率、降低技术门槛、灵活适应变更和保证一致性等优势。建议开发者明确适用场景,选择合适平台,并培养团队低代码技能,同时规划与现有技术栈的融合,实施持续优化治理。低代码平台正改变开发格局,为业务创新和数字化转型提供新途径。
339 0
|
8月前
|
前端开发
基于jeecgboot流程管理平台的自定义业务表单集成方法
基于jeecgboot流程管理平台的自定义业务表单集成方法
176 0
|
8月前
|
人工智能 API 开发工具
基于流程编排工具低代码搭建大模型应用
流程编排是一种面向开发者的可视化开发工具,支持LLM、API、脚本等类型节点,旨在简化接入大型语言模型(LLM)流程,同时提供应用流程的全生命周期管理,包括流程的编排、试验、部署等,为开发者提供自定义AI应用开发一站式服务。
|
弹性计算 算法 Oracle
低代码应用构建流程和适用场景分享
软件开发从机器语言时代开始,历经以汇编语言为代表的低级语言时代、以Java等面向对象的语言为代表的高级语言时代、以Oracle等为代表的第四代语言,逐渐发展到现在的低代码/零代码时代。低代码编程技术的出现,将软件开发的复杂性留给了开发平台的研发,致力于减少影响软件开发效率的不确定性因子,如人员来回沟通、业务与技术的Gap、人员技能差异、新技术复杂集成等,以期达到提升开发效率的目的。
347 0
低代码应用构建流程和适用场景分享
|
数据可视化 前端开发 JavaScript
可视化逻辑编排工具——低代码/无代码
可视化逻辑编排工具——低代码/无代码
559 0
|
数据可视化 前端开发 Java
云巧组件如何实现代码架构设计可视化
在项目搭建完成进行了N个迭代之后,往往因为需求的变化以及设计的缺陷导致领域模型、接口、数据库设计等和最开始的时候大为不同,架构设计需要保鲜会花去大量的时间。有没有一种办法可以实时反应项目的各种技术设计呢?就像Swagger一样,代码自动生成文档。我们采用了静态代码扫描的方案,通过代码来反应真实的技术设计,这就是《云巧工坊-应用素描》的功能。
284 0
|
开发框架 数据可视化 Java
使用云巧工坊编写业务流程并可视化
软件产品都面临业务需求、流程快速变化的现状,往往之前设计绘制的业务流程在几个月之后就会失效的问题,如果按照一定语法开发的代码可以实时正确反应业务流程就解决了业务流程保鲜的问题。yunqiao-boot-starter-flow 就是解决这一问题的开发框架。
334 0
|
数据可视化 小程序 Java
云捷配低代码平台(BPM流程板块)——将“强大+易用”进行到底
云捷配低代码平台的BPM流程板块,秉承云捷配一贯的“强大+易用”产品理念,一方面集成主流Flowable(Activiti),结合平台自身的特色功能模块,打造业内最强大的流程设计器,另一方面,对流程引擎进行了大量的改造和细节化处理,以达到通俗易懂、好用易用的用户使用体验。
568 1
云捷配低代码平台(BPM流程板块)——将“强大+易用”进行到底