UiPath: Human-in-the-loop

I detta blogg-inlägg visar jag hur en organisation kan använda UiPath för att implementera arbetsflöden där maskin och människa måste samverka för att slutföra uppgiften.

Scenario

Uppgiften i mitt exempel består av att en användare måste validera att utlägg och signatur är korrekta. Flödet ser i korthet ut som följande:

1. Inskanning av utlägg
2. Robot läser in utlägg
3. Robot skapar arbetsuppgift för att få utlägg och signatur validerat
4. Administratören tilldelar en användare en arbetsuppgift
5. Användare läser och validerar utlägg och signatur
6. Roboten fortsätter processa godkända utlägg och signaturer.
     a. Roboten sparar godkända signaturer

Det finns några kommentarer att göra. Den version av UiPath-plattform som jag använder mig av är i ”preview” och inte en stabil version så det finns buggar. Implementationen är inte heller tänkt för produktion utan endast för att påvisa konceptet med human-in-the-loop.

Ovan skriver jag att godkända signaturer ska sparas. Tanken med det är att i framtiden implementera machine learning (ML), eller om man så vill, artificiell intelligens (AI) för att lära roboten att känna igen handskrivna signaturer. Min avsikt är att återkomma till detta i ett senare blogg-inlägg. När det gäller ML och AI håller UiPath på att utveckla lösningar avseende hantering av fakturor och kvitton. Jag återkommer även när det gäller detta så snart lösningarna är något stabilare.

För att klara denna typ av scenarier använder UiPath två koncept, Tasks och Long Running Workflows. Som verktygsstöd behövs förutom en unattended robot också Orchestrator. Dessutom, som jag kommer visa, kan Apps användas.

Robot

Processen kan manuellt startas via robotpanelen men eftersom vi ändå måste ha Orchestratorn så låter vi den per automatik starta processpanelen. I mitt exempel heter processen ”HumanInTheLoop_OrchProc_Demo”. Bilden här bredvid visar dels vilka processer som finns installerade på roboten och dels vilka processer som körs i bakgrunden. I detta fall är just nämnda process startad.

 human-in-the-loop-1


Tasks

Task är de arbetsuppgifter som roboten skapar åt människan. Till varje task hör ett formulär med information som ska utbytas med en människa. Alla tasks listas i Orchestratorn där de sedan kan tilldelas en användare.

human-in-the-loop-2

I bilden ovan finns tre nya task som inte ännu blivit tilldelade till någon person samt två som blivit slutförda av administratören. Innan en task kan utföras måste den först tilldelas. Som administratör kan man tilldela sig själv eller någon annan person. En task kan sedan öppnas i Orchestratorn eller i Apps. Jag använder här Apps, se nedan, för att visa formuläret. 

 

 human-in-the-loop-3

Apps

UiPath har en app för Orchestrator som går att installera på telefoner och liknande. Den appen har många av de möjligheter som finns i vanliga Orchestrator. Däribland hantering av tasks och long running transactions, samt övervakning av processer och robotar. human-in-the-loop-4

När användaren väl blivit tilldelad en task får denna en notifiering i telefonen. Hen kan då öppna Orchestrator-appen och sina tilldelade task och utföra dessa. Om jag är administratör kan jag som bilden visar administrera tasks.

human-in-the-loop-5 human-in-the-loop-6


När en arbetsuppgift öppnas visas tillhörande formulär. I exemplet visas en logotyp och två checkboxar för att kunna ange om utlägg, respektive signatur är korrekta. Det som saknas i formuläret är bilden av inskannade utlägg och signatur. Vi får tillsvidare föreställa oss att de finns där. Varje task har ett ID-nummer, i detta fall är 9912. När användaren slutfört sin uppgift fortsätter roboten sin process. I mitt enkla exempel innebär det att visa ett meddelande med ID-nummer, vilken åtgärd användaren vidtagit (OK eller Avbryt) samt den råa JSON-koden med formulärdata. När en arbetsuppgift är utförd ändras givetvis statusen i Orchestratorn.

human-in-the-loop-7 

human-in-the-loop-8

Long Running workflows
När roboten skapat en arbetsuppgift och inväntar svar är den fri att utföra andra processer. Har man dessutom flera robotar kan dessa samverka. En eller flera robotar kan skapa arbetsuppgifter. När sedan en arbetsuppgift blir besvarad tar första lediga robot vid och fortsätter processa. För det krävs att processers status kan persisteras till dess det är dags att exekvera igen. Detta är konceptet bakom long running workflows och nyttan är att verkningsgraden på robotarna blir högre.

Orchestrator
I detta sammanhang används Orchestrator för att persistera processer och för att hantera Task. I Orchestrator kan en utsedd administratör tilldela task till användare. En användare kan sedan öppna sina task och använda det tillhörande formuläret. Se ovan.

UiPath Studio
För att implementera beskrivet scenario måste UiPath-projektet skapas från mallen Orchestration Process och följande paket refereras.

human-in-the-loop-9

Detta ger aktiviteter för att hantera long running workflows som bilden nedan visar. Av dessa använder jag sedan Create Form Task för att skapa en arbetsuppgift med tillhörande formulär. Jag använder också Wait For Form Task and Resume för att vänta på att en användare ska slutföra en arbetsuppgift.

human-in-the-loop-10

För varje bild med inskannade utlägg skapas sedan en task. När man gör det anger man titel, prioritet och det data som dynamiskt ska visas i formuläret eller som ska få sina värden av användaren. I mitt exempel är det värdena isExpensesOK samt isSignatureOK.

human-in-the-loop-11

I aktiviteten kan man också öppna formulärhanteraren. I den kan man skapa enkla formulär. I mitt fall har jag lagt in en rubrik, logga, data som efterfrågas (se form data ovan) samt knappar för OK (submit) och avbryt (cancel).

human-in-the-loop-12

Efter att alla arbetsuppgifter är skapade väntar processen på att någon ska slutföras. Aktiviteten för det tar som inparameter det objekt som returnerades när uppgiften skapades (resultTask). Som utparametrar anges vilken knapp användaren tryckt på samt formulärdatat och dess värden.

human-in-the-loop-13 human-in-the-loop-14

Sammanfattning

Även om mitt exempel är trivialt, har skönhetsfel och buggar visar det ändå konceptet Human-In-The-Loop och vad som krävs för att implementera det. I kommande blogg-inlägg ska jag försöka visa hur RPA och i synnerhet UiPath kan användas tillsammans med Machine Learning.