工作流引擎技術(shù)介紹-Flowable例子(五)
介紹目前開(kāi)源工作流現(xiàn)狀 介紹flowable 介紹BPMN2.0 比較flowable和activiti flowable例子(一)-工時(shí)申報(bào)流程 flowable例子(二)-請(qǐng)假流程 flowable例子(三)-保險(xiǎn)索賠案例流程 flowable例子(四)-消息隊(duì)列交互流程 flowable例子(五)-消費(fèi)者評(píng)論分析流程 flowable不足及擴(kuò)展 Flowable技術(shù)細(xì)講
?? ?? 初創(chuàng)公司,其首要任務(wù)是客戶滿意度。我們將構(gòu)建一個(gè)軟件解決方案,讓用
戶可以評(píng)價(jià)他們的滿意度??蛻艟涂梢酝ㄟ^(guò)我們的網(wǎng)站提供評(píng)論。然后通過(guò)應(yīng)用程序?qū)⒋嗽u(píng)論發(fā)送到 Kafka
隊(duì)列。在我們的主要客戶應(yīng)用程序中,我們?yōu)槊總€(gè)客戶提供了一個(gè) CMMN
案例。這使我們能夠?qū)μ囟蛻舻乃性u(píng)論進(jìn)行分組,啟動(dòng)評(píng)價(jià)分析流程。如果我們收到差評(píng),我們會(huì)為其中一名員工啟動(dòng)一項(xiàng)任務(wù),以便他們能夠糾正與客戶的關(guān)系。
五、客戶關(guān)系維護(hù)系統(tǒng)
需求描述:
? 每當(dāng)注冊(cè)新客戶時(shí),我們都會(huì)創(chuàng)建一個(gè)案例。此案例將在“活動(dòng)訂閱”階段開(kāi)始并等待相關(guān)的可能事件:(演示,我們只實(shí)現(xiàn)了“收到評(píng)論”事件)
收到評(píng)論
收到客戶業(yè)務(wù)支持請(qǐng)求
定時(shí)器事件
收到停用
架構(gòu):

??? 底部是一個(gè) Kafka 事件流,負(fù)責(zé)傳輸所有事件。客戶通過(guò) React UI,將事件提交給審查服務(wù)。
UI客戶端服務(wù)(Review Service – Spring Boot 應(yīng)用程序),它使用 Spring WebFlux 從我們的 UI 接收評(píng)論并將它們傳輸?shù)?Kafka。

評(píng)論將寫入Kafka消息隊(duì)列。
{"userId": "tdx",??"stationId":?5,?//站點(diǎn)ID??"rating":?5,?//評(píng)分-5星好評(píng)??"comment":?"滑板車很好用?。?!"?//評(píng)論}
客戶關(guān)系維護(hù)服務(wù)(CustomerRelationShipService – Flowable - Spring Boot 應(yīng)用程序),啟動(dòng)客戶案例以及客戶的流程。將接收客戶評(píng)價(jià)和發(fā)出分析請(qǐng)求并獲取到評(píng)價(jià)分析結(jié)果。(這里我們只關(guān)心客戶評(píng)價(jià)事件)

公司后臺(tái)任務(wù)管理(FlowableTaskApplication – Flowable - Spring Boot 應(yīng)用程序),連接到與客戶關(guān)系維護(hù)服務(wù)相同的數(shù)據(jù)庫(kù),員工可以在其中與客戶案例進(jìn)行交互。當(dāng)收到差評(píng),我們會(huì)為其中一名員工啟動(dòng)一項(xiàng)任務(wù),以便他們能夠糾正與客戶的關(guān)系。

評(píng)價(jià)分析服務(wù) (SentimentAnalysisService – Flowable - Spring Boot 應(yīng)用程序),使用一個(gè)流程來(lái)執(zhí)行評(píng)論分析。

網(wǎng)關(guān)? Spring Cloud API Gateway – 用于將流量從 UI 重定向到適當(dāng)?shù)奈⒎?wù)。
建模分析:
1.案例模型中接收客戶評(píng)價(jià)事件

同樣需要配置Kafka參數(shù)映射到流程變量,以及條件過(guò)濾。

只有用戶ID和啟動(dòng)案例模型用戶ID相等的Kafka消息才會(huì)被消費(fèi)。

2.消費(fèi)到消息后,會(huì)執(zhí)行評(píng)價(jià)分析流程。

這里將用戶ID和評(píng)價(jià)作為參數(shù)

3.子流程啟動(dòng)被進(jìn)入第一節(jié)點(diǎn),發(fā)送評(píng)價(jià)分析請(qǐng)求,并等待分析結(jié)果

同樣需要配置發(fā)送消息、接收觸發(fā)消息事件
發(fā)送消息

發(fā)送消息-流程變量映射Kafka消息內(nèi)容

接收觸發(fā)消息

消息映射流程變量

消息過(guò)濾條件

4.評(píng)價(jià)分析服務(wù)
接收Kafka消息并啟動(dòng)流程

Kafka消息映射流程變量

將分析結(jié)果發(fā)送回Kafka

流程變量映射到Kafka消息內(nèi)容

演示運(yùn)行:
環(huán)境:
安裝kafka
安裝zookeeperdocker?run?--privileged=true?-d?--name?zookeeper?--publish?2181:2181?-d?zookeeper:latest安裝kafkadocker 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安裝kafkaManagerdocker run -d --name kafka-manager--link zookeeper:zookeeper --link kafka:kafka-p 9001:9000 --restart=always--env ZK_HOSTS=zookeeper:2181 sheepkiller/kafka-manager測(cè)試kafka是否安裝成功//創(chuàng)建topicbin/kafka-topics.sh?--create?--zookeeper?zookeeper?:2181?--replication-factor?1?--partitions?1?--topic?mykafka//查看topicbin/kafka-topics.sh?--list?--zookeeper?zookeeper?:2181//創(chuàng)建生產(chǎn)者bin/kafka-console-producer.sh?--broker-list?zookeeper?:9092?--topic?mykafka?//創(chuàng)建消費(fèi)者bin/kafka-console-consumer.sh --zookeeper zookeeper :2181 --topic mykafka --from-beginning
flowable配置

2.本來(lái)案例創(chuàng)建應(yīng)該嵌入到用戶注冊(cè)邏輯中,由于是演示,我們以啟動(dòng)表單的形式指定案例歸屬于哪個(gè)用戶。

這樣,我們就啟動(dòng)了一個(gè)屬于用戶【土豆仙】的用戶關(guān)系 維護(hù)案例,案例處在[激活訂閱]這一階段

3.UI界面提交評(píng)論,并將數(shù)據(jù)傳輸?shù)絢afka

kafka消息內(nèi)容
{"userId":2,"stationId":1,"rating":5,"comment":"非常好用!"}
案例接收到消息,流轉(zhuǎn)到[調(diào)用評(píng)價(jià)分析流程]節(jié)點(diǎn)

查看活動(dòng)的流程,確實(shí)已經(jīng)啟動(dòng)

3.完成對(duì)應(yīng)任務(wù),流轉(zhuǎn)到[請(qǐng)求評(píng)價(jià)分析]節(jié)點(diǎn),會(huì)自動(dòng)向kafka發(fā)送一條消息

同時(shí),評(píng)價(jià)分析會(huì)接收到kafka消息,啟動(dòng)分析流程,完成該任務(wù)審核

4.由于處理評(píng)價(jià)識(shí)別,我們是模擬的隨機(jī)
random.nextBoolean() ? "negative" : "positive";這一次的評(píng)價(jià),隨機(jī)判定為積極的評(píng)價(jià),則不做處理。

(重新發(fā)送一條評(píng)價(jià),并完成對(duì)應(yīng)審核)
當(dāng)判定為消極評(píng)價(jià),我們會(huì)流轉(zhuǎn)到應(yīng)對(duì)消極評(píng)價(jià)的處理分支中去。

? 實(shí)際生產(chǎn)環(huán)境,可以去掉上面的兩步審核,并完善針對(duì)評(píng)價(jià)語(yǔ)句的自動(dòng)分析識(shí)別邏輯。這樣,我們就完成了一套針對(duì)客戶評(píng)價(jià)自動(dòng)識(shí)別,并作出即時(shí)響應(yīng)的客戶關(guān)系維護(hù)系統(tǒng)。一旦識(shí)別到客戶不滿意,則會(huì)走人工聯(lián)系處理。
