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.
Zaměstnanec společnosti X vytvoří žádost o návrh (RFP).
Zaměstnanec zadá název a popis RFP.
Zaměstnanec vybere dodavatele, které chce pozvat k odeslání návrhů.
Zaměstnanec odešle návrh.
Vytvoří se instance pracovního postupu.
Pracovní postup čeká na odeslání návrhů všem dodavatelům.
Po přijetí všech návrhů se pracovní postup iteruje všemi přijatými návrhy a vybere ten nejlepší.
Každý dodavatel má pověst (v této ukázce je uložen seznam reputací v VendorRepository.cs).
Celková hodnota návrhu je určena (hodnota zadaná dodavatelem) * (zaznamenaná reputace dodavatele) / 100.
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 RfpRepository
souboru , 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
V sadě Visual Studio otevřete soubor řešení PurchaseProcess.sln.
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.
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.
Řešení sestavíte stisknutím kombinace kláves CTRL+SHIFT+B.
Ř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.