Enterprise Tech Solutions Meetup: jak zatrudnić robota

Liczba odsłon: 373

Człowiek od zaw­sze dą­żył do uczy­nie­nia swo­jej pra­cy prost­szą i szyb­szą. Najpierw prze­rzu­cił naj­cięż­sze za­da­nia na zwie­rzę­ta, póź­niej je uproś­cił i przy­spie­szył za po­mo­cą ma­szyn, aż w koń­cu stwo­rzył kom­pu­ter — naj­dos­ko­nal­sze na­rzę­dzie bez­na­mięt­nie i bez zmę­cze­nia wy­ko­nu­ją­ce pow­ta­rzal­ne za­da­nia, po­tra­fią­ce ste­ro­wać pro­ce­sa­mi i ma­szy­na­mi oraz nad­zo­ro­wać je.

Powstanie kom­pu­te­rów po­skut­ko­wa­ło jed­nak po­ja­wie­niem się no­wych ka­te­gorii za­dań i prac. Moż­li­wość prze­twa­rza­nia in­for­mac­ji i wy­mie­nia­nia się ni­mi da­je wiel­kie moż­li­woś­ci, jed­nak wy­ma­ga ludz­kie­go za­an­ga­żo­wa­nia. Niektóre czyn­no­ści, na sku­tek nie­do­sko­na­ło­ści na­rzę­dzi in­for­ma­tycz­nych, któ­ry­mi obec­nie dy­spo­nu­je­my, mo­gą być bar­dzo cza­so­chłon­ne i mo­no­ton­ne, a za­ra­zem wy­ma­gać obec­no­ści czło­wie­ka wy­łącz­nie w ce­lu świa­do­me­go wy­ko­ny­wa­nia ko­lej­nych kro­ków w za­leż­noś­ci od wy­ni­ków po­przed­nich. Aż się pro­si, by zrzu­cić to na ma­szy­ny.

Temu właś­nie za­gad­nie­niu zo­sta­ło po­świę­co­ne pią­te spot­ka­nie gru­py Enter­pri­se Tech Solutions Meetup, zor­ga­ni­zo­wa­ne 31 paź­dzier­ni­ka 2018 ro­ku w ka­to­wic­kiej sie­dzi­bie ING Inno­vation Lab przy ul. Sokol­skiej. Poniższy tekst za­wie­ra re­la­cję ze spot­ka­nia oraz roz­mów, któ­re od­by­ły się przy je­go okaz­ji.

Użytkow­ni­cy mi­kro­kom­pu­te­rów od daw­na po­szu­ki­wa­li spo­so­bów auto­ma­tycz­ne­go reali­zo­wa­nia mo­no­ton­nych i częs­to wy­ko­ny­wa­nych ope­rac­ji. Z po­mo­cą po­spie­szy­li za­rów­no pro­du­cen­ci sprzę­tu, jak i opro­gra­mo­wa­nia. Klawiatu­ry ta­kie jak Focus FK-9000 po­zwa­la­ły za­pi­sać sek­wen­cję kla­wi­szy i przy­pi­sać ją do kla­wi­sza funk­cyj­ne­go. Te sa­me moż­li­woś­ci da­wa­ły pro­gra­my na­rzę­dzio­we ta­kie jak Encore. Firma Micro­soft do­łą­cza­ła na­rzę­dzia do auto­ma­ty­zacji za­dań do swo­ich sys­te­mów opera­cyj­nych: w MS-DOS do­stęp­ne by­ło na­rzę­dzie DOSKEY po­zwa­la­ją­ce pro­gra­mo­wać mak­ro­pro­ce­du­ry przy­pi­sy­wa­ne do po­le­ceń lub kom­bi­nac­ji kla­wi­szy, a wer­sja 3.0 śro­do­wis­ka gra­ficz­ne­go Win­dows za­wie­ra­ła na­rzę­dzie Recorder, uwzględ­nia­ją­ce mysz oraz spe­cy­fi­kę śro­do­wis­ka okien­ko­we­go. Inni pro­du­cen­ci do­star­cza­li jesz­cze bar­dziej roz­bu­do­wa­ne śro­do­wis­ka skryp­to­we, ta­kie jak WinBatch dla śro­do­wis­ka Win­dows lub Apple­Script dla śro­do­wis­ka Macintosh. Niektóre z tych roz­wią­zań są zresz­tą utrzy­my­wa­ne do dziś.

Czasy się jed­nak zmie­ni­ły, a wraz z ni­mi moż­li­woś­ci sys­te­mów in­for­ma­tycz­nych oraz wy­ma­ga­nia sta­wia­ne wo­bec ich auto­ma­ty­zacji. Istnieje wie­le pro­duk­tów poz­wa­la­ją­cych two­rzyć skryp­ty i sce­na­riu­sze auto­ma­tycz­nie rea­li­zo­wa­nych ope­rac­ji, ta­kie jak UIPath, Work­Fusion, Blue­Prism, NICE RPA, Pega czy Automation Anywhere. Ze wzglę­du na lot­ny obec­nie te­mat ro­bo­ty­zac­ji, a tak­że pew­ne ne­ga­tyw­ne sko­ja­rze­nia użyt­kow­ni­ków z mak­ro­pro­ce­du­ra­mi zna­ny­mi z opro­gra­mo­wa­nia użyt­ko­we­go, dzi­siaj nie mó­wi się ra­czej o mak­ro­pro­gra­mo­wa­niu, lecz ro­bo­tycz­nej auto­ma­ty­zacji pro­ce­sów (RPA) lub ro­bo­tycz­nym wspo­ma­ga­niu pra­cy (RDA).

Polski od­dział gru­py ING roz­wi­ja włas­ny pro­dukt te­go ty­pu, do­sto­so­wa­ny do śro­do­wis­ka, w któ­rym dzia­ła­ją apli­kac­je fir­my. Jemu właś­nie zo­sta­ło po­świę­co­ne pierw­sze z wy­stą­pień, po­pro­wa­dzo­ne przez Michała Bębasa. Robo­Platform to roz­wi­nię­cie po­przed­nio two­rzo­ne­go Macro­Platform. Język Pascal zo­stał za­stą­pio­ny no­wo­cześ­niej­szym C#, a tryb ko­do­wa­nia skryp­tów uzu­peł­nio­no op­cjo­nal­nym try­bem wizu­al­nym, w któ­rym au­to­ma­ty­zo­wa­ny pro­ces opi­su­je się blocz­ka­mi i po­łą­cze­nia­mi mię­dzy ni­mi.

Robotyzacja ma po­waż­ne za­le­ty:

Podstawo­wym prob­le­mem tech­nicz­nym, któ­ry wy­ma­gał roz­wią­za­nia, jest uwie­rzy­tel­nia­nie użyt­kow­ni­ków. W przy­pad­ku, gdy pra­ca ma być wy­ko­ny­wa­na zgod­nie z pew­nym har­mo­no­gra­mem na wy­dzie­lo­nym kom­pu­te­rze, Robo­Platform mu­si być w sta­nie stwo­rzyć in­ter­ak­tyw­ną ses­ję gra­ficz­ną uwie­rzy­tel­nio­ną da­ny­mi właś­ci­we­go użyt­kow­ni­ka i uru­cho­mić skryp­ty w tak stwo­rzo­nym śro­do­wis­ku. Tylko w nie­któ­rych przy­pad­kach moż­na za­ak­cep­to­wać roz­wią­za­nie, w któ­rym po­zo­sta­wia­na jest „wi­szą­ca” ses­ja użyt­kow­ni­ka, sta­le za­lo­go­wa­na na je­go kon­to i reali­zu­ją­ca dzia­ła­nia auto­ma­tycz­ne.

Prelegent po­pro­wa­dził dwie ses­je de­mon­stra­cyj­ne. W pierw­szej z nich po­ka­zał pros­ty skrypt na­pi­sa­ny w ję­zy­ku C# i uru­cha­mia­ny z po­zio­mu śro­do­wisk Power­Shell oraz Robo­Platform. W cza­sie dru­giej przed­sta­wił moż­li­woś­ci two­rze­nia in­ter­ak­tyw­nych ses­ji użyt­kow­ni­ka z wy­ko­rzys­ta­niem za­rów­no stan­dar­do­wych na­rzę­dzi sys­te­mu Win­dows, jak i bi­blio­tek ob­słu­gu­ją­cych po­łą­cze­nia zdal­ne RDP na niż­szym po­zio­mie.

Ważną ce­chą Robo­Platform jest to, że od po­cząt­ku jest to pro­dukt, a nie tyl­ko we­wnętrz­ne roz­wią­za­nie prob­le­mu. Oprogra­mo­wa­nie dys­po­nu­je do­pra­co­wa­nym inter­fej­sem użyt­kow­ni­ka, jest zin­te­gro­wa­ne ze swo­im śro­do­wis­kiem pra­cy i po­zwa­la na bie­żą­co mo­ni­to­ro­wać wszyst­kie rea­li­zo­wa­ne pro­ce­sy auto­ma­tycz­ne i wi­zu­ali­zo­wać ich stan na pa­ne­lach kon­trol­nych. Kwestią otwar­tą po­zos­ta­je co praw­da to, czy ING bę­dzie ofe­ro­wa­ło usłu­gi zwią­za­ne z Robo­Platform pod­mio­tom ze­wnętrz­nym, jed­nak już dziś me­cha­nizm zo­stał wdro­żo­ny w kil­ku od­dzia­łach gru­py.

Warto pa­mię­tać, że wszel­kie­go ro­dza­ju sys­te­my auto­ma­ty­zacji są roz­wią­za­niem tak­tycz­nym, a nie stra­te­gicz­nym. Stosuje się je tam, gdzie nie opła­ca się roz­bu­do­wy­wać funkcjo­nal­noś­ci apli­kac­ji ba­zo­wych, lub gdy wdro­że­nie mu­si na­stą­pić w znacz­nie krót­szym cza­sie niż po­trzeb­ny do wpro­wa­dze­nia od­po­wied­niej roz­bu­do­wy. Przy wszyst­kich swo­ich za­le­tach, zauto­ma­ty­zo­wa­ne pro­ce­sy są bo­wiem po­dat­ne na zmia­ny w apli­kac­jach i da­nych oraz kosz­tow­ne je­że­li cho­dzi o za­so­by sprzę­to­we.


Druga pre­zen­tac­ja po­świę­co­na zo­sta­ła prak­tycz­nym za­sto­so­wa­niom auto­ma­ty­zacji w pra­cy ban­ku. Prelegent, Kamil Czerniak, jest pro­gra­mis­tą skryp­tów Robo­Platform. Jako pod­sta­wo­we za­da­nia pod­da­ją­ce się auto­ma­ty­zacji wy­mie­nił ba­da­nia prze­sie­wo­we KYC, roz­dys­po­no­wy­wa­nie wia­do­moś­ci elek­tro­nicz­nych do właś­ci­wych osób lub dzia­łów oraz in­te­grac­ję da­nych mię­dzy róż­ny­mi sys­te­ma­mi.

Prezenta­cja roz­po­czę­ła się od po­ka­za­nia tech­nik po­bie­ra­nia da­nych oraz ge­ne­ro­wa­nia ra­por­tów, ja­kie moż­na łat­wo zin­te­gro­wać z Robo­Platform. Źródłem da­nych mo­gą być na przy­kład stro­ny WWW, któ­rych treść moż­na po­bie­rać lub ana­li­zo­wać al­bo za po­mo­cą stan­dar­do­wych ele­men­tów sys­te­mu opera­cyj­nych ta­kich jak Shell Document Viewer, al­bo zew­nętrz­nych apli­kac­ji ty­pu Selenium. Ten dru­gi wa­riant ce­chu­je się więk­szym wy­ko­rzys­ta­niem za­so­bów, ale też da­je du­żo więk­sze moż­li­woś­ci.

Innym źród­łem da­nych (lub miej­scem do­ce­lo­wym na wy­ni­ki) mo­gą być do­ku­men­ty pa­kie­tu Micro­soft Office. Dostęp do apli­kac­ji i two­rzo­nych w nich do­ku­men­tów moż­na uzys­kać z po­zio­mu pro­gra­mu na­pi­sa­ne­go w ję­zy­ku C# za po­mo­cą mo­du­łów inter­op.

Gotowe ra­por­ty moż­na stwo­rzyć rów­nież w for­ma­cie PDF, przy czym efek­tem pra­cy skryp­tu mo­że być za­rów­no no­wy plik, jak i mo­dy­fi­ka­cja pli­ku stwo­rzo­ne­go za po­mo­cą in­ne­go na­rzę­dzia. Do ge­ne­ro­wa­nia do­ku­men­tów PDF z po­zio­mu skryp­tu na­pi­sa­ne­go w ję­zy­ku C# moż­na wy­ko­rzys­tać bi­blio­te­ki PDFsharp lub iTextSharp.

Praktyczną de­mon­strac­ją za­sto­so­wa­nia tych na­rzę­dzi był uru­cha­mia­ny w Robo­Platform skrypt reali­zu­ją­cy pro­ces ba­da­nia prze­sie­wo­we­go klien­tów. Uruchamiał on prze­glą­dar­kę Inter­net Explo­rer, otwie­rał w niej stro­nę wy­szu­ki­war­ki Google i inicjo­wał wy­szu­ki­wa­nie dla fra­zy za­wie­ra­ją­cej imię i naz­wis­ko klienta oraz sło­wa klu­czo­we „fraud”, „sanc­tion” i „launder”. Powstała li­sta stron by­ła dru­ko­wa­na do pli­ku PDF i uzu­peł­nia­na imie­niem i naz­wis­kiem we­ry­fi­ko­wa­ne­go klienta. Pierwsza wer­sja skryp­tu wy­ma­ga­ła każ­do­ra­zo­we­go ręcz­ne­go po­da­nia tych in­for­mac­ji, jed­nak w wer­sji dru­giej pre­le­gent po­wią­zał skrypt z ar­ku­szem kal­ku­la­cyj­nym Micro­soft Excel, dzię­ki cze­mu moż­li­we sta­ło się auto­ma­tycz­ne wy­ge­ne­ro­wa­nie ra­por­tów dla do­wol­nej licz­by klien­tów.

Pokazany pro­ces nie jest oczy­wiś­cie opty­mal­ny. Prelegent pod­po­wie­dział, że zaw­sze pre­fe­ro­wa­ne po­win­no być wy­ko­rzys­ty­wa­nie API po­szcze­gól­nych apli­kac­ji i ser­wi­sów, a auto­ma­ty­zac­ja wy­ko­rzy­stu­ją­ca spe­cy­fi­kę gra­ficz­ne­go inter­fej­su użyt­kow­ni­ka apli­kac­ji lub na­rzę­dzia ta­kie jak Selenium po­win­na być sto­so­wa­na w osta­tecz­no­ści. W nie­któ­rych przy­pad­kach zresz­tą ta­kie po­wierz­chow­ne po­dejś­cie nie jest w ogó­le moż­li­we. Podany zo­stał przy­kład apli­kac­ji HR o tak skom­pli­ko­wa­nym in­ter­fej­sie użyt­kow­ni­ka, że je­dy­nym spo­so­bem prze­pro­wa­dze­nia auto­ma­tycz­nej mi­grac­ji da­nych by­ło bez­po­śred­nie wpi­sy­wa­nie in­for­mac­ji do ba­zy da­nych apli­kac­ji. Ponadto, o ile w przy­pad­ku apli­kac­ji we­wnętrz­nych da­nej in­sty­tu­cji mo­że­my za­ka­zać zmian w in­ter­fej­sie użyt­kow­ni­ka, któ­re mog­ły­by po­psuć pro­ce­sy auto­ma­tycz­ne, w przy­pad­ku apli­kac­ji zew­nętrz­nych roz­wi­ja­nych me­to­do­lo­gia­mi zwin­ny­mi re­gu­lar­nie bę­dzie się po­ja­wia­ła ko­niecz­ność ko­ry­go­wa­nia skryp­tów auto­ma­ty­zu­ją­cych oraz we­ry­fi­ko­wa­nia po­praw­noś­ci reali­zo­wa­nia pro­ce­sów. Ten prob­lem zo­stał wska­za­ny w cza­sie wy­stą­pie­nia ja­ko naj­po­waż­niej­sza wa­da roz­wią­zań auto­ma­ty­zu­ją­cych pra­cę.

Praca oso­by two­rzą­cej skryp­ty auto­ma­ty­zu­ją­ce pra­ce wy­kra­cza po­za sa­mo pro­gra­mo­wa­nie. Musi ona po­znać ca­ły au­to­ma­ty­zo­wa­ny pro­ces i ściś­le współ­pra­co­wać z pra­cow­ni­ka­mi, któ­rzy ma­ją ko­rzy­stać z na­rzę­dzia. Nie wol­no sku­pić się tyl­ko i wy­łącz­nie na prze­ka­za­nym za­kre­sie, gdyż mo­że oka­zać się, że zau­to­ma­ty­zo­wać moż­na du­żo wię­cej, niż wy­da­je się użyt­kow­ni­kom koń­co­wym. Przegląd pro­ce­sów rea­li­zo­wa­ny przy tej okaz­ji mo­że być też do­brym spo­so­bem wy­kry­cia tych pro­ce­sów lub ich częś­ci, któ­re – za­miast au­to­ma­ty­zo­wać – moż­na po pros­tu zlik­wi­do­wać.


W ostat­niej pre­zen­tac­ji spot­ka­nia Maksym Chmara przed­sta­wił in­te­grac­ję Robo­Platform z pry­wat­ną chmu­rą sto­so­wa­ną w sys­te­mach in­for­ma­tycz­nych ING. Najpierw opo­wie­dział o po­cząt­kach pro­jek­tu auto­ma­ty­zacji za­dań, gdy w jed­nym z od­dzia­łów gru­py w szaf­ce uru­cho­mio­no dzie­więć kom­pu­te­rów prze­noś­nych, na sta­łe za­lo­go­wa­nych na od­po­wied­nie kon­ta tech­nicz­ne, reali­zu­ją­cych wszyst­kie za­da­nia auto­ma­tycz­ne. Oczywiś­cie, roz­wią­za­nie to nie by­ło ani funkcjo­nal­ne, ani bez­piecz­ne, ani wy­daj­ne i ska­lo­wal­ne.

Po dwóch la­tach eks­pe­ry­men­tów wy­pra­co­wa­no doj­rza­łą po­stać roz­wią­za­nia na ba­zie pry­wat­nej chmu­ry. Wydzielono dwa od­ręb­ne śro­do­wis­ka, w ra­mach któ­rych uru­cha­mia­ne są spe­cja­li­zo­wa­ne ma­szy­ny wir­tu­al­ne ze zdal­nym in­ter­ak­tyw­nym do­stę­pem. W pierw­szym, wy­twór­czym, ope­ra­to­ra­mi są pro­gra­miś­ci skryp­tów („eks­per­ci auto­ma­ty­zacji”) oraz tes­te­rzy („we­ry­fi­ka­to­rzy auto­ma­ty­zacji”). W nim pro­wa­dzo­ne są wstęp­ne pra­ce roz­wo­jo­we nad skryp­ta­mi, pierw­sze te­sty na nie­za­leż­nych zbio­rach da­nych oraz osta­tecz­na ak­cep­tac­ja roz­wią­za­nia. Dopiero wte­dy skryp­ty tra­fia­ją do dru­gie­go, pro­duk­cyj­ne­go śro­do­wis­ka, w któ­rym użyt­kow­ni­cy koń­co­wi („ope­ra­to­rzy auto­ma­ty­zacji”) uru­cha­mia­ją go­to­we, nie pod­le­ga­ją­ce wglą­do­wi i mo­dy­fi­kac­jom skryp­ty.

Oczywiś­cie, na­wet do­brze spraw­dzo­ny skrypt mo­że za­wie­rać błę­dy. Może się też oka­zać, że zmia­na w for­ma­cie da­nych lub dzia­ła­niu jed­nej z apli­kac­ji spo­wo­du­je nie­po­praw­ną pra­cę sys­te­mu auto­ma­tycz­ne­go. W przy­pad­ku wy­kry­cia nie­pra­wid­ło­wo­ści, są one usu­wa­ne znów w śro­do­wis­ku wy­twór­czym. Niektóre prob­le­my, szcze­gól­nie po­wo­du­ją­ce prze­rwa­nie dzia­ła­nia skryp­tów, moż­na też wy­kry­wać auto­ma­tycz­nie za po­mo­cą sys­te­mów mo­ni­to­rin­gu. Co wię­cej, skryp­ty moż­na re­gu­lar­nie uru­cha­miać w śro­do­wis­ku wy­twór­czym tak, aby wy­kry­cie ewen­tu­al­nych prob­le­mów na­stę­po­wa­ło przed ko­lej­nym uru­cho­mie­niem pro­ce­su auto­ma­tycz­ne­go w śro­do­wis­ku pro­duk­cyj­nym. W ten spo­sób część błę­dów mo­że zo­stać roz­poz­na­na i usu­nię­ta za­nim na­tkną się na nie użyt­kow­ni­cy koń­co­wi.

Użycie pry­wat­nej chmu­ry nie­sie ze so­bą dwa prob­le­my. Po pierw­sze, z wnęt­rza chmu­ry mo­że nie być do­stę­pu do nie­za­ufa­nych apli­kac­ji zew­nętrz­nych. Obecnie ten prob­lem roz­wią­zu­je się przed uru­cho­mie­nie po­trzeb­nych apli­kac­ji rów­nież w ra­mach chmu­ry. Po dru­gie, wciąż po­trzeb­na jest zna­jo­mość da­nych uwie­rzy­tel­nia­ją­cych dla kont tech­nicz­nych pro­ce­sów auto­ma­ty­zacji i pierw­sze uru­cho­mie­nie da­ne­go pro­ce­su wy­ma­ga wpro­wa­dze­nia ich przez użyt­kow­ni­ka. Idealnym roz­wią­za­niem by­ło­by, gdy­by sys­tem sam ge­ne­ro­wał i wy­ko­rzys­ty­wał has­ła tech­nicz­ne tak, aby nie by­ły one zna­ne przez nie ma­ją­ce ta­kiej bez­po­śred­niej po­trze­by oso­by.


W cza­sie roz­mów pro­wa­dzo­nych po spot­ka­niu pod­ją­łem te­mat opła­cal­no­ści wy­ko­rzys­ta­nia opi­sa­nych me­cha­niz­mów, bio­rąc pod uwa­gę ko­niecz­ność za­an­ga­żo­wa­nia pra­cow­ni­ków ma­ją­cych dość spo­re umie­jęt­no­ści pro­gra­mi­stycz­ne i biz­ne­so­we oraz prob­lem ko­niecz­noś­ci częs­te­go wpro­wa­dza­nia po­pra­wek do skryp­tów. Okazuje się, że mo­że być ono opła­cal­ne przy na­stę­pu­ją­cych za­ło­że­niach:

Jak po­przed­nio, spot­ka­nie by­ło świet­nie zor­ga­ni­zo­wa­ne. Rozpoczęło się o cza­sie, pre­le­gen­ci byli do­brze przy­go­to­wa­ni i utrzy­my­wa­li ry­gor cza­so­wy, a po za­koń­cze­niu wszyst­kich pre­zen­tac­ji na go­ści cze­kał po­czę­stu­nek sprzy­ja­ją­cy dal­szym roz­mo­wom.

Pokazywane roz­wią­za­nia są dość „cięż­kie” z punk­tu wi­dze­nia efek­tyw­noś­ci i nie wszyst­kim mu­szą się spo­do­bać. Sam jes­tem ra­czej zwo­len­ni­kiem nie­wiel­kich apli­kac­ji (mo­gą­cych przyj­mo­wać for­mę mik­ro­ser­wi­sów) bez­po­śred­nio wy­ko­rzy­stu­ją­cych zbio­ry da­nych lub API apli­kac­ji, bez się­ga­nia po sy­mu­lo­wa­nie dzia­łań użyt­kow­ni­ka. Robo­Platform nie wy­klu­cza i ta­kie­go roz­wią­zy­wa­nia prob­le­mów, w skraj­nych przy­pad­kach po­zwa­la­jąc jed­nak też sko­rzys­tać z tych mniej ele­ganc­kich tech­nik auto­ma­ty­zacji.

Najważniej­sze jest jed­nak, by mieć świa­do­mość po­trze­by auto­ma­ty­zo­wa­nia nud­nych, cza­so­chłon­nych i po­wta­rzal­nych pro­ce­sów. Zastąpienie sek­wen­cji ręcz­nych czyn­no­ści pro­gra­mem, któ­ry zro­bi to sa­mo szyb­ciej, pew­niej i wy­god­niej wpro­wa­dza zu­peł­nie no­wą ja­kość i po­wo­du­je, że pra­ce, któ­re pod­świa­do­mie od­kła­da­liś­my na póź­niej, wy­ko­nu­je­my na bie­żą­co i z przy­jem­noś­cią.