【前沿技术RPA】 一文了解UiPath 机器人企业框架 (REFramework)
🐋作者簡介:博主是一位.Net開發(fā)者,同時(shí)也是RPA和低代碼平臺的踐行者。
🐬個(gè)人主頁:會敲鍵盤的肘子
🐰系列專欄:UiPath
🦀專欄簡介:UiPath在傳統(tǒng)的RPA(Robotic process automation)的基礎(chǔ)上,增加了See(AI通過計(jì)算機(jī)視覺閱讀用戶的計(jì)算機(jī)屏幕)和Think(通過機(jī)器學(xué)習(xí)來發(fā)現(xiàn)平臺能夠?yàn)橛脩魳?gòu)建什么自動化流程)從而不斷幫助用戶自動化構(gòu)建流程,而不僅僅是用戶自主發(fā)現(xiàn),自主構(gòu)建。并且在構(gòu)建的過程當(dāng)中,做到了Low-code甚至是No-code的程度,讓每一位員工都可以自主使用。
🐶座右銘:總有一天你所堅(jiān)持的會反過來擁抱你。
🌈寫在前面:
本博文主要介紹 UiPath 機(jī)器人企業(yè)框架 (REFramework)。我們將討論事務(wù)處理、調(diào)度程序和執(zhí)行程序的概念,還會簡要介紹 REFramework 可以完成的任務(wù)。
👉本文關(guān)鍵字:RPA、UiPath、Low-code、No-code、機(jī)器人企業(yè)框架、REFramework、.Net
文章目錄
- 1?? 背景
- ? 什么是RPA
- ? 什么是UiPath
- ? 為什么使用UiPath
- ? 環(huán)境
- 2?? 事務(wù)處理
- ? 定義
- ? 線性
- ? 迭代
- ? 事務(wù)性
- ? 適合使用事務(wù)流程的業(yè)務(wù)場景
- 3?? REFramework
- ? 定義
- ? 初始狀態(tài)
- ? 獲取事務(wù)狀態(tài)
- ? 流程事務(wù)狀態(tài)
- ? 結(jié)束流程狀態(tài)
- 4?? REFramework 的功能
- ? 設(shè)置
- ? 日志記錄
- ? 業(yè)務(wù)異常和應(yīng)用程序異常
- 5?? 調(diào)度程序和執(zhí)行程序
- ? 調(diào)度程序
- ? 執(zhí)行程序
- 6?? 調(diào)度程序和 REFramework 執(zhí)行程序演示
- ? 創(chuàng)建REFramework項(xiàng)目
- ? Initialization
- ? Get Transaction Data
- ? Process Transaction
- ? End Process
- ? 方法
- 7?? 參考資料
1?? 背景
? 什么是RPA
RPA(Robotic process automation) 代表機(jī)器人過程自動化。
它是一種軟件程序,可在與計(jì)算機(jī)應(yīng)用程序交互時(shí)模仿人類行為并實(shí)現(xiàn)重復(fù)的、基于規(guī)則的流程的自動化。
? 什么是UiPath
UiPath 是一種機(jī)器人流程自動化工具,用于自動化枯燥和重復(fù)的任務(wù)。它由羅馬尼亞企業(yè)家 Daniel Dines 和 Marius Trica 于 2005 年創(chuàng)立。它還消除了自動化無聊任務(wù)的人工干預(yù),并為所有活動提供了拖放功能,它是最簡單的 RPA 工具。
? 為什么使用UiPath
UiPath在傳統(tǒng)的RPA的基礎(chǔ)上,增加了See(AI通過計(jì)算機(jī)視覺閱讀用戶的計(jì)算機(jī)屏幕)和Think(通過機(jī)器學(xué)習(xí)來發(fā)現(xiàn)平臺能夠?yàn)橛脩魳?gòu)建什么自動化流程)從而不斷幫助用戶自動化構(gòu)建流程,而不僅僅是用戶自主發(fā)現(xiàn),自主構(gòu)建。并且在構(gòu)建的過程當(dāng)中,做到了Low-code甚至是No-code的程度,讓每一位員工都可以自主使用。
? 環(huán)境
-
UiPath Studio Community 2022.4.3
-
Windows 10
-
.Net
2?? 事務(wù)處理
? 定義
事務(wù)是指對數(shù)據(jù)進(jìn)行處理所需要的最小(原子)數(shù)據(jù)量以及必要的步驟,其目的是為了完成業(yè)務(wù)流程的一個(gè)部分。從郵箱中讀取一封電子郵件,然后從電子郵件中提取數(shù)據(jù)的流程就是一個(gè)典型事務(wù)示例。
我們把事務(wù)數(shù)據(jù)稱為原子數(shù)據(jù)是因?yàn)橐坏┩瓿蓴?shù)據(jù)處理,即可假設(shè)在繼續(xù)處理業(yè)務(wù)流程時(shí)不再需要這些數(shù)據(jù)。
考慮到業(yè)務(wù)流程的步驟及其重復(fù)執(zhí)行方式,我們可以將業(yè)務(wù)流程分為以下三個(gè)類別:
? 線性
流程中的步驟僅執(zhí)行一次,如果需要處理不同的數(shù)據(jù),則需要再次執(zhí)行自動化。例如,回到在本章簡介部分介紹的電子郵件示例,當(dāng)收到新電子郵件時(shí),系統(tǒng)需要再次執(zhí)行自動化才能進(jìn)行處理。
線性流程通常很簡單,而且很容易實(shí)施,但不太適合需要使用不同數(shù)據(jù)重復(fù)執(zhí)行步驟的情況。
? 迭代
流程中的步驟可以執(zhí)行多次,但每次使用不同的數(shù)據(jù)項(xiàng)目。例如,自動化可以檢索多封電子郵件并迭代執(zhí)行相同的步驟,而不是每執(zhí)行一次僅讀取一封電子郵件。
這種流程可以通過簡單的循環(huán)實(shí)現(xiàn),但缺點(diǎn)是,如果在處理一個(gè)項(xiàng)目時(shí)出現(xiàn)問題,整個(gè)流程就會中斷,因此,其他項(xiàng)目將無法得到處理。
? 事務(wù)性
與迭代流程相似,事務(wù)性流程的步驟也會使用不同的數(shù)據(jù)項(xiàng)目來重復(fù)執(zhí)行多次。但是,自動化的設(shè)計(jì)使每個(gè)可重復(fù)部分得到獨(dú)立處理。
這些可重復(fù)的部分稱為事務(wù)。事務(wù)相互保持獨(dú)立,因?yàn)樗鼈儾粫蚕砣魏螖?shù)據(jù),也沒有特定的處理順序。
您可以將這三類流程看作自動化項(xiàng)目逐步走向成熟的各個(gè)階段,從簡單的線性任務(wù)開始,經(jīng)過反復(fù)改進(jìn),最后演變?yōu)槭聞?wù)性方法。
不過,凡事沒有絕對規(guī)則,我們要根據(jù)流程的特征(例如,要處理的數(shù)據(jù)以及重復(fù)的頻率)和其他相關(guān)要求(例如,易用性和穩(wěn)定性)來選擇合適的類別。
? 適合使用事務(wù)流程的業(yè)務(wù)場景
- 某個(gè)文件夾中有多張發(fā)票,您需要從發(fā)票中讀取數(shù)據(jù),并將數(shù)據(jù)輸入另一個(gè)系統(tǒng)。在本例中,我們可以將每張發(fā)票視為一個(gè)事務(wù),因?yàn)樗鼈兌夹枰凑罩貜?fù)的流程進(jìn)行處理(即提取數(shù)據(jù)并輸入其他位置)。
- 某個(gè)電子表格中包含人員及其電子郵件地址的列表,您需要向其中每位人員發(fā)送一封電子郵件以及一條個(gè)性化消息。對于每位人員來說,此流程中的步驟(即從電子表格獲取數(shù)據(jù),創(chuàng)建個(gè)性化消息和發(fā)送電子郵件)都是相同的,因此,我們可以將此電子表格中的每一行視為一個(gè)事務(wù)。
- 在尋找新公寓時(shí),我們可以設(shè)立一些條件,然后使用機(jī)器人進(jìn)行搜索。對于每個(gè)搜索結(jié)果,機(jī)器人會提取有關(guān)公寓的信息,并將數(shù)據(jù)插入電子表格中。在本例中,每間公寓的詳細(xì)信息頁面就構(gòu)成了一個(gè)事務(wù)。
3?? REFramework
? 定義
一般來說,框架就是幫助您設(shè)計(jì)(自動化)流程的模板。作為框架,至少要提供一種存儲、讀取和便于修改項(xiàng)目配置數(shù)據(jù)的方法,還要提供強(qiáng)大的異常處理方案,以及關(guān)于所有異常和相關(guān)事務(wù)信息的事件記錄。
REFramework 作為狀態(tài)機(jī)實(shí)現(xiàn),這是一種工作流,具有兩個(gè)非常有用的功能:
- 其一是狀態(tài),它可以根據(jù)指定的輸入,定義要執(zhí)行的操作。
- 其二是轉(zhuǎn)移,它可以根據(jù)狀態(tài)本身的結(jié)果,在狀態(tài)之間切換執(zhí)行。
您可以參考項(xiàng)目組織博文中的狀態(tài)機(jī)。其中介紹了一個(gè)典型的例子,即空調(diào):
- 當(dāng)空調(diào)處于關(guān)閉狀態(tài)時(shí),只需按下開/關(guān)按鈕,它就會切換到空閑狀態(tài);
- 在空閑狀態(tài)下,如果用戶輸入的溫度低于當(dāng)前溫度,它就會切換到加熱狀態(tài);如果高于當(dāng)前溫度,它就會切換到致冷狀態(tài)。一旦達(dá)到需要的溫度,它又會回到空閑狀態(tài);
- 在空閑狀態(tài)下,如果按下開/關(guān)按鈕,它可以切換到關(guān)閉狀態(tài);
- 觸發(fā)這些狀態(tài)轉(zhuǎn)換的所有條件都屬于轉(zhuǎn)移。
基于類似的想法,REFramework 包括 4 種主要狀態(tài)。
? 初始狀態(tài)
這是流程啟動時(shí)的狀態(tài)。我們可以將其視為一種操作。在此操作中,流程會初始化設(shè)置并執(zhí)行應(yīng)用程序檢查,從而確保滿足啟動流程的所有先決條件。
? 獲取事務(wù)狀態(tài)
獲取下一個(gè)事務(wù)項(xiàng)目。它可能是隊(duì)列項(xiàng)目,也可能是集合中的任何項(xiàng)目。
默認(rèn)情況下,事務(wù)項(xiàng)目是隊(duì)列項(xiàng)目,但為了滿足特定的需求,您可以輕松更改其類型。對于這種狀態(tài),開發(fā)者需要設(shè)置沒有項(xiàng)目需要處理時(shí)的退出條件。
? 流程事務(wù)狀態(tài)
通過上一個(gè)步驟獲取事務(wù)項(xiàng)目后,在各個(gè)應(yīng)用程序中執(zhí)行操作/應(yīng)用邏輯。完成事務(wù)項(xiàng)目處理后,流程將繼續(xù)處理下一個(gè)可用的事務(wù)項(xiàng)目。
? 結(jié)束流程狀態(tài)
流程結(jié)束(在自動化期間打開的應(yīng)用程序應(yīng)正常關(guān)閉)。
為了便于理解如何使用 REFramework,下面我們來介紹一個(gè)場景:
某個(gè)電子表格中包含人員及其電子郵件地址的列表,您需要基于模板向其中每位人員發(fā)送一封電子郵件以及一條個(gè)性化消息。
4?? REFramework 的功能
? 設(shè)置
在很多流程中,通常都會使用在初始化階段讀取的某些設(shè)置和配置值。設(shè)置的示例包括用于訪問 Web 應(yīng)用程序的 URL、Orchestrator 隊(duì)列名稱和默認(rèn)記錄消息。
REFramework 先從配置文件 (Config.xlsx) 讀取這些數(shù)據(jù),然后將其存儲在可在不同狀態(tài)之間共享的字典對象 (Config) 中,從而實(shí)現(xiàn)數(shù)據(jù)跟蹤。它提供了一種簡單方法,通過更改配置文件中的值(而不是直接修改工作流)即可維護(hù)項(xiàng)目。
? 日志記錄
REFramework 的另一個(gè)強(qiáng)大功能是內(nèi)置記錄機(jī)制。組成框架的大多數(shù)工作流都使用日志消息活動。這些活動會輸出在基于每個(gè)執(zhí)行步驟發(fā)生情況的詳細(xì)信息上。
這種機(jī)制不僅可用于查找問題,幫助您完成調(diào)試流程,還可用于創(chuàng)建有關(guān)流程執(zhí)行(例如,每天處理了多少張發(fā)票,發(fā)生了多少次故障和引發(fā)故障的主要原因)以及流程本身(例如,一個(gè)月內(nèi)處理的所有報(bào)告的匯總值)的可視化內(nèi)容和報(bào)告。
? 業(yè)務(wù)異常和應(yīng)用程序異常
在執(zhí)行過程中,大多數(shù)流程都可能出現(xiàn)與正常執(zhí)行流程相悖的異常情況,您必須解決問題才能實(shí)現(xiàn)更可靠的自動化。
例如,假設(shè)某個(gè)流程使用了幾個(gè) Web 應(yīng)用程序,但 Web 瀏覽器在某個(gè)點(diǎn)會停止響應(yīng)。如果某個(gè)活動(比如說點(diǎn)擊)嘗試與停止響應(yīng)的應(yīng)用程序交互,則可能會失敗并返回異常。經(jīng)過設(shè)計(jì),REFramework 會嘗試再次處理事務(wù)(即重試)或跳過該事務(wù),從而實(shí)現(xiàn)從異常中恢復(fù)。
如果重新啟動應(yīng)用程序可以解決問題,框架會自動完成操作,并且會再次嘗試處理同一事務(wù)。這些異常稱為應(yīng)用程序異常。
如果問題與數(shù)據(jù)本身或業(yè)務(wù)的基本要求相關(guān)(例如,不處理價(jià)值超過特定金額的發(fā)票),則框架會跳過該事務(wù),并繼續(xù)處理下一個(gè)事務(wù)。這些異常稱為業(yè)務(wù)規(guī)則異常。
5?? 調(diào)度程序和執(zhí)行程序
雖然企業(yè)框架可以使用不同類型的數(shù)據(jù)源,但是企業(yè)框架結(jié)合了一種特殊的數(shù)據(jù)源:Orchestrator Queue,也就是隊(duì)列結(jié)構(gòu)。當(dāng)使用隊(duì)列時(shí),可以定義項(xiàng)目的優(yōu)先級和截止期來追蹤重試或失敗的項(xiàng)目。使用隊(duì)列也啟用了名為“調(diào)度程序和執(zhí)行程序”的執(zhí)行模式。該模式將流程分為兩個(gè)主要階段:調(diào)度要處理的項(xiàng)目并將其添加到隊(duì)列中,然后從隊(duì)列中檢索項(xiàng)目并使用該項(xiàng)目執(zhí)行流程。流程的第二部分通常使用 REFramework 構(gòu)建。
? 調(diào)度程序
調(diào)度程序是用于將事務(wù)項(xiàng)目推送到 Orchestrator 隊(duì)列的流程。它從一個(gè)或多個(gè)來源提取數(shù)據(jù),并使用這些數(shù)據(jù)來創(chuàng)建將由執(zhí)行程序機(jī)器人處理的隊(duì)列項(xiàng)目。
系統(tǒng)將信息推送到一個(gè)或多個(gè)隊(duì)列,從而讓調(diào)度程序?yàn)殛?duì)列項(xiàng)目中存儲的所有數(shù)據(jù)使用通用格式。
使用調(diào)度程序模式的主要優(yōu)點(diǎn)是,您可以在多個(gè)機(jī)器人之間拆分項(xiàng)目的處理。
? 執(zhí)行程序
執(zhí)行程序是用于從 Orchestrator 隊(duì)列中拉取事務(wù)項(xiàng)目,并根據(jù)公司需求處理這些項(xiàng)目的流程。它每次處理一個(gè)隊(duì)列項(xiàng)目。
每個(gè)處理的項(xiàng)目都有錯(cuò)誤處理和重試機(jī)制。
執(zhí)行程序的主要優(yōu)點(diǎn)是可擴(kuò)展性(多個(gè)執(zhí)行程序可以與單個(gè)隊(duì)列一起使用)。
我們?nèi)允褂们笆鐾粓鼍?#xff0c;某個(gè)電子表格中包含人員及其電子郵件地址的列表。您需要基于模板向其中每位人員發(fā)送一封電子郵件以及一條個(gè)性化消息。
我們可以通過以下方式使用“調(diào)度程序和執(zhí)行程序”模式:
調(diào)度程序和執(zhí)行程序模型的優(yōu)點(diǎn):
- 流程分離更明確(調(diào)度程序和執(zhí)行程序之間)
- 架構(gòu)層與流程層的分離和區(qū)分更明確
- 更完善的錯(cuò)誤處理和重試機(jī)制
- 可跨多臺計(jì)算機(jī)運(yùn)行流程(可用性)
- 在項(xiàng)目創(chuàng)建的組件內(nèi)提供更好的可重用性
- 改進(jìn)了內(nèi)置的配置和 Orchestrator 集成
- 輕松調(diào)整和部署以前未使用 REFramework 創(chuàng)建的工作流,從而使用 REFramework 和調(diào)度程序/執(zhí)行程序模型
6?? 調(diào)度程序和 REFramework 執(zhí)行程序演示
? 創(chuàng)建REFramework項(xiàng)目
首先,我們用Templates中的REFramework創(chuàng)建一個(gè)項(xiàng)目,如下圖所示。
Main.xaml 已打開,其中顯示有一個(gè)序列。
在Main文件中我們可以看到上述提到的4個(gè)狀態(tài)。
? Initialization
打開Initialization狀態(tài)機(jī),我們可以看到讀取了Config文件中的Settings和Constants頁的數(shù)據(jù),通過字典類型緩存起來。
在 InitAllSettings 工作流中,您要加載與應(yīng)用程序或流相關(guān)的所有設(shè)置和數(shù)據(jù)。在此狀態(tài)下使用的文件之一是 Config 文件,它位于項(xiàng)目的“數(shù)據(jù)”文件夾中。
其中包含有關(guān)設(shè)置、常量和資產(chǎn)的各種信息。根據(jù)需要,這些信息可用于處理數(shù)據(jù)和配置 REFramework,在“REFramework 深入探索”課程中可以了解有關(guān) Config 文件的詳細(xì)信息。
? Get Transaction Data
? Process Transaction
? End Process
? 方法
1. 調(diào)度程序:-從 Excel 文件獲取條目,并在 Orchestrator 中將其添加為隊(duì)列項(xiàng)目。
首先,我們創(chuàng)建了一個(gè)序列項(xiàng)目,然后添加了“Try Catch 異常處理”活動。在“嘗試”塊中:
- 我們使用“讀取范圍”讀取 Excel 文件中的前 10 行(A1:C11),并將其存儲在新建的 DataTable 變量中;
- 我們使用“遍歷每一行”來循環(huán)遍歷的 DataTable 變量中行,并使用“添加隊(duì)列項(xiàng)目”活動將其添加到隊(duì)列中。
- 我們使用“日志消息”活動來記錄已成功執(zhí)行調(diào)度流程的消息。
2. 執(zhí)行程序- 從隊(duì)列中獲取并處理項(xiàng)目(事務(wù))
a. 在初始狀態(tài)下:
- 調(diào)用 InitAllSettings 工作流,以初始化使用的應(yīng)用程序和流程的所有設(shè)置和數(shù)據(jù)。在這個(gè)部分,系統(tǒng)將讀取“數(shù)據(jù)”文件夾中 Config.xlsx 文件的設(shè)置、常量和資產(chǎn);
- 調(diào)用 InitAllApps 工作流,以打開應(yīng)用并檢查其狀態(tài)、憑據(jù)等;
- 調(diào)用 KillAllProcesses 工作流,以保留使用的應(yīng)用程序的單個(gè)實(shí)例。
任何系統(tǒng)錯(cuò)誤都會讓流程進(jìn)入結(jié)束流程狀態(tài)。
b. 在獲取事務(wù)數(shù)據(jù)狀態(tài)下:
- 在序列中,使用 “should stop” 活動來驗(yàn)證 Orchestrator 是否發(fā)送了停止信號。
- 如果沒有, 則調(diào)用獲取事務(wù)數(shù)據(jù)工作流,該工作流使用獲取隊(duì)列項(xiàng)目活動來從 Orchestrator 獲取事務(wù)信息。
如果沒有要讀取的數(shù)據(jù),它會進(jìn)入結(jié)束流程狀態(tài)。
c. 在流程事務(wù)狀態(tài)下:
-
流程是一個(gè)使用“嘗試捕獲”活動集來捕獲系統(tǒng)異常和業(yè)務(wù)異常的序列。
-
在“嘗試”塊中,調(diào)用“處理事務(wù)”工作流,它具有一個(gè)簡單的流程,用于:
- 附加到 UiDemo 應(yīng)用程序
- 3 個(gè)“輸入信息”活動用于填寫“兌現(xiàn)”、“銀行內(nèi)求償支票”和“非銀行內(nèi)求償支票”字段;
- 'Click“接受”按鈕。
d. 在結(jié)束流程狀態(tài)下,使用“關(guān)閉應(yīng)用程序”。
7?? 參考資料
GitHub UiPath REFramework
?寫在結(jié)尾:
文章中出現(xiàn)的任何錯(cuò)誤請大家批評指出,一定及時(shí)修改。
希望寫在這里的小伙伴能給個(gè)三連支持!
總結(jié)
以上是生活随笔為你收集整理的【前沿技术RPA】 一文了解UiPath 机器人企业框架 (REFramework)的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Excel 筛选重复值和删除重复值的异同
- 下一篇: JVM垃圾收集器