工作流引擎技术介绍-Flowable例子(五)
共 2971字,需浏览 6分钟
·
2021-10-20 23:09
介绍目前开源工作流现状 介绍flowable 介绍BPMN2.0 比较flowable和activiti flowable例子(一)-工时申报流程 flowable例子(二)-请假流程 flowable例子(三)-保险索赔案例流程 flowable例子(四)-消息队列交互流程 flowable例子(五)-消费者评论分析流程 flowable不足及扩展 Flowable技术细讲
初创公司,其首要任务是客户满意度。我们将构建一个软件解决方案,让用
户可以评价他们的满意度。客户就可以通过我们的网站提供评论。然后通过应用程序将此评论发送到 Kafka
队列。在我们的主要客户应用程序中,我们为每个客户提供了一个 CMMN
案例。这使我们能够对特定客户的所有评论进行分组,启动评价分析流程。如果我们收到差评,我们会为其中一名员工启动一项任务,以便他们能够纠正与客户的关系。
五、客户关系维护系统
需求描述:
每当注册新客户时,我们都会创建一个案例。此案例将在“活动订阅”阶段开始并等待相关的可能事件:(演示,我们只实现了“收到评论”事件)
收到评论
收到客户业务支持请求
定时器事件
收到停用
架构:
底部是一个 Kafka 事件流,负责传输所有事件。客户通过 React UI,将事件提交给审查服务。
UI客户端服务(Review Service – Spring Boot 应用程序),它使用 Spring WebFlux 从我们的 UI 接收评论并将它们传输到 Kafka。
评论将写入Kafka消息队列。
{
"userId": "tdx",
"stationId": 5, //站点ID
"rating": 5, //评分-5星好评
"comment": "滑板车很好用!!!" //评论
}
客户关系维护服务(CustomerRelationShipService – Flowable - Spring Boot 应用程序),启动客户案例以及客户的流程。将接收客户评价和发出分析请求并获取到评价分析结果。(这里我们只关心客户评价事件)
公司后台任务管理(FlowableTaskApplication – Flowable - Spring Boot 应用程序),连接到与客户关系维护服务相同的数据库,员工可以在其中与客户案例进行交互。当收到差评,我们会为其中一名员工启动一项任务,以便他们能够纠正与客户的关系。
评价分析服务 (SentimentAnalysisService – Flowable - Spring Boot 应用程序),使用一个流程来执行评论分析。
网关 Spring Cloud API Gateway – 用于将流量从 UI 重定向到适当的微服务。
建模分析:
1.案例模型中接收客户评价事件
同样需要配置Kafka参数映射到流程变量,以及条件过滤。
只有用户ID和启动案例模型用户ID相等的Kafka消息才会被消费。
2.消费到消息后,会执行评价分析流程。
这里将用户ID和评价作为参数
3.子流程启动被进入第一节点,发送评价分析请求,并等待分析结果
同样需要配置发送消息、接收触发消息事件
发送消息
发送消息-流程变量映射Kafka消息内容
接收触发消息
消息映射流程变量
消息过滤条件
4.评价分析服务
接收Kafka消息并启动流程
Kafka消息映射流程变量
将分析结果发送回Kafka
流程变量映射到Kafka消息内容
演示运行:
环境:
安装kafka
安装zookeeper
docker run --privileged=true -d
--name zookeeper --publish 2181:2181 -d zookeeper:latest
安装kafka
docker run -d --name kafka
--publish 9092:9092 --link zookeeper
--env KAFKA_ZOOKEEPER_CONNECT=zookeeper:2181
--env KAFKA_ADVERTISED_HOST_NAME=localhost
--env KAFKA_ADVERTISED_PORT=9092 wurstmeister/kafka
安装kafkaManager
docker run -d --name kafka-manager
--link zookeeper:zookeeper --link kafka:kafka
-p 9001:9000 --restart=always
--env ZK_HOSTS=zookeeper:2181 sheepkiller/kafka-manager
测试kafka是否安装成功
//创建topic
bin/kafka-topics.sh --create --zookeeper zookeeper :2181 --replication-factor 1 --partitions 1 --topic mykafka
//查看topic
bin/kafka-topics.sh --list --zookeeper zookeeper :2181
//创建生产者
bin/kafka-console-producer.sh --broker-list zookeeper :9092 --topic mykafka
//创建消费者
bin/kafka-console-consumer.sh --zookeeper zookeeper :2181 --topic mykafka --from-beginning
flowable配置
2.本来案例创建应该嵌入到用户注册逻辑中,由于是演示,我们以启动表单的形式指定案例归属于哪个用户。
这样,我们就启动了一个属于用户【土豆仙】的用户关系 维护案例,案例处在[激活订阅]这一阶段
3.UI界面提交评论,并将数据传输到kafka
kafka消息内容
{
"userId":2,
"stationId":1,
"rating":5,
"comment":"非常好用!"
}
案例接收到消息,流转到[调用评价分析流程]节点
查看活动的流程,确实已经启动
3.完成对应任务,流转到[请求评价分析]节点,会自动向kafka发送一条消息
同时,评价分析会接收到kafka消息,启动分析流程,完成该任务审核
4.由于处理评价识别,我们是模拟的随机
random.nextBoolean() ? "negative" : "positive";
这一次的评价,随机判定为积极的评价,则不做处理。
(重新发送一条评价,并完成对应审核)
当判定为消极评价,我们会流转到应对消极评价的处理分支中去。
实际生产环境,可以去掉上面的两步审核,并完善针对评价语句的自动分析识别逻辑。这样,我们就完成了一套针对客户评价自动识别,并作出即时响应的客户关系维护系统。一旦识别到客户不满意,则会走人工联系处理。