Poznámka:
Přístup k této stránce vyžaduje autorizaci. Můžete se zkusit přihlásit nebo změnit adresáře.
Přístup k této stránce vyžaduje autorizaci. Můžete zkusit změnit adresáře.
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 Parallel, ParallelForEach<T>, ForEach<T> a 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
Přizpůsobené aktivity.
Složení činností.
Záložky.
Vytrvalost.
Systémová trvalost
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í sekci zprávy.
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, vypočítá upravenou hodnotu (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 (pomocí If a Assign aktivit).
Projekty v této ukázce
Tato ukázka obsahuje následující projekty.
| Projekt | Popis |
|---|---|
| Běžný | Objekty entity používané v tomto procesu (Žádost o nabídku, Dodavatel a Nabídka dodavatele). |
| 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. |
| Webový klient | Klientská aplikace ASP.NET, která uživatelům umožňuje vytvářet instance procesu nákupu a účastnit se jich. Používá vlastní vytvořený hostitel k interakci s pracovním motorem workflow. |
| WinFormsClient | Klientská aplikace Windows Forms, která uživatelům umožňuje vytvářet instance procesu nákupu a účastnit se jich. Používá vlastní vytvořený hostitel k interakci s pracovním motorem workflow. |
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 procesu |
| PurchaseProcessHost.cs | Implementace hostitele pro workflow. 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, které vycházejí z Activity, tvoří funkčnost 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 a vytvoří pojmenovanou záložku, kterou musí později obnovit dodavatel při odeslání návrhu. Aktivity, které jsou odvozené od NativeActivity, stejně jako ty odvozené od CodeActivity, vytvářejí imperativní funkce tím, že přepisují Execute, ale také mají přístup ke všem funkcím běhového prostředí pracovního postupu prostřednictvím ActivityContext, které se předá do metody Execute. 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ý přijímá 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 pro pracovní postupy do souborů XML. |
| XmlPersistenceParticipant.cs | Vlastní PersistenceParticipant, který uloží instanci žádosti o 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 |
|---|---|
| Prodejce | Dodavatel, který předkládá návrhy v žádosti o návrhy. |
| Výzva k podání nabídky | Žádost o návrhy (RFP) je pozvánka pro dodavatele, aby předložili návrhy na konkrétní komoditu nebo službu. |
| Návrh dodavatele | Návrh předložený dodavatelem na konkrétní výzvu k podávání nabídek. |
| VendorRepository | Úložiště dodavatelů. Tato implementace obsahuje kolekci instancí dodavatelů v paměti a metod pro zpřístupnění těchto instancí. |
| RfpRepository | Úložiště žádostí o návrhy. Tato implementace využívá Linq to XML k dotazování datového souboru XML žádosti o předložení návrhu vygenerovaného schématizovanou trvalostí. |
| IoHelper | Tato třída zpracovává všechny záležitosti související s operacemi vstup/výstup (složky, cesty a podobně) |
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. |
| ZobrazitNávrhy | 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. |
| OdeslatNávrh | 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 perzistence
Následující tabulka ukazuje soubory, které jsou generovány poskytovatelem perzistence (XmlPersistenceProvider) a nacházejí se v cestě do dočasné složky aktuálního systému (použitím 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 implementací schematizované persistence (PersistenceParticipant v XmlPersistenceProvider). |
GetTempPath |
| [instanceId].sledování | 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.
Pokud chcete spustit projekt webového klienta, otevřete Průzkumníka řešení a klikněte pravým tlačítkem myši na projekt webového klienta . Vyberte Nastavit jako spouštěný projekt.
Pokud chcete spustit projekt klienta WinForms, otevřete Průzkumníka ř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 uživatelských identit výběrem požadovaného účastníka v kombinovaném poli Zobrazit jako v tabulce aktivních RFP.
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řipojit jako: Uživatel může přistupovat k RFP pomocí různých identit tím, že si vybere požadovaného účastníka v rozbalovacím menu Zobrazit jako v mřížce aktivních RFP.