Základom pracovného postupu a procesov je nástroj Activiti. Obsahuje rozhranie API Activiti REST Toto rozhranie je prístupné na nasledujúcej adrese:
/c//activiti/
Existujú tieto obmedzenia:
Rozhranie
/login
nie je podporované. Používa sa autorizácia ABRA Flexi.Úprava používateľov, skupín a členstiev nie je podporovaná. Všetko sa vykonáva prostredníctvom rozhrania ABRA Flexi.
Nahrávanie nového procesu sa musí vykonať prostredníctvom systému ABRA Flexi (kvôli definícii platnosti pracovného postupu). Aktualizácie procesov je už možné vykonávať prostredníctvom rozhrania API Activiti.
API pre ABRA Flexi
Zoznam definícií pracovných postupov pre daný záznam:
GET /c///workflows.xml
Spustenie pracovného postupu
PUT /c////workflows//start
Pri spúšťaní je možné pracovnému postupu odovzdať aj parametre, ktoré sa môžu použiť pri rozhodovaní:
PUT /c////workflows//start?parameter1=hodnota1¶meter2=hodnota2
Zoznam udalostí (poznámky a úlohy) pre objekt:
/c////udalosť
Zoznam udalostí vrátane ďalších atribútov pracovného postupu:
/c////event.xml?includes=event/actRuTask
Pri práci s pracovným postupom zvyčajne chcete vykonávať len úlohy určitého typu:
/c////udalosť/(typ udalosti = 'typeEvent.workflow')
Zoznam všetkých úloh pre konkrétny pracovný postup:
/c//event/(typ udalosti = 'kindUdal.workflow' a processDefinitionId = '')
Zoznam všetkých úloh s daným kľúčom úlohy pre konkrétny pracovný postup:
/c//event/(typ udalosti = 'kindUdal.workflow' a processDefinitionId = '' a taskDefinitionKey = '')
Zoznam všetkých úloh, ktoré môže aktuálne prihlásený používateľ riešiť:
/c//event@event-to-realize
Odoslanie signálu všetkým spusteným pracovným postupom, ktoré naň môžu reagovať:
/c////workflow-signal/?param1=value
Odoslanie správy všetkým spusteným pracovným postupom, ktoré na ňu môžu reagovať:
/c////workflow-message/?param1=value
Úloha:
/c//udalosť//
claim.xml | vhodné úlohy |
unclaim.xml | zrušiť nárok na úlohu |
complete.xmlcomplete | vyriešiť úlohu |
assign.xml?username=user1 | odovzdať úlohu používateľovi user |
add-comment.xml?comment=text1 | pridať komentár k úlohe |
V prípade hodnôt parametrov, ktoré obsahujú iné ako povolené znaky URL (medzera, kurzíva atď.), je potrebné Kódovanie adresy URL.
Očakáva sa kódovanie textu v
UTF-8
.
Poznámka: udalosti typu úloha pre pracovný postup sa po vyriešení vyradia. Namiesto .xml sa môže použiť aj hlavička .json
alebo Accept
.
Zoznam úloh a s nimi súvisiacich objektov
/c///
Objekty používané v rozhodovacom procese ABRA Flexi
| Vráti používateľa so zadaným menom |
| Vráti objekt dotazu používateľa so zadaným názvom (výstup je totožný s metódou objectQuery). |
| Vracia objekt daného typu, ktorý je pripojený k úlohe pracovného postupu |
| Umožňuje filtrovať objekty v relácii. |
| Umožňuje vrátiť prvý objekt vo filtrovanej relácii. |
| Umožňuje sčítať objekty vo filtrovanej relácii. |
| Umožňuje reťaziť spracovanie dotazu. |
| Umožňuje filtrovať objekty vo vzťahu. |
| Umožňuje vrátiť prvý objekt v relácii. |
| Umožňuje sčítať objekty v relácii. |
| Zabalí objekt pomocou dotazu (rovnaký výsledok ako vráti napr. |
| Vráti jeden objekt daného typu, ktorý vyhovuje zadanému filtru. |
| Vyvolá signál nad všetkými pracovnými postupmi, ktoré prebiehajú nad vybraným záznamom. |
| Vráti všetky objekty daného typu, ktoré vyhovujú zadanému filtru. |
| Vráti počet objektov daného typu, ktoré vyhovujú zadanému filtru. |
| Vráti súčet daného stĺpca pre všetky objekty daného typu, ktoré vyhovujú danému filtru. |
| Vráti maximálnu hodnotu daného stĺpca pre všetky objekty daného typu, ktoré vyhovujú danému filtru. |
| Vráti min daného stĺpca pre všetky objekty daného typu, ktoré vyhovujú zadanému filtru. |
| Vráti priemer daného stĺpca pre všetky objekty daného typu, ktoré vyhovujú zadanému filtru. |
| Umožňuje triedenie vo vzostupnom poradí (viac o triedení v API). |
| Umožňuje zoradenie v zostupnom poradí (viac o zoradení v API). |
| Vráti aktuálne nastavenia spoločnosti ( |
| Vráti nastavenia spoločnosti (záznamy o |
| Vracia interný názov premennej, ktorý ABRA Flexi používa na väzbu jednotlivých pracovných postupov na dokumenty a objekty v ABRA Flexi. Zvyčajne sa používa pri volaní podprocesu. |
| Vracia hodnotu true, ak je pracovný postup aktuálne spustený v aplikácii na ploche |
| Vracia hodnotu true, ak je pracovný postup aktuálne spustený prostredníctvom rozhrania REST API alebo v prehliadači. |
| Importuje XML reťazec podľa ABRA Flexi REST API. Vracia kolekciu identifikátorov objektov z importu XML. |
| Aktuálny dátum a čas. |
| Meno aktuálne prihláseného používateľa (pre viac informácií použite |
| Záznam activiti, ktorý predstavuje úlohu (viac dokumentácie acitiviti). |
| Informácie o aktuálne spustenom pracovnom postupe (viac dokumentácie acitiviti). |
Volanie podprocesu
Ak voláte podproces a chcete, aby výsledné úlohy boli prepojené s dokumentmi, musíte aktivovať povýšenie väzbových premenných na pracovný postup. Postupujte takto:
<?xml version="1.0"?> <callActivity id="callSubProcess" calledElement="checkCreditProcess"> <extensionElements> <activiti:in source="${flexibee.varName('invoice-received')}" target="${flexibee.varName('invoice-received')}"/> <activiti:in source="initiator" target="initiator"/> </extensionElements> </callActivity>
Práca s používateľmi v pracovnom postupe
Ak chcete pracovať s používateľmi, máte k dispozícii niekoľko možností. Dávajte pozor, aby ste v definícii používateľa nepoužili znak čiarky (,). Activiti má chybu, ktorá bráni jeho používaniu.
Pôvodca pracovného postupu
Pri spustení pracovného postupu definujte premennú iniciátora
. Potom ho môžete použiť ako meno používateľa na priradenie úlohy.
<?xml version="1.0"?>
Súčasný používateľ
Ak chcete priradiť úlohu tomu istému používateľovi, ktorý vykonal aktuálnu operáciu, použite premennú authenticatedUserId
.
Konkrétny používateľ
Počas spracovania môžete použiť konkrétneho používateľa. Používateľa môžete vyhľadať aj podľa určitých kritérií (napr. štítku):
<?xml version="1.0"?> <formalExpression>${flexibee.query('user').relation('label ="code:EMPLOYEE"').one().code}</formalExpression>
Alebo používateľská väzba:
<?xml version="1.0"?> <formalExpression>${flexibee.userQuery(initiator).relation('user-bindings').filter('typeBindings = "code:UPDATED"').one().code}</formalExpression>
Úprava dokumentov
Niekedy je potrebné pri spracovaní pracovného postupu upraviť jeden alebo viacero dokumentov. To možno vykonať pomocou flexibee-xml
. Aby metóda flexibee.object()
fungovala, musí byť pracovný postup prepojený s týmto dokumentom.
<?xml version="1.0"?>
Upravovať možno aj viacero objektov:
<?xml version="1.0"?> <serviceTask id="cancellation" activiti:class="flexibee-xml"> <extensionElements> <activiti:field name="xml"> <activiti:expression><![CDATA[ <winstrom> <invoice-issued action="cancellation"> <id>code:FAV0001/2013</id> </invoice-issued> <invoice-issued action="cancellation"> <id>code:FAV0002/2013</id> </ invoice-issued> </winstrom> ]]></activiti:expression> </activiti:field> </extensionElements> </serviceTask>
Získanie identifikátorov upravených objektov
Pomocou premennej idsVar
načítajte kolekciu identifikátorov, ktoré boli zmenené importom XML.
<?xml version="1.0"?> <serviceTask id="import" activiti:class="flexibee-xml"> ... <extensionElements><activiti:field name="idsVar" stringValue="listId"/></extensionElements> </serviceTask>
Po úspešnom importe XML bude premenná listId
obsahovať kolekciu identifikátorov upravených objektov.
Spracovanie chýb počas importu XML
Ak sa v úlohe flexibee-xml
vyskytne chyba importu XML, spracovanie pracovného postupu sa preruší chybou WSBusinessRTException
. Výnimka obsahuje opis chyby a zobrazí sa v grafickom používateľskom rozhraní ako dialógové okno s chybou.
Ak má pracovný postup pokračovať aj v prípade chyby importu, definíciu úlohy možno rozšíriť o parametre errorVar
a errorMessageVar
:
<?xml version="1.0"?> <serviceTask id="cancellation" activiti:class="flexibee-xml"> ... <extensionElements><activiti:field name="errorVar" stringValue="wasError"/><activiti:field name="errorMessageVar" stringValue="errorMessage"/></extensionElements> </serviceTask>
premenná | dátový typ | popis |
|
| definuje názov premennej (napr. |
|
| definuje názov premennej (napr. |
Podmienené vetvenie na základe objektov
V pracovnom postupe môžete ABRA Flexi klásť otázky a reagovať na základe odpovede:
${flexibee.object('objednavka-prijata').sumTotal > 1000}
Je možné sa tiež všeobecne dopytovať, napr. koľko neuhradených faktúr má spoločnosť, ktorá je uvedená na aktuálnej faktúre:
${flexibee.query('invoice-issued').filter('stavUhrK != "stavUhr.paid" and stavUhrK != "stavUhr.paidRucne" and firm='.concat(flexibee.object('invoice-issued').firm.id)).sum('sumTotal') > 1000}
Prenos stavu pracovného postupu do dokumentu
Niekedy je potrebné zmeniť stav dokumentu na základe stavu pracovného postupu. To sa dá dosiahnuť pomocou štítkov, ktoré sú priradené k jednej skupine, pre ktorú je nastavená exkluzivita (potom sa pri nastavení nového štítku z tej istej skupiny ostatné vymažú). To sa potom opäť realizuje pomocou flexibee-xml
, ktorý sa volá vždy, keď sa zmení stav pracovného postupu:
<?xml version="1.0"?>