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

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 projekt (Project) objektumnak nevezzük, ez az objektum az adott üzleti folyamat reprezentációja. Az egyes állapotokat az esemény (Event) objektumokkal és azok leszármazottaival kezeljük le. Egy folyamat lépés 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óak.

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:

A WorkFlowList.xml állományban van felsorolva, hogy milyen folyamatok léteznek a rendszerben.

<WorkFlows>
    <WorkFlow name="Igeny">Igény</WorkFlow>
    <WorkFlow name="Altalanos">Általános feladat</WorkFlow>
    <WorkFlow name="Rendszertervezes">Rendszertervezés (feladat)</WorkFlow>
    <WorkFlow name="Programozas">Programozás</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 négy folyamat van definiálva. Minden folyamat definíciónak van name attribútuma, ez lesz a folyamat típusa, a node értéke pedig a folyamat megnevezését tartalmazza. (Ez az információ nem jelenik meg a felületen.)

Minden WorkFlow node-hoz tartoznia kell egy konfigurációs fájlnak, mégpedig a következő név konvenciót követve: WorkFlow<name>.<verzió>.xml, ahol a <name> a WorkFlow node name 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:

Az egyes folyamatokat leíró állomány gyökér node-jában kapott helyet az állomány azonosító (name attribútum), amely kitöltése kötelező, és a fent említett konvenciónak megfelelően kell az értékét megadni. A version attribútum értéke reprezentálja a verziót, melynek meg kell egyeznie a fájlnévben levő verziószámmal.

<WorkFlow name="Rendszertervezes" version="1">
    <WorkFlowStep name="BusinessObjectProjectRendszertervezes">Project rögzítése</WorkFlowStep>
    <WorkFlowStep name="BusinessObjectEventRendszertervezes01Elokszites">01. Előkészítés alatt</WorkFlowStep>
    <WorkFlowStep name="BusinessObjectEventRendszertervezes02Megvalosithato">02. Megvalósítható</WorkFlowStep>
    <WorkFlowStep name="BusinessObjectEventRendszertervezes03Megoldva">03. Megoldva</WorkFlowStep>
</WorkFlow>

Az egyes lépéseket a WorkFlow kollekció WorkFlowStep node-jaiban sorolhatjuk fel. Ezek a folyamatban szerepet játszó objektumok. A name attribútum tartalmazza a lépéshez tartozó BusinessObject referenciát, a node értéke pedig a folyamat lépés megnevezését tartalmazza. (Ez a felületen nem jelenik meg.)

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 WorkFlow mappában található WorkFlowList.xml-be kell bejegyeznünk az új folyamatunkat:

<WorkFlows>
    <WorkFlow name="Pelda">Új példa folyamat</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 name="Pelda" version="1">
           <WorkFlowStep name="BusinessObjectProjectPelda">Találkozó rögzítése</WorkFlowStep>
           <WorkFlowStep name="BusinessObjectEventPeldaStepA">A találkozó részleteinek rögzítése</WorkFlowStep>
           <WorkFlowStep name="BusinessObjectEventPeldaStepB">Időpont egyeztetés</WorkFlowStep>
           <WorkFlowStep name="BusinessObjectEventPeldaStepC">Találkozó eredményének rögzítése</WorkFlowStep>
       </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)

       <BusinessObject mainbo="Event" Name="PeldaStepA">
           <UniqueID>U_Event_ID</UniqueID>
           <Fields>
               <Field name="StartDate"></Field>
               <Field name="EndDate"></Field>
               <Field name="CreatedByID">
                   <DefaultValue type="Constant" return="int">[##Session.UserID##]</DefaultValue>
               </Field>
               <Field name ="Description">
                   <DefaultValue type="Constant">A találkozó részleteinek rögzítése</DefaultValue>
               </Field>
               <Field name="Task">
                   <DefaultValue type="Constant">true</DefaultValue>
               </Field>
               <Field name="Done">
                   <DefaultValue type="Constant">false</DefaultValue>
               </Field>
               <Field name="Felelos">
                   <DefaultValue type="Constant">'[##Parent.Felelos##]'</DefaultValue>
               </Field>
           </Fields>
           <Triggers>
               <Trigger businessObject="Project" template="Pelda" type="Create" group="0">
                   <TriggerEvent>Created</TriggerEvent>
               </Trigger>
           </Triggers>
       </BusinessObject>
    

    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 businessObject="Project" template="Pelda" type="Create" group="0">
               <TriggerEvent>Created</TriggerEvent>
           </Trigger>
       </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 businessObject="Event" template="BusinessObjectEventPeldaStepA" type="Create" group="0">
               <TriggerEvent>OKEvent</TriggerEvent>
               <Condition type="Simple">'[##Field.StartDate##]' == ''</Condition>
           </Trigger>
           <Trigger businessObject="Event" template="BusinessObjectEventPeldaStepB" type="Create" group="0">
               <TriggerEvent>OKEvent</TriggerEvent>
               <Condition type="Simple">'[##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 businessObject="Event" template="BusinessObjectEventPeldaStepA" type="Create" group="0">
                   <TriggerEvent>OKEvent</TriggerEvent>
                   <Condition type="Simple">'[##Field.StartDate##]' != ''</Condition>
               </Trigger>
               <Trigger businessObject="Event" template="BusinessObjectEventPeldaStepB" type="Create" group="0">
                   <TriggerEvent>OKEvent</TriggerEvent>
                   <Condition type="SQL" return="boolean" default="false">SELECT CASE WHEN '[##Field.StartDate##]' != '' THEN 'true' ELSE 'false' END</Condition>
               </Trigger>
       </Triggers>
    

    Példa 2:

       </Trigger>
           <Trigger businessObject="Event" template="BusinessObjectEventPeldaStepB" type="RunSQL" group="0">
               <TriggerEvent>OKEvent</TriggerEvent>
               <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 businessObject="Event" template="BusinessObjectEventPeldaStepC" type="RunSQL" group="0">
           <TriggerEvent>OKEvent</TriggerEvent>
           <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édában a 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\name attribútumá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 businessObject="Event" template="WorkFlowB_Step1" type="Create" group="0" isAttachedWorkflow="true" attachedWFTemplate="WorkFlowB">
        <TriggerEvent>OKEvent</TriggerEvent>
        <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 (name attribútumának értékét) adjuk meg. Ilyenkor a template 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 6 hete
  • Effector