Fejlesztői kézikönyv 6.3

XML Referencia 6.3

Effector Studio 6.3 összefoglaló

Effector Studio 6.3 kézikönyv

Fejlesztői kézikönyv 6.2

XML Referencia 6.2

Effector Studio 3.2 összefoglaló

Effector Studio 3.2 kézikönyv

Fejlesztői kézikönyv 5.5

XML referencia 5.5

Effector Studio 2.0 kézikönyv

Effector Studio 2.0 összefoglaló

Folyamatok 6.1

Ez a fejezet az üzleti folyamatok modellezéséhez, és azok paraméterezéséhez nyújt segítséget.

Az egyes üzleti folyamatok általában valamely valós üzleti folyamat leképezését jelentik, melyek segítségével a manuálisan végzett tevékenységek ellenőrizhetővé, nyomon követhetővé válnak. Az egyes lépések kommunikálhatnak is egymással a rendszeren belül, így segítségükkel egyszerűbbé válik a dokumentumok, adatok áramlása az egyes munkahelyek között.

Minden folyamatnak van egy kezdő-, valamint egy vég állapota, ahová a folyamat tart és eljut életútja során az egyes állomásokon keresztül, valamiféle előre programozott logikát követve.

Effectorban a folyamatok pareméterezése és modellezése az állapotátmeneteken, és a folyamatok induló-, és vég állapotán alapul. A folyamatokat összefogó objektumot Folyamat (Workflow) objektumnak nevezzük, ez az objektum az adott üzleti folyamat reprezentációja. Az egyes állapotokat az esemény (Event) objektumokkal és azok leszármazottjaival kezeljük le. Egy folyamat lépés (WorkflowStep) egy eseménynek felel meg a rendszerben. Az állapot-átmeneteket az egyes üzleti objektumokban konfigurált ún. Trigger-ek segítségével paraméterezhetjük.

Az Folyamatkezelő rendszerek fejezetben említett egyszerű folyamat, az "Üzleti találkozó egyeztetése" az alábbi jellemzőkkel írható le.

  • Állapotok (Események):

    • A: A találkozó részleteinek rögzítése
    • B: Időpont egyeztetés
    • C: Találkozó eredményének rögzítése
  • Állapot átmenetek(Triggerek):

    • A -> B: Nincs rögzített időpont, további egyeztetés szükséges.
    • A -> C: Van rögzített időpont, a találkozó lebonyolítható.
    • B -> B: Időpont egyeztetés nem sikerült, újabb időpont egyeztetés szükséges.
    • B -> C: Időpont egyeztetés sikeres, a találkozó lebonyolítható.

Ábrázolása folyamatábrán a következő:

Állapot átmeneti gráf

Az Effectorban elhelyezett folyamatmotor képes a folyamatok verziózására is, így a folyamatok könnyebben módosíthatók.

Elérhető funkciók

  • Folyamatok regisztrálása a rendszerben
  • Folyamatok paraméterezése

Folyamatok regisztrálása a rendszerben

A rendszerben található folyamatok listáját, illetve az egyes folyamatlépések listáját a Workflow könyvtárban található XML állományok írják le.

Folyamatok összefoglaló állománya:

Az XML gyökér könyvtárában található WorkFlows.xml állományban van felsorolva, hogy milyen folyamatok léteznek a rendszerben.

<Workflows xmlns="http://effector.hu/schema/ns/workflows">
    <Workflow>
        <ObjectType>alapfolyamat</ObjectType>
        <Caption>alap folyamat</Caption>
    </Workflow>
    <Workflow>
        <ObjectType>komplexfolyamat</ObjectType>
        <Caption>Komplex folyamat</Caption>
    </Workflow>
</Workflows>

Ennek a fájlnak léteznie kell akkor is, ha nincs folyamat az ügyfélnél. Ebben az esetben nincs benne egy WorkFlow node sem. A példában kettő folyamat van definiálva. Minden folyamat definíciónak van ObjectType node-ja, ez lesz a folyamat típusa, a Caption node értéke pedig a folyamat megnevezését tartalmazza. (Ez az információ csak az Effector Studio-ban jelenik meg.)

Minden WorkFlow node-hoz tartoznia kell egy konfigurációs fájlnak a WorkFlow mappában, mégpedig a következő név konvenciót követve: WorkFlow<name>.<verzió>.xml, ahol a <name> a WorkFlow node ObjectType attribútumának értékét jelenti, a <verzió> pedig egy sorszám, amely 1-től indul és az aktuális verziónak felel meg. Ez a folyamatleíró állomány határozza meg, hogy milyen lépésekből épül fel az adott folyamat.

WorkFlowRendszertervezes.1.xml

Folyamat leíró állomány:

<Workflow xmlns="http://effector.hu/schema/ns/workflow">
    <Steps>
        <Step>
            <Caption>Project rögzítése</Caption>
            <BusinessObject>BusinessObjectProjectRendszertervezes</BusinessObject>
        </Step>
        <Step>
            <Caption>01. Előkészítés alatt</Caption>
            <BusinessObject>BusinessObjectEventRendszertervezes01Elokszites</BusinessObject>
        </Step>
        <Step>
            <Caption>02. Megvalósítható</Caption>
            <BusinessObject>BusinessObjectEventRendszertervezes02Megvalosithato</BusinessObject>
        </Step>
        <Step>
            <Caption>03. Megoldva</Caption>
            <BusinessObject>BusinessObjectEventRendszertervezes03Megoldva</BusinessObject>
        </Step>
    </Steps>
    <Graph>{"WFStepDimensions":null,"Links":null}</Graph>
</WorkFlow>

Az egyes lépéseket a Steps kollekció Step node-jaiban sorolhatjuk fel. Ezek a folyamatban szerepet játszó objektumok. A BusinessObject node tartalmazza a lépéshez tartozó BusinessObject referenciát, a Caption node értéke pedig a folyamat lépés megnevezését tartalmazza. (Ez az információ csak az Effector Studio-ban jelenik meg.)

A részfolyamatok definiálását az IsSubWorkflow opcionális node teszi lehetővé. Logikai érték, alapértelmezett értéke false. Jelenleg az Effector Studio használja.

A folyamat lépésekhez tartozó átmeneteket az egyes BusinessObject-ek tartalmazzák és az azokon belül lévő Tigger node-ok segítségével állíthatjuk be őket. Részletes leírást az Üzleti objektumok fejezetben talál.

Folyamatok paraméterezése

Ez a komplex példa bemutatja, hogyan tudunk a rendszerben egy folyamatot felparaméterezni, azonban nem tartalmazza minden aspektusát, csak magára a folyamatra fókuszál.

Valósítsuk meg a fejezet bevezetőjében említett folyamatot:

Először is a gyökér mappában található WorkFlows.xml-be kell bejegyeznünk az új folyamatunkat:

<WorkFlows xmlns="http://effector.hu/schema/ns/workflows">
    <Workflow>
        <ObjectType>Pelda</ObjectType>
        <Caption>Új példa folyamat</Caption>
    </Workflow>
</WorkFlows>

A folyamat bejegyzése utána elkészíthetjük a megfelelő folyamat leírót, és a hozzájuk tartozó üzleti objektumokat. A folyamat definícióját a WorkFlowPelda.1.xml fájlba kell tennünk.

Modellezendő állapotok:

  • A: A találkozó részleteinek rögzítése
  • B: Időpont egyeztetés
  • C: Találkozó eredményének rögzítése

       <WorkFlow xmlns="http://effector.hu/schema/ns/workflow">
           <Steps>
               <Step>
                   <Caption>Találkozó rögzítése</Caption>
                   <BusinessObject>BusinessObjectProjectPelda</BusinessObject>
               </Step>
               <Step>
                   <Caption>A találkozó részleteinek rögzítése</Caption>
                   <BusinessObject>BusinessObjectEventPeldaStepA</BusinessObject>
               </Step>
               <Step>
                   <Caption>Időpont egyeztetés</Caption>
                   <BusinessObject>BusinessObjectEventPeldaStepB</BusinessObject>
               </Step>
               <Step>
                   <Caption>Találkozó eredményének rögzítése</Caption>
                   <BusinessObject>BusinessObjectEventPeldaStepC</BusinessObject>
               </Step>
           </Steps>
       </WorkFlow>
    

Megjegyzés: Ne feledkezzünk el a Projekt objektum elkészítéséről sem! (BusinessObjectProjectPelda)

  • A folyamat A lépése (BusinessObjectEventPeldaStepA.xml)

    BusinessObjectEvent U_Event_ID [##Session.UserID##] A találkozó részleteinek rögzítése true false '[##Parent.Felelos##]'

    A fenti példában látható, hogy ha egy mező értékét a szülő objektum egy mezője alapján szeretnénk beállítani, akkor a Parent hivatkozás csoportot kell használnunk: '[##Parent.Felelos##]'. Így jelen esetben be tudjuk állítani, hogy az aktuális feladat felelőse ugyanaz a személy legyen, aki a megelőző lépésnek is a felelőse volt, de a szülő objektum bármelyik mezőjére tudunk így hivatkozni.

    A folyamat léptetését megvalósító trigger:

       <Triggers>
           <Trigger action="Create" sourceBusinessObject="Project" sourceObjectType="Pelda" event="Created" />
       </Triggers>
    

    Megjegyzés: Ne feledkezzünk el arról, hogy a cél lépésnél kell rögzítenünk a triggereket!

  • BusinessObjectEventPeldaStepB.xml Triggers része

    Abban az esetben, ha a StartDate üres, további egyeztetés szükséges. Ezt a lépést két helyről is indíthatjuk: az eredeti rögzítés után, vagy egy sikertelen egyeztetés rögzítésekor. Ezt mutatja be az alábbi trigger konfiguráció.

       <Triggers>
           <Trigger action="Create" sourceBusinessObject="Event" sourceObjectType="BusinessObjectEventPeldaStepA" event="Done">
               <Condition type="Simple" return="boolean" default="true">'[##Field.StartDate##]' == ''</Condition>
           </Trigger>
           <Trigger action="Create" sourceBusinessObject="Event" sourceObjectType="BusinessObjectEventPeldaStepB" event="Done">
               <Condition type="Simple" return="boolean" default="true">'[##Field.StartDate##]' == ''</Condition>
           </Trigger>
       </Triggers>
    
  • BusinessObjectEventPeldaStepC.xml Triggers része

    Az utolsó lépés mindenképp létrejön, ha bármelyik esemény bekövetkezik az alábbiak közül: Úgy kerül kész állapotba az A, vagy a B esemény, hogy ki van töltve az egyeztetés időpontját reprezentáló StartDate mező.

       <Triggers>
           <Trigger group="0" action="Create" sourceBusinessObject="Event" sourceObjectType="BusinessObjectEventPeldaStepA" event="Done">
               <Condition type="Simple" return="boolean" default="true">'[##Field.StartDate##]' != ''</Condition>
           </Trigger>
           <Trigger group="0" action="Create" sourceBusinessObject="Event" sourceObjectType="BusinessObjectEventPeldaStepB" event="Done">
               <Condition type="SQL" return="boolean" default="false">SELECT CASE WHEN '[##Field.StartDate##]' != '' THEN 'true' ELSE 'false' END</Condition>
           </Trigger>
       </Triggers>
    

    Példa 2:

       <Trigger group="0" action="RunSQL" sourceBusinessObject="Event" sourceObjectType="BusinessObjectEventPeldaStepB" event="Done">
           <SQL>
               osp_wrk_ChangePortfolio '[##Triggered.ProjectID##]', 3, '[##Session.UserID##]'
           </SQL>
       </Trigger>
    

    A példában a trigger lefuttat egy tárolt eljárást, ami átállítja az adott folyamat státuszát, ha az előző lépés sikeresen lefutott. A Triggered hivatkozás az újonnan létrejött objektumra mutat.

    Példa 3:

       <Trigger group="0" action="RunSQL" sourceBusinessObject="Event" sourceObjectType="BusinessObjectEventPeldaStepC" event="Done">
           <SQL>
               osp_wrk_ChangePortfolio '[##Field.ProjectID##]', 4, '[##Session.UserID##]'
           </SQL>
       </Trigger>
    

    A fenti példában látható, hogy a triggerben az objektum önmagára hivatkozva (is) végrehajthat egy tetszőleges műveletet. Ebben a példában a tárolt eljárás azt a ProjectID-t kapja meg, amelyikből az adott lépés létrejön, vagyis a triggerekben a Field hivatkozás mindig a létrehozó lépés egy mezőjére vonatkozik.

A folyamat indításakor az adatbázis WorkFlow táblájában létrejön egy sor. Az ObjectType oszlopban lesz a WorkFlow ObjectType node-jának értéke. A keletkezett WorkFlowID értéket bejegyzi a rendszer a folyamatban részt vevő objektumok WorkflowID oszlopába, ezzel összekötve a folyamattal az objektumot. Ezek az objektumok a BusinessObjectEvent és BusinessObjectProject.

Kapcsolt folyamat

Effectorban lehetőségünk van több folyamatot is összekapcsolni, ha például azt szeretnénk, hogy egy folyamat egy adott lépése után elinduljon egy másik folyamat, vagy ha két különböző folyamat fut párhuzamosan, és egy ponton az egyik folyamat soron következő lépése a másik folyamat valamelyik lépésétől függ.

Példa (BusinessObjectEventA.xml):

    <Trigger sourceBusinessObject="Event" sourceObjectType="WorkFlowB_Step1" action="Create" isAttachedWorkflow="true" attachedWFTemplate="WorkFlowB" event="Done">
        <Condition type="SQL">
        ...
        </Condition>
    </Trigger>

A fenti példában az EventA folyamatlépés a WorkFlowB típusú folyamat WorkFlowB_Step1 lépése után kell következzen. Az isAttachedWorkflow attrubútum true értékre állítása mondja meg, hogy ez egy kapcsolt folyamat része, az attachedWFTemplate attribútumban pedig a kapcsolt folyamat típusát (ObjectType node értékét) adjuk meg. Ilyenkor a sourceObjectType attribútumban azt a kapcsolt folyamatlépést kell megadnunk, amelyből létre kell jöjjön a szóban forgó lépés.

Ebben az esetben az FSYS_AttachedWorkflow adatbázis tábla tárolja, hogy melyik folyamat melyikkel van összekötve, mezői:

  • EventID: A szóban forgó folyamatlépés Event táblabeli egyedi azonosítója.
  • Project: A szóban forgó folyamat Project táblabeli egyedi azonosítója.
  • To_Project: A kapcsolt folyamat Project táblabeli egyedi azonosítója.
  • Workflow: A szóban forgó folyamat WorkFlow táblabeli egyedi azonosítója.
  • To_Workflow: A kapcsolt folyamat WorkFlow táblabeli egyedi azonosítója.

  • Legutóbb frissítve: 1 év 2 hete
  • Effector