Sdílet prostřednictvím


Interní informace o hostiteli služby pracovního postupu

WorkflowServiceHost poskytuje hostitele pro služby pracovních postupů. Zodpovídá za naslouchání příchozím zprávám a jejich směrování do příslušné instance služby pracovního postupu, řídí uvolňování a uchovávání nečinných pracovních postupů a další. Toto téma popisuje, jak WorkflowServiceHost zpracovává příchozí zprávy.

WorkflowServiceHost – přehled

Třída WorkflowServiceHost se používá k hostování služeb pracovních postupů. Naslouchá příchozím zprávám a podle potřeby je směruje do příslušné instance služby, vytváří nové instance nebo načítá existující instance z odolného úložiště podle potřeby. Následující diagram znázorňuje základní WorkflowServiceHost fungování:

Diagram that shows an overview of the Workflow Service Host.

Tento diagram ukazuje, že WorkflowServiceHost načte definice služby pracovního postupu ze souborů .xamlx a načte konfigurační informace z konfiguračního souboru. Také načte konfiguraci sledování z profilu sledování. WorkflowServiceHost zveřejňuje koncový bod řízení pracovního postupu, který umožňuje odesílat řídicí operace do instancí pracovního postupu. Další informace najdete v ukázce koncového bodu řízení pracovního postupu.

WorkflowServiceHost zveřejňuje také koncové body aplikace, které naslouchají příchozím zprávám aplikace. Když příchozí zpráva dorazí, odešle se do příslušné instance služby pracovního postupu (pokud je aktuálně načtená). V případě potřeby se vytvoří nová instance pracovního postupu. Nebo pokud je existující instance trvalá, je načtena z úložiště trvalosti.

Podrobnosti o souboru WorkflowServiceHost

Následující diagram ukazuje, jak WorkflowServiceHost zpracovává zprávy trochu podrobněji:

Diagram that shows the Workflow Service Host message flow.

Tento diagram znázorňuje tři různé koncové body, koncový bod aplikace, koncový bod řízení pracovního postupu a koncový bod hostování pracovního postupu. Koncový bod aplikace přijímá zprávy vázané na konkrétní instanci pracovního postupu. Koncový bod ovládacího prvku pracovního postupu naslouchá operacím řízení. Koncový bod hostování pracovního postupu naslouchá zprávám, které způsobují WorkflowServiceHost načtení a spouštění pracovních postupů mimo službu. Jak je znázorněno v diagramu, všechny zprávy se zpracovávají prostřednictvím modulu runtime WCF. Omezování instance služby pracovního postupu se dosahuje pomocí MaxConcurrentInstances vlastnosti. Tato vlastnost omezí počet souběžných instancí služby pracovního postupu. Při překročení tohoto omezení budou všechny další požadavky na nové instance služby pracovního postupu nebo žádosti o aktivaci trvalých instancí pracovního postupu zařazeny do fronty. Požadavky zařazené do fronty se zpracovávají v pořadí FIFO bez ohledu na to, jestli se jedná o požadavky na novou instanci nebo spuštěnou, trvalou instanci. Načtou se informace o zásadách hostitele, které určují způsob zpracování neošetřených výjimek a způsob uvolnění a zachování nečinných služeb pracovních postupů. Další informace o těchto tématech naleznete v tématu Postupy: Konfigurace neošetřeného chování výjimky pomocí WorkflowServiceHost a Postupy: Konfigurace chování nečinnosti pomocí WorkflowServiceHost. Instance pracovního postupu se uchovávají podle zásad hostitele a v případě potřeby se znovu načtou. Další informace o trvalosti pracovního postupu naleznete v tématu: Postupy: Konfigurace trvalosti pomocí WorkflowServiceHost, vytvoření dlouhotrvající služby pracovního postupu a trvalost pracovního postupu.

Následující obrázek znázorňuje tok při zavolání WorkflowServiceHost.Open:

Diagram that shows the flow when WorkflowServiceHost.Open is called.

Pracovní postup se načte z XAML a vytvoří se strom aktivit. WorkflowServiceHost provede strom aktivit a vytvoří popis služby. Konfigurace se použije na hostitele. Nakonec hostitel začne naslouchat příchozím zprávům.

Následující obrázek ukazuje, co WorkflowServiceHost dělá, když obdrží zprávu vázanou na aktivitu Receive, která má CanCreateInstance nastavenou na true:

Decision tree used by the WFS Host when it receives a message and CanCreateInstance is true.

Zpráva se dorazí a zpracuje se zásobníkem kanálu WCF. Kontrolují se omezení a spouští se korelační dotazy. Pokud je zpráva vázána pro existující instanci, zpráva se doručí. Pokud je potřeba vytvořit novou instanci, je zaškrtnutá vlastnost CanCreateInstance aktivity Receive. Pokud je nastavena na hodnotu true, vytvoří se nová instance a zpráva se doručí.

Následující obrázek ukazuje, co WorkflowServiceHost dělá, když obdrží zprávu vázanou na aktivitu Receive, která má CanCreateInstance nastavenou na false.

Decision tree used by the WFS Host when it receives a message and CanCreateInstance is false.

Zpráva se dorazí a zpracuje se zásobníkem kanálu WCF. Kontrolují se omezení a spouští se korelační dotazy. Zpráva je vázána pro existující instanci (protože CanCreateInstance je false), takže instance je načtena z úložiště trvalosti, záložka se obnoví a pracovní postup se spustí.

Upozorňující

Hostitel služby pracovního postupu se nepodaří otevřít, pokud je SQL Server nakonfigurovaný tak, aby naslouchal pouze protokolu NamedPipe.

Viz také