Külső szabálykészlet eszközcsomag

Általában, ha egy munkafolyamat-alkalmazásban szabályokat használnak, ezek a szabályok az összeállítás részét képezik. Bizonyos esetekben érdemes lehet a szabálykészleteket a szerelvénytől elkülönítve fenntartani, hogy azok a munkafolyamat-szerelvény újraépítése és üzembe helyezése nélkül frissíthetők legyenek. Ez a minta lehetővé teszi, hogy kezelje és szerkessze az adatbázisban lévő szabálykészleteket, és futásidőben hozzáférjen ezekhez a szabálykészletekhez egy munkafolyamatból. Ez lehetővé teszi, hogy a munkafolyamat-példányok automatikusan belefoglalják a RuleSet-módosításokat.

A Külső szabálykészlet eszközkészlet minta egy Windows Forms-alapú eszközt tartalmaz, amellyel kezelheti és szerkesztheti az adatbázis RuleSet-verzióit. Emellett egy tevékenységet és egy gazdaszolgáltatást is tartalmaz ezen szabályok végrehajtásához.

Megjegyzés:

Ehhez a mintához Microsoft SQL Server szükséges.

A Visual Studio a Windows Workflow Foundation (WF) részeként egy RuleSet-szerkesztőt biztosít. A szerkesztőt úgy indíthatja el, hogy duplán kattint egy Policy munkafolyamat tevékenységére; szerializálja a meghatározott RuleSet objektumot a munkafolyamathoz társított .rules fájlba (egy Policy tevékenység egy RuleSet-példányt futtat a munkafolyamaton). A .rules fájl erőforrásként lesz lefordítva a szerelvénybe a munkafolyamat-projekt létrehozásakor.

A minta összetevői a következők:

  • Egy RuleSet grafikus felhasználói felületi eszköz, amellyel szerkesztheti és kezelheti a RuleSet-verziókat az adatbázisban.

  • A gazdaalkalmazáson konfigurált RuleSet szolgáltatás az adatbázisból fér hozzá a RuleSetshez.

  • Olyan ExternalPolicy tevékenység, amely egy RuleSet-et kér le a RuleSet szolgáltatástól, és futtatja a RuleSetet a munkafolyamaton.

Az összetevők interakciója az alábbi képen látható. A következő szakaszok ismertetik az egyes összetevőket.

A Külső szabálykészlet eszközkészlet mintájának áttekintését bemutató diagram.

Szabálykészlet eszköz

Az alábbi képen a RuleSet eszköz képernyőképe látható. A Szabálytár menüben betöltheti a rendelkezésre álló Szabálykészleteket az adatbázisból, és a módosított Szabálykészleteket visszamentheti az áruházba. Az alkalmazáskonfigurációs fájl adatbázis-kapcsolati sztringet biztosít a RuleSet-adatbázishoz. Az eszköz indításakor automatikusan betölti a Szabálykészleteket a konfigurált adatbázisból.

Képernyőkép a RuleSet Böngészőről.

A RuleSet eszköz fő- és alverziószámokat alkalmaz a Szabálykészletekre, lehetővé téve több verzió egyidejű karbantartását és tárolását (az eszköz a verziószámozási képesség mellett nem biztosít zárolási vagy egyéb konfigurációkezelési funkciókat). Az eszközzel létrehozhat új RuleSet-verziókat, vagy törölheti a meglévő verziókat. Amikor az Új gombra kattint, az eszköz létrehoz egy új RuleSet-nevet, és alkalmazza az 1.0-s verziót. Egy verzió másolásakor az eszköz létrehozza a kiválasztott RuleSet-verzió másolatát, beleértve a tartalmazott szabályokat is, és új, egyedi verziószámokat rendel hozzá. Ezek a verziószámok a meglévő Szabálykészletek verziószámán alapulnak. A RuleSet nevét és verziószámait az űrlap társított mezőivel módosíthatja.

Amikor a Szabályok szerkesztése gombra kattint, elindul a Szabálykészlet szerkesztő, ahogy az alábbi képen is látható:

Képernyőkép a Szabálykészlet-szerkesztőről.

Ez a Szerkesztő párbeszédpanel ismételt üzemeltetése, amely a Windows Workflow Foundation Visual Studio bővítmény része. Ugyanezeket a funkciókat biztosítja, beleértve az Intellisense támogatását is. A szabályok egy olyan céltípuson (például munkafolyamaton) vannak megszerkesztettek, amely az eszköz RuleSet eleméhez van társítva; amikor a Fő eszköz párbeszédpanelEn a Tallózás gombra kattint, megjelenik a Munkafolyamat/Típusválasztó párbeszédpanel a 4. ábrán látható módon.

Munkafolyamat /Típusválasztás

4. ábra: Munkafolyamat/típusválasztó

A Munkafolyamat/Típusválasztó párbeszédpanelen megadhat egy szerelvényt és egy adott típust az adott szerelvényen belül. Ez a típus az a céltípus, amely alapján a szabályok szerződnek és futtatásra kerülnek. A céltípus sok esetben munkafolyamat vagy más tevékenységtípus. A RuleSetet azonban bármilyen .NET-típussal futtathatja.

A szerelvényfájl elérési útja és a RuleSet típus az adatbázisban, így amikor a Szabálykészletet lekérik az adatbázisból, az eszköz megpróbálja automatikusan betölteni a céltípust.

Amikor a Munkafolyamat/Típusválasztó párbeszédpanelen az OK gombra kattint, a rendszer ellenőrzi a kiválasztott típust a RuleSeten, hogy a céltípusban a szabályok által hivatkozott összes tag szerepeljen. A hibák az Érvényesítési hibák párbeszédpanelen jelennek meg. Dönthet úgy, hogy a hibák ellenére folytatja a változtatást, vagy kattintson a Mégse gombra. A fő eszköz párbeszédpanel Eszközök menüjében az Ellenőrzés gombra kattintva újra ellenőrizheti a RuleSet-verziót a céltevékenységhez.

Képernyőkép az Érvényesítési hibák párbeszédpanelről.

Az eszköz Adat menüjében importálhatja és exportálhatja a Szabálykészleteket. Az Importálás gombra kattintva megjelenik egy fájlválasztó párbeszédpanel, amelyből kiválaszthat egy .rules fájlt. Ez lehet, hogy nem a Visual Studióban eredetileg létrehozott fájl. A .rules fájlnak tartalmaznia kell egy szerializált példányt RuleDefinitions , amely feltételek gyűjteményét és Szabálykészletek gyűjteményét tartalmazza. Az eszköz nem használja a feltételek gyűjteményét, de a RuleDefinitions .rules formátumot használja a Visual Studio-környezettel való interakció engedélyezéséhez.

A .rules fájl kiválasztása után megjelenik a RuleSet Selector párbeszédpanel. A párbeszédpanelen kiválaszthatja az importálni kívánt fájl szabálykészleteit (az alapértelmezett beállítás az összes Szabálykészletet meghatározza). A .rules fájlban lévő RuleSet-fájlok nem rendelkeznek verziószámmal, mivel a WF-projektben a verziószámozásuk megegyezik a szerelvény verziójával. Az importálási folyamat során az eszköz automatikusan hozzárendeli a következő elérhető főverziószámot (amelyet az importálás után módosíthat); A hozzárendelt verziószámok a RuleSet Selector listában láthatók.

Minden importált RuleSet esetében az eszköz megkísérli megkeresni a társított típust a bin\Debug mappából a .rules fájl helyén (ha létezik), a RuleSetben használt tagok alapján. Ha az eszköz több egyező típust talál, a .rules fájlnév és a típusnév közötti egyezés alapján próbál típust választani (például a Workflow1 típus a Workflow1.rules-nak felel meg). Ha több egyezés is létezik, a rendszer kérni fogja a típus kiválasztását. Ha ez az automatikus azonosítási mechanizmus nem találja az egyező szerelvényt vagy típust, az importálás után a eszköz párbeszédpanelén a Tallózás gombra kattintva navigálhat a társított típusra. Az alábbi képen a RuleSet Selector látható:

Képernyőkép a RuleSet Selector párbeszédpanelről.

Amikor a főeszköz menüjében az Adatexportálás gombra kattint, ismét megjelenik a Szabálykészlet-választó párbeszédpanel, amelyből meghatározhatja az exportálni kívánt adatbázisBól származó Szabálykészleteket. Az OK gombra kattintva megjelenik a Fájl mentése párbeszédpanel, amelyen megadhatja az eredményként kapott .rules fájl nevét és helyét. Mivel a .rules fájl nem tartalmaz verzióinformációkat, csak egy Adott RuleSet-névvel rendelkező RuleSet-verziót jelölhet ki.

PolicyFromService tevékenység

A tevékenység kódja PolicyFromService egyszerű. Hasonlóan működik, mint a Policy WF által biztosított tevékenység, de ahelyett, hogy a cél RuleSetet a .rules fájlból kérné le, egy host szolgáltatást hív meg a RuleSet-példány beszerzéséhez. Ezután futtatja a RuleSetet a legfelső szintű munkafolyamat-tevékenységpéldányon.

Ha a tevékenységet munkafolyamatban szeretné használni, adjon hozzá egy hivatkozást a PolicyActivities és a RuleSetService összeállításokra a munkafolyamat-projektjéből. A témakör végén található eljárást követve megtudhatja, hogyan adhat hozzá tevékenységet az eszközkészlethez.

Miután elhelyezte a tevékenységet a munkafolyamatban, meg kell adnia a futtatni kívánt RuleSet nevét. A nevet konstans értékként, vagy egy munkafolyamat-változóhoz vagy egy másik tevékenység tulajdonságához kötheti. Igény szerint megadhatja a futtatandó szabálykészlet verziószámait. Ha a fő- és alverziószámoknál hagyja meg az alapértelmezett 0 értéket, a tevékenységhez automatikusan meg lesz adva az adatbázis legújabb verziószáma.

RuleSet szolgáltatás

A szolgáltatás feladata, hogy lekérje a megadott RuleSet-verziót az adatbázisból, és visszaadja azt a hívási tevékenységnek. Ahogy korábban említettem, ha a hívásban GetRuleSet átadott fő- és alverzióértékek egyaránt 0, a szolgáltatás lekéri a legújabb verziót. Jelenleg nincsenek gyorsítótárazva a RuleSet-definíciók vagy -példányok. Hasonlóképpen, a RuleSet-verziók megjelölésére "üzembe helyezettként" nincs olyan funkció, amely megkülönböztetné őket a folyamatban lévő szabálykészletektől.

A szolgáltatás által elérni kívánt adatbázist egy alkalmazáskonfigurációs fájl használatával kell konfigurálni a gazdagépen.

Az eszköz futtatása

  1. Az eszköz és a szolgáltatás által használt RuleSet táblát beállító mappa egy Setup.sql fájlt tartalmaz. A Setup.cmd kötegfájl futtatásával létrehozhatja a Szabályadatbázist az SQL Expressen, és beállíthatja a RuleSet táblát.

  2. Ha szerkessze a kötegfájlt vagy a Setup.sql, és megadja, hogy ne használja az SQL Expresst, vagy ne helyezze el a táblát egy más Rulesnevű adatbázisban, a RuleSet eszköz és UsageSample projektek alkalmazáskonfigurációs fájljait ugyanazokkal az információkkal kell szerkeszteni.

  3. A Setup.sql szkript futtatása után létrehozhatja a ExternalRuleSetToolkit megoldást, majd elindíthatja a RuleSet eszközt az ExternalRuleSetTool projektből.

  4. A RuleSetToolkitUsageSample szekvenciális munkafolyamat-konzolalkalmazás-megoldás tartalmaz egy minta munkafolyamatot. A munkafolyamat egy PolicyFromService tevékenységből és két változóból, orderValue és discount, áll, amelyek ellen a célszabálykészlet fut.

  5. A minta használatához hozza létre a RuleSetToolkitUsageSample megoldást. Ezután a RuleSet eszköz főmenüjében kattintson az Adatimportálás elemre, és mutasson a DiscountRuleSet.rules fájlra a RuleSetToolkitUsageSample mappában. Az importált RuleSet adatbázisba való mentéséhez kattintson a Szabálytár-Mentés menüre.

  6. Mivel a szerelvényre PolicyActivities a minta munkafolyamat-projekt hivatkozik, a PolicyFromService tevékenység megjelenik a munkafolyamatban. Alapértelmezés szerint azonban nem jelenik meg az eszközkészletben. Ha hozzá szeretné adni az eszközkészlethez, tegye a következőket:

    • Kattintson a jobb gombbal az eszközkészletre, és válassza az Elemek kiválasztása lehetőséget (ez eltarthat egy ideig).

    • Amikor megjelenik az Eszközkészletelemek kiválasztása párbeszédpanel, kattintson a Tevékenységek fülre.

    • Keresse meg a PolicyActivities szerelvényt a ExternalRuleSetToolkit megoldásban, és kattintson a Megnyitás gombra.

    • Győződjön meg arról, hogy a PolicyFromService tevékenység ki van jelölve az Eszközkészlet elemeinek kiválasztása párbeszédpanelen, majd kattintson az OK gombra.

    • A tevékenységnek most meg kell jelennie az eszközkészletben a RuleSetToolkitUsageSample Components kategóriában.

  7. A RuleSet szolgáltatás már be van konfigurálva a konzolalkalmazás gazdagépén a Program.cs fájlban található alábbi utasítás segítségével.

    workflowRuntime.AddService(new RuleSetService());
    
  8. A szolgáltatást konfigurációs fájllal is konfigurálhatja a gazdagépen; részletekért tekintse meg az SDK dokumentációját.

  9. A rendszer hozzáad egy alkalmazáskonfigurációs fájlt a munkafolyamat-projekthez, amely megadja a szolgáltatás által használni kívánt adatbázis kapcsolati sztringét. Ennek meg kell egyeznie a RuleSet eszköz által használt kapcsolati sztringgel, amely a RuleSet táblát tartalmazó adatbázisra mutat.

  10. Most már ugyanúgy futtathatja a RuleSetToolkitUsageSample projektet, mint bármely más munkafolyamat-konzolalkalmazást. Nyomja le az F5 vagy a Ctrl+F5 billentyűkombinációt a Visual Studióban, vagy futtassa közvetlenül a RuleSetToolkitUsageSample.exe fájlt.

    Megjegyzés:

    A használati minta újrafordításához be kell zárnia a RuleSet eszközt, mert az eszköz betölti a használati minta összeállítását.