Sdílet prostřednictvím


Proces nákupu v podniku

Ukázka PurchaseProcess ukazuje, jak vytvořit velmi základní proces nákupu na základě žádosti o návrhy (RFP) s automatickým výběrem nejlepšího návrhu. Kombinuje Parallela ParallelForEach<T>ForEach<T> vlastní aktivitu k vytvoření pracovního postupu, který představuje proces.

Tato ukázka obsahuje ASP.NET klientskou aplikaci, která umožňuje interakci s procesem jako s různými účastníky (jako původní žadatel nebo konkrétní dodavatel).

Demonstruje

  • Vlastní aktivity.

  • Složení činností.

  • Záložky.

  • Trvalost:

  • Trvalost schématu

  • Trasování.

  • Sledování.

  • Hostování WF v různých klientech (ASP.NET webových aplikacích a aplikacích WinForms).

Popis procesu

Tato ukázka ukazuje implementaci programu WF (Windows Workflow Foundation) pro shromáždění návrhů od dodavatelů pro obecnou společnost.

  1. Zaměstnanec společnosti X vytvoří žádost o návrh (RFP).

    1. Zaměstnanec zadá název a popis RFP.

    2. Zaměstnanec vybere dodavatele, které chce pozvat k odeslání návrhů.

  2. Zaměstnanec odešle návrh.

    1. Vytvoří se instance pracovního postupu.

    2. Pracovní postup čeká na odeslání návrhů všem dodavatelům.

  3. Po přijetí všech návrhů se pracovní postup iteruje všemi přijatými návrhy a vybere ten nejlepší.

    1. Každý dodavatel má pověst (v této ukázce je uložen seznam reputací v VendorRepository.cs).

    2. Celková hodnota návrhu je určena (hodnota zadaná dodavatelem) * (zaznamenaná reputace dodavatele) / 100.

  4. Původní žadatel může zobrazit všechny odeslané návrhy. Nejlepší návrh je uveden ve zvláštní části sestavy.

Definice procesu

Základní logika ukázky používá ParallelForEach<T> aktivitu, která čeká na nabídky od každého dodavatele (pomocí vlastní aktivity, která vytvoří záložku) a zaregistruje návrh dodavatele jako RFP (pomocí InvokeMethod aktivity).

Ukázka pak iteruje všemi přijatými návrhy uloženými v RfpRepositorysouboru , výpočet upravené hodnoty (pomocí Assign aktivity a System.Activities.Expressions aktivit) a pokud je upravená hodnota lepší než předchozí nejlepší nabídka, přiřadí novou hodnotu jako nejlepší nabídku (použití If a Assign aktivity).

Projekty v této ukázce

Tato ukázka obsahuje následující projekty.

Projekt Popis
Běžný Objekty entity použité v rámci procesu (Request for Proposal, Vendor a Vendor Proposal).
WfDefinition Definice procesu (jako programu WF) a hostitele (PurchaseProcessHost) používaného klientskými aplikacemi k vytváření a používání instancí pracovního postupu procesu nákupu.
Webclient Klientská aplikace ASP.NET, která uživatelům umožňuje vytvářet instance procesu nákupu a účastnit se jich. Používá k interakci s modulem pracovního postupu vlastního hostitele.
WinFormsClient Klientská aplikace model Windows Forms, která uživatelům umožňuje vytvářet instance procesu nákupu a účastnit se jich. Používá k interakci s modulem pracovního postupu vlastního hostitele.

WfDefinition

Následující tabulka obsahuje popis nejdůležitějších souborů v projektu WfDefinition.

Soubor Popis
IPurchaseProcessHost.cs Rozhraní pro hostitele pracovního postupu
PurchaseProcessHost.cs Implementace hostitele pracovního postupu Hostitel abstrahuje podrobnosti modulu runtime pracovního postupu a používá se ve všech klientských aplikacích k načtení, spuštění a interakci s instancemi PurchaseProcess pracovního postupu.
PurchaseProcessWorkflow.cs Aktivita, která obsahuje definici pracovního postupu nákupního procesu (odvozeno od Activity).

Aktivity odvozené od Activity vytváření funkcí sestavením existujících vlastních aktivit a aktivit z knihovny aktivit rozhraní .NET Framework 4.6.1. Sestavení těchto aktivit je nejzásadnější způsob, jak vytvořit vlastní funkce.
WaitForVendorProposal.cs Tato vlastní aktivita je odvozena od NativeActivity pojmenované záložky a vytvoří pojmenovanou záložku, kterou musí později obnovit dodavatel při odeslání návrhu.

Aktivity, které jsou odvozeny od NativeActivity, jako jsou ty, které jsou odvozeny CodeActivity, vytvářejí imperativní funkce přepsáním Execute, ale mají také přístup ke všem funkcím modulu runtime pracovního postupu prostřednictvím ActivityContext , který se předá do Execute metody. Tento kontext podporuje plánování a rušení podřízených aktivit, nastavení bez trvalých zón (bloky provádění, během kterých modul runtime neuchovává data pracovního postupu, například v rámci atomických transakcí) a Bookmark objekty (zpracovává obnovení pozastavených pracovních postupů).
TrackingParticipant.cs A TrackingParticipant , který obdrží všechny události sledování a uloží je do textového souboru.

Sledování účastníků se přidá do instance pracovního postupu jako rozšíření.
XmlWorkflowInstanceStore.cs Vlastní InstanceStore , která ukládá aplikace pracovních postupů do souborů XML.
XmlPersistenceParticipant.cs Vlastní, PersistenceParticipant který uloží instanci požadavku na návrh do souboru XML.
AsyncResult.cs / CompletedAsyncResult.cs Pomocné třídy pro implementaci asynchronního vzoru v komponentách trvalosti.

Běžný

Následující tabulka obsahuje popis nejdůležitějších tříd v projektu Common.

Třída Popis
Dodavatel Dodavatel, který předkládá návrhy v žádosti o návrhy.
RequestForProposal Žádost o návrhy (RFP) je pozvánka pro dodavatele, aby předložili návrhy na konkrétní komoditu nebo službu.
VendorProposal Návrh předložené dodavatelem konkrétního RFP.
VendorRepository Úložiště dodavatelů. Tato implementace obsahuje kolekci instancí dodavatele a metod pro zveřejnění těchto instancí v paměti.
RfpRepository Úložiště žádostí o návrhy. Tato implementace obsahuje použití Linq to XML k dotazování xml souboru žádosti o návrh vygenerované schématem trvalost.
IoHelper Tato třída zpracovává všechny problémy související s vstupně-výstupními operacemi (složky, cesty atd.)

Webový klient

Následující tabulka obsahuje popis nejdůležitějších webových stránek v projektu webového klienta.

Soubor Popis
CreateRfp.aspx Vytvoří a odešle novou žádost o návrhy.
Default.aspx Zobrazuje všechny aktivní a dokončené žádosti o návrhy.
GetVendorProposal.aspx Získá návrh od dodavatele v konkrétní žádosti o návrhy. Tuto stránku používají jenom dodavatelé.
ShowRfp.aspx Zobrazí všechny informace o žádosti o návrhy (přijaté návrhy, data, hodnoty a další informace). Tuto stránku používá pouze tvůrce žádosti o návrh.

Klient WinForms

Následující tabulka obsahuje popis nejdůležitějších formulářů v projektu Win Forms.

Formulář Popis
NewRfp Vytvoří a odešle novou žádost o návrhy.
ShowProposals Zobrazit všechny aktivní a dokončené žádosti o návrhy Poznámka: Možná budete muset po vytvoření nebo úpravě žádosti o návrh kliknout na tlačítko Aktualizovat v uživatelském rozhraní, aby se změny na této obrazovce zobrazily.
SubmitProposal Získejte návrh od dodavatele v konkrétní žádosti o návrhy. Toto okno používají jenom dodavatelé.
ViewRfp Zobrazí všechny informace o žádosti o návrhy (přijaté návrhy, data, hodnoty a další informace). Toto okno používá pouze tvůrce žádosti o návrhy.

Soubory trvalosti

Následující tabulka uvádí soubory vygenerované poskytovatelem trvalosti (XmlPersistenceProvider) v cestě k dočasné složce aktuálního systému (pomocí GetTempPath). Trasovací soubor se vytvoří v aktuální cestě spuštění.

Název souboru Popis Cesta
rfps.xml Soubor XML se všemi aktivními a dokončenými požadavky na návrhy. GetTempPath
[instanceid] Tento soubor obsahuje všechny informace o instanci pracovního postupu.

Tento soubor je generován schematizovanou trvalost implementace (PersistenceParticipant v XmlPersistenceProvider).
GetTempPath
[instanceId].tracking Textový soubor se všemi událostmi, ke kterým došlo v konkrétní instanci.

Tento soubor je generován trackingParticipant.
GetTempPath
PurchaseProcess.Tracing.TraceLog.txt Trasovací soubor vygenerovaný pracovním postupem na základě parametrů konfigurace v souborech App.config nebo Web.config. Aktuální cesta provádění

Použití této ukázky

  1. V sadě Visual Studio otevřete soubor řešení PurchaseProcess.sln.

  2. Chcete-li spustit projekt webového klienta, otevřete Průzkumník řešení a klikněte pravým tlačítkem myši na projekt webového klienta. Vyberte Nastavit jako spouštěný projekt.

  3. Chcete-li spustit projekt klienta WinForms, otevřete Průzkumník řešení a klikněte pravým tlačítkem myši na projekt Klienta WinForms. Vyberte Nastavit jako spouštěný projekt.

  4. Řešení sestavíte stisknutím kombinace kláves CTRL+SHIFT+B.

  5. Řešení spustíte stisknutím kombinace kláves CTRL+F5.

Možnosti webového klienta

  • Vytvořte novou RFP: Vytvoří novou žádost o návrhy (RFP) a spustí pracovní postup nákupního procesu.

  • Aktualizace: Aktualizuje seznam aktivních a dokončených rfps v hlavním okně.

  • Zobrazení: Zobrazuje obsah existujícího RFP. Dodavatelé můžou předložit své návrhy (pokud je pozván nebo RFP není dokončeno).

  • Zobrazit jako: Uživatel má přístup k RFP pomocí různých identit výběrem požadovaného účastníka v poli Zobrazit jako se seznamem v aktivní mřížce RFPs.

Možnosti klienta WinForms

  • Vytvoření RFP: Vytvoří novou žádost o návrhy (RFP) a spustí pracovní postup nákupního procesu.

  • Aktualizace: Aktualizuje seznam aktivních a dokončených rfps v hlavním okně.

  • Zobrazit RFP: Zobrazuje obsah existujícího RFP. Dodavatelé můžou předložit své návrhy (pokud je pozván nebo není RFP dokončeno)

  • Připojení As: Uživatel má přístup k RFP pomocí různých identit výběrem požadovaného účastníka v poli Zobrazit jako se seznamem v aktivní mřížce RFPs.