Warning: error_log(/data/www/wwwroot/hmttv.cn/caches/error_log.php): failed to open stream: Permission denied in /data/www/wwwroot/hmttv.cn/phpcms/libs/functions/global.func.php on line 537 Warning: error_log(/data/www/wwwroot/hmttv.cn/caches/error_log.php): failed to open stream: Permission denied in /data/www/wwwroot/hmttv.cn/phpcms/libs/functions/global.func.php on line 537
RPA之家()是中國(guó)具有影響力的RPA垂直交流社區(qū),社區(qū)匯聚了RPA領(lǐng)域的各類從業(yè)人員。其中包括RPA開發(fā)工程師、售前工程師、業(yè)務(wù)分析師、架構(gòu)師、運(yùn)維工程師、項(xiàng)目管理、項(xiàng)目負(fù)責(zé)人、企業(yè)高管、HR等多種角色。社區(qū)提供了各種豐富的教程、資訊、文章、問答、招聘、活動(dòng)、項(xiàng)目等供大家一起交流和成長(zhǎng)。
PA(Robotic Process ,機(jī)器人流程自動(dòng)化)是當(dāng)今IT界的熱門話題,當(dāng)前最大的兩個(gè)參與者是UiPath和微軟。
對(duì)這兩款RPA產(chǎn)品,我們進(jìn)行了相關(guān)驗(yàn)證的實(shí)踐和評(píng)測(cè)。 本文從產(chǎn)品的組件、系統(tǒng)架構(gòu)、流程開發(fā)、培訓(xùn)和支持、License等方面進(jìn)行解讀。
1 組件
UiPath
UiPath平臺(tái)由三個(gè)集成組件組成:UiPath Studio、UiPath Robot和。
Power
Power 是一個(gè)SaaS級(jí)的多功能工作流引擎,與微軟CDS、數(shù)據(jù)連接器、AI Builder結(jié)合為工作流自動(dòng)化構(gòu)建無數(shù)可能。
2 系統(tǒng)架構(gòu)
UiPath
UiPath本地版是CS架構(gòu),客戶端+IIS Web服務(wù)器+SQL Server。、Studio和Robots相對(duì)獨(dú)立。
用于管理Studio、Robots及Robot所在的Machine,配置流程至Robot上,監(jiān)控流程運(yùn)行情況。
Studio用于開發(fā)和調(diào)試流程,并通過HTTPS協(xié)議發(fā)布流程到中。
Robots用于執(zhí)行流程,通過HTTPS協(xié)議連接到上。
UiPath官方也提供端到端的自動(dòng)化云平臺(tái),或用戶將部署到公有云或者私有云上。Studio和Robots通過HTTPS協(xié)議連接到云平臺(tái)。
Power
Power 是一項(xiàng)用于開發(fā)和調(diào)試自動(dòng)化工作流的聯(lián)機(jī)服務(wù),集成于微軟的Power 平臺(tái)。該平臺(tái)根植于微軟智能云,以 Azure為基礎(chǔ),無縫銜接CDS、人工智能、DevOps等云服務(wù),可以支持和擴(kuò)展 365、 365等。云和本地?cái)?shù)據(jù)之間的自動(dòng)化通過構(gòu)建自定義數(shù)據(jù)網(wǎng)關(guān)來實(shí)現(xiàn)。
3 流程開發(fā)
UiPath
UiPath的流程沒有像Power 那樣細(xì)分,大致可分為“有人參與的業(yè)務(wù)流程”和“無人參與的業(yè)務(wù)流程”,按約定的業(yè)務(wù)規(guī)則一步步處理,最終取得預(yù)期業(yè)務(wù)成果。無人參與的流程可按計(jì)劃設(shè)置啟動(dòng)時(shí)間和重復(fù)周期。兩種流程中都可嵌入U(xiǎn)I流。
UiPath的開發(fā)通過事件驅(qū)動(dòng),每個(gè)操作都有獨(dú)立的。對(duì)于簡(jiǎn)單的流程,按照流程的邏輯和規(guī)則,直接拖拽需要的累加即可。對(duì)于需要捕獲的元素,先選擇動(dòng)作事件,再進(jìn)行元素捕獲。對(duì)于復(fù)雜的流程,則需要編寫代碼。
UiPath依賴于的語法,開發(fā)人員需要熟悉相關(guān)語法和類庫。在Studio中可以通過invoke code的形式直接編寫和運(yùn)行VB的代碼,也可以將DLL文件打包成.nupkg包引入到項(xiàng)目中。擴(kuò)展支持調(diào)用VBA、、Python、Power Shell等。
復(fù)雜的流程建議使用UiPath官方提供的,該框架中有嚴(yán)謹(jǐn)?shù)娜罩镜挠涗浐彤惓C(jī)制處理。
在復(fù)用性上,UiPath可將通用的流程提煉成,供項(xiàng)目調(diào)用。也可以通過自定義的形式,生成可復(fù)用的package。還可以將可復(fù)用的組件發(fā)布成Library。
Power
Power 提供了5個(gè)類型的“流”:
每一種“流”都由觸發(fā)器和一系列的標(biāo)準(zhǔn)操作組成。觸發(fā)器為流程中的特定事件,一旦事件發(fā)生,則流程啟動(dòng)。Power 針對(duì)300多個(gè)應(yīng)用程序預(yù)設(shè)了多種觸發(fā)事件及觸發(fā)后的一系列標(biāo)準(zhǔn)操作。官方暫未提供的連接器需要自定義。日常簡(jiǎn)單的工作流程,使用拖拽的方式累加標(biāo)準(zhǔn)操作即可完成,對(duì)于復(fù)雜或數(shù)據(jù)處理量大的業(yè)務(wù)流則可能需要借助其他工具,例如,遇到Excel中大量的數(shù)據(jù)處理,Power 運(yùn)行速度就會(huì)比較慢且調(diào)試不方便。使用人員依舊需要一定的編程理念。對(duì)于使用其他語言編寫的腳本,目前還沒有找到可直接調(diào)用的方法。
Power 針對(duì)不同的工作場(chǎng)景官方都有提供流程模板,可直接拿來修改后使用。
4 培訓(xùn)和支持
UiPath
UiPath提供官方培訓(xùn)學(xué)院,有完善課程體系和視頻教學(xué),并提供完整的在線文檔和官方論壇。
此外,UiPath會(huì)不定期的提供demo演示和最佳實(shí)踐的動(dòng)手培訓(xùn)。
Power
Power 有官方文檔和官方論壇,但并沒有完整的類似UiPath從無到有培訓(xùn)用戶如何使用Power 的課程教學(xué)體系。培訓(xùn)文檔也更適用于熟悉微軟產(chǎn)品開發(fā)的技術(shù)人員,對(duì)不熟悉微軟產(chǎn)品的使用者而言,上手有一定困難。
5 許可證
UiPath
UiPath的三個(gè)組件的License都是按年收取費(fèi)用。
Power
Power 有兩種計(jì)劃:
6 試用/免費(fèi)版
UiPath
UiPath提供不限期限的社區(qū)版和60天的企業(yè)試用版。
Power
Power 的試用期為 90 天,或申請(qǐng)開發(fā)者計(jì)劃。(當(dāng)前專業(yè)版以上系統(tǒng)免費(fèi)使用)
兩種RPA工具各有千秋,并且都在不斷更新進(jìn)步中。
UiPath
UiPath旨在允許最終業(yè)務(wù)用戶對(duì)自己的流程進(jìn)行編碼和自動(dòng)化,所以UiPath學(xué)習(xí)曲線是平緩的,適合沒有編程經(jīng)驗(yàn)的人按部就班地學(xué)習(xí),其封裝好的按照流程運(yùn)行過程堆疊,界面直觀,讓初學(xué)者易于理解。但是,當(dāng)流程機(jī)器人需要處理的工作越加繁雜時(shí),沒有編程經(jīng)驗(yàn)的使用者會(huì)覺得UiPath變得難以駕馭,而有編程經(jīng)驗(yàn)的開發(fā)人員則會(huì)覺得UiPath笨重。尤其是當(dāng)有大項(xiàng)目時(shí),一層套一層的容器使得導(dǎo)航到特定過程變得繁瑣。必須指出的是,UiPath在財(cái)務(wù)和HR等人工操作較為復(fù)雜且重復(fù)率高的領(lǐng)域,其效率確實(shí)能為企業(yè)節(jié)省很多時(shí)間和人工上的成本。
Power
Power 是公用的云服務(wù),只需一個(gè) Web 瀏覽器和電子郵件地址即可使用,但目前來看也只適用Azure云平臺(tái)。Power 注重與自己的業(yè)務(wù)工具(如Office 365、、、Power BI、Teams等)以及組織中使用的工具(如、Workday等)的集成,需要有賬號(hào),因此,現(xiàn)有的培訓(xùn)更適合熟悉微軟產(chǎn)品或開發(fā)的用戶。但Power 確實(shí)是一個(gè)功能強(qiáng)大的工具。其豐富的數(shù)據(jù)連接器為微軟RPA搭建了一個(gè)自動(dòng)化工作流的生態(tài)系統(tǒng),原生的AI智能和Azure大數(shù)據(jù)分析支持,使得微軟RPA更加智能化。Power 支持移動(dòng)設(shè)備,可在智能手機(jī)上一鍵觸發(fā)工作流,極大提高了企業(yè)員工的工作效率。
針對(duì)兩款產(chǎn)品的特性,在搜集HR、財(cái)務(wù)、行政等領(lǐng)域一些需要人工重復(fù)操作且耗時(shí)久的業(yè)務(wù)場(chǎng)景,開發(fā)了相應(yīng)的流程并實(shí)現(xiàn)。
根據(jù)我們目前的經(jīng)驗(yàn)來看,針對(duì)類似文件備份、收到郵件推送通知、自動(dòng)審核工作流等一些不繁雜且與、one drive等微軟相關(guān)產(chǎn)品結(jié)合的場(chǎng)景,微軟的Power 是一個(gè)很好的選擇。
而如果針對(duì)需要部署多個(gè)有復(fù)雜業(yè)務(wù)邏輯或需處理大批量數(shù)據(jù)的流程,那么UiPath因開發(fā)的靈活性會(huì)更加合適。
當(dāng)然,企業(yè)最終在選擇RPA工具進(jìn)行自動(dòng)化之前,還需要根據(jù)自身的情況、產(chǎn)品的定位、流程自動(dòng)化的層級(jí)等多方面因素進(jìn)行考慮。
如何構(gòu)建你自己的 Git 服務(wù)器
創(chuàng)建自己的Git服務(wù)共享非常簡(jiǎn)單, 在許多情況下值得去創(chuàng)建這樣一個(gè)Git服務(wù)。它不僅保證你隨時(shí)可以訪問你的代碼,它的無限制數(shù)據(jù)存儲(chǔ)、持續(xù)集成跟部署同時(shí)為個(gè)人Git管理打開了一道Git延伸與拓展的大門。
假如你知道如何使用Git和SSH,那么你已經(jīng)知道如何創(chuàng)建一個(gè)Git服務(wù)器了。設(shè)計(jì)Git的方式,你創(chuàng)建或者克隆一個(gè)倉庫時(shí),你已經(jīng)創(chuàng)建了一半服務(wù)器。使能SSH訪問倉庫,并且任何訪問你倉庫的人都可以使用你的回購協(xié)議作為一個(gè)新克隆的基礎(chǔ)。
但是,會(huì)有一個(gè)小特設(shè)。有些計(jì)劃你可以構(gòu)建關(guān)于同樣數(shù)量的精心設(shè)計(jì)的Git服務(wù)器,但是可以具有更好擴(kuò)展性。
首先是:識(shí)別你的用戶,包括閑雜與未來的。假如你是唯一用戶,那么無需任何改變,但是如果你邀請(qǐng)國(guó)外的貢獻(xiàn)者了,那么你應(yīng)該為開發(fā)者搭建一個(gè)貢獻(xiàn)共享系統(tǒng)平臺(tái)。
假定你有一個(gè)可用的服務(wù)器(如果不是,Git無法解決這個(gè)問題,但是運(yùn)行在 Pi 3 的CentOS將會(huì)是一個(gè)良好開端),第一步是采用SSH鍵值授權(quán)登錄,它比密碼登錄更加強(qiáng)大,因?yàn)樗苊庖哂谛U力攻擊,并且可以避免用戶盡可能簡(jiǎn)單地刪除它們的鍵值。
在你啟用了SSH密鑰認(rèn)證之后,就創(chuàng)建一個(gè) gituser用戶。這是一個(gè)提供給所有通過了認(rèn)證的用戶的共享用戶賬號(hào):
$su-c''
然后切換到這個(gè)用戶,并使用合適的權(quán)限創(chuàng)建一個(gè)~/.ssh 框架。這非常重要,因?yàn)槿绻麢?quán)限設(shè)置太過于隨意,你自己針對(duì)SSH的防護(hù)默認(rèn)就會(huì)失效。
$su-gituser
$mkdir.ssh&&.ssh
$touch.ssh/
$.ssh/
文件里面有所有你賦予其權(quán)限操作你的Git工程的開發(fā)者的SSH公共密鑰。你的開發(fā)者必須創(chuàng)建屬于他們自己的SSH密鑰并將其中的公共密鑰發(fā)送給你。要把這些公共密鑰復(fù)制到gituser的文件中去。例如,對(duì)于一個(gè)叫做Bob的開發(fā)者,可以運(yùn)行這些命令:
$cat~/path/to/id_rsa.bob.pub>>\
/home/gituser/.ssh/
當(dāng)開發(fā)者Bob持有能匹配他發(fā)送給你的公共密鑰的私有密鑰時(shí),他就能以gituser訪問服務(wù)器。
不過,你并不會(huì)真的想讓你的開發(fā)者訪問到服務(wù)器,即使只是以gituser用戶來進(jìn)行訪問。你想要的是讓他們只能訪問到Git資源庫。因?yàn)檫@個(gè)原因,Git提供了一個(gè)受限的shell,恰如其分的將其稱為 git-shell、以root用戶運(yùn)行下面的這些命令可以將git-shell添加到你的系統(tǒng)中,并使其成為gituser用戶的默認(rèn)shell:
#grepgit-shell/etc/shells||su-c\
"echo`-shell`>>/etc/shells"
#su-c'usermod-sgit-'
現(xiàn)在gituser只能使用SSH來向Git資源庫進(jìn)行推送和拉取操作,而不能訪問到一個(gè)登陸shell。你應(yīng)該將你自己加入gituser對(duì)應(yīng)的用戶組,在我們的示例服務(wù)器中它還是gituser。
例如:
#usermod-a-
剩下的唯一一個(gè)步驟就是創(chuàng)建一個(gè)Git資源庫。因?yàn)椴粫?huì)有人在服務(wù)器上跟它進(jìn)行直接交互(也就是說你不會(huì)通過SSH連上服務(wù)器然后直接在資源庫中進(jìn)行操作), 這使其成為了一個(gè)基礎(chǔ)的資源庫。如果你想要把服務(wù)器上的資源庫用起來,就要將其從它所在的地方克隆到自己的home目錄中去。
嚴(yán)格來說,你并不用使其成為一個(gè)基礎(chǔ)資源庫,它還是可以作為一個(gè)普通的資源庫來操作的。不過,一個(gè)基礎(chǔ)資源庫是沒有*工作樹(working tree)* (也就是說,不會(huì)有分支會(huì)處在”“狀態(tài))。這很重要,因?yàn)檫h(yuǎn)程用戶不會(huì)被允許向一個(gè)活動(dòng)分支進(jìn)行推送 (你是不會(huì)想在一個(gè)”dev“分支工作時(shí)突然有人將變更推送到你的工作空間的?)。因?yàn)榛A(chǔ)資源庫不能有活動(dòng)分支,那就不會(huì)有問題發(fā)生了。
你可以將資源庫放到任何你想要放置的地方, 只要你想賦予權(quán)限的用戶和組也能訪問到它就行了。你不會(huì)想將目錄存儲(chǔ)到一個(gè)用戶的home目錄的,因?yàn)檫@里的權(quán)限相當(dāng)?shù)貒?yán)格, 而是要放在一個(gè)通用共享的位置,例如/optor/usr/local/share.
以root用戶創(chuàng)建一個(gè)基礎(chǔ)資源庫:
#gitinit--bare/opt/jupiter.git
#chown-:gituser/opt/jupiter.git
#chmod-R770/opt/jupiter.git
現(xiàn)在任何已gituser認(rèn)證的、或者是位于gituser分組的用戶都可以讀取和寫入jupiter.git資源庫。你可以在自己本機(jī)上試試看:
$:/opt/jupiter..clone
'jupiter.clone'...
Warning:.
記住:開發(fā)有必須讓他們的公共SSH密鑰導(dǎo)入gituser用戶的文件, 或者是擁有服務(wù)器上面的賬戶(就像你一樣), 那樣的話他們就必須是gituser組的成員。
Git鉤子
運(yùn)行你自己的Git服務(wù)器帶來的一個(gè)好處是它提供了Git鉤子。Git托管服務(wù)有時(shí)也提供了一個(gè)類似鉤子的接口,但那并不是真正的可以訪問文件系統(tǒng)的Git鉤子。一個(gè)Git鉤子是一個(gè)腳本,它在Git進(jìn)程中的某個(gè)時(shí)刻執(zhí)行。在一個(gè)倉庫()接受一個(gè)提交(commit)之前,或者收到一個(gè)提交之后,或者接收一個(gè)推送(push)之前,或者收到一個(gè)推送之后等時(shí)刻執(zhí)行一個(gè)鉤子。
這個(gè)系統(tǒng)很簡(jiǎn)單:任何可執(zhí)行的腳本都存放在.git/hooks目錄中,使用標(biāo)準(zhǔn)的命名方案,并且在某個(gè)指定的時(shí)刻執(zhí)行。腳本執(zhí)行的時(shí)間由名字來決定;pre-push腳本在推送之前執(zhí)行,post-receive腳本在收到一個(gè)提交之后執(zhí)行,諸如此類。它基本上屬于自文檔(self-)。
可以使用任何語言編寫鉤子腳本;如果你能在你的系統(tǒng)上運(yùn)行某種語言的hello world腳本,那么你就可以使用那門語言來編寫Git鉤子腳本。默認(rèn)情況下,Git附帶了一些范例,但沒有啟用。
想要運(yùn)行一個(gè)腳本嗎?使用起來很簡(jiǎn)單。如果你還沒有Git倉庫的話,首先創(chuàng)建一個(gè)。
$
$
$gitinit.
然后編寫一個(gè)"hello world" Git鉤子。由于在工作中我為了傳統(tǒng)支持而使用tcsh,所以我堅(jiān)持使用它作為我的腳本語言,但你可以自由地選用你喜愛的語言(Bash、Python、Ruby、Perl、Rust、Swift、Go):
$echo"#\!/bin/tcsh">.git/hooks/post-commit
$echo"echo'POST-D'">\
~/jupiter/.git/hooks/post-commit
$chmod+x~/jupiter/.git/hooks/post-commit
現(xiàn)在進(jìn)行測(cè)試:
$echo"">foo.txt
$.txt
$-m''
!POST-D
[master(root-commit)c8678e0]
,(+)
.txt
這就是你的第一個(gè)可以正常運(yùn)行的Git鉤子。
著名的推送到web 鉤子
一個(gè)流行的Git鉤子用法是自動(dòng)推送改變部分到工作生產(chǎn)中的web服務(wù)器目錄。這是一個(gè)偉大構(gòu)建FTP的方式,保留開發(fā)環(huán)節(jié)的全版本控制,并且整合、自動(dòng)化發(fā)布內(nèi)容。
如果正確執(zhí)行,它將會(huì)工作運(yùn)行良好,在某一種程度來說,一直應(yīng)該做的是考慮如何網(wǎng)絡(luò)發(fā)布。它是不錯(cuò)的。我不知道最初是誰想出這主意的,但是我第一次是從EMacs和來自IBM公司的Git-mentor、Bill Von Hagen那里聽到的。他的文章仍然是對(duì)這個(gè)過程起決定性作用的介紹:Git 改變分布式Web開發(fā)規(guī)則。
Git變量
每個(gè)Git鉤子獲取一組不同的Git動(dòng)作觸發(fā)它的相關(guān)變量。你可能會(huì)用到這些變量,也可能用不到。這取決于你所寫的作品。如果你想要的是一個(gè)普通的郵件來通知你,有人推了東西。那么你不需要細(xì)節(jié),也不需要腳本,因?yàn)槟憧梢蕴子矛F(xiàn)有的樣板。如果你想在郵件里瀏覽別人提交的信息和作者,那么對(duì)你的腳本要求更高。
Git鉤子并不是用戶直接運(yùn)行的,所以要理解透如何獲取這些混亂卻重要的信息。事實(shí)上,一個(gè)Git鉤子腳本與其他任何腳本類似,像BASH、Python、C++或者其他腳本一樣的方式接受來自stdin的參數(shù)。不同的是,我們不會(huì)提供自己入?yún)ⅲ允褂盟鼤r(shí)要弄清楚你想要的是什么(參數(shù))。
編寫一個(gè)Git鉤子之前,可以進(jìn)入到你的項(xiàng)目目錄.git/hooks查看Git提供的范例。例如,下面是pre-push.sample文件的注釋部分:
#$1--
#$2--
#.
#
#:
并非所有的范例寫的都那么清晰,文檔對(duì)于什么鉤子需要什么變量的說明還有些不足(除非你要閱讀Git的源代碼),不過若有疑問,你可以通過trials of other users進(jìn)行更多地了解,或者編寫一個(gè)簡(jiǎn)單的腳本,輸出$1、$2、$3等。
分支檢測(cè)范例
我發(fā)現(xiàn)在實(shí)際的生產(chǎn)中對(duì)鉤子最常見的需求是針對(duì)受影響的分支觸發(fā)特定的事件。下面這個(gè)例子演示了如何解決這樣的任務(wù)。
首先,Git鉤子本身不是版本控制。也就是說,Git不會(huì)跟蹤它自己的鉤子,因?yàn)镚it鉤子是Git的組成部分而不是你的倉庫的一部分。因此,Git鉤子在監(jiān)視提交和推送的同時(shí),可能對(duì)你的Git服務(wù)器上的遠(yuǎn)程倉庫最有意義,而不是作為你的本地倉庫的一部分。
我們來編寫一個(gè)基于post-receive運(yùn)行的鉤子(即,收到一個(gè)提交之后)。第一步是識(shí)別分支名字:
#!/bin/tcsh
($
*請(qǐng)認(rèn)真填寫需求信息,我們會(huì)在24小時(shí)內(nèi)與您取得聯(lián)系。