Dela via


Intern arbetsflödestjänstvärd

WorkflowServiceHost tillhandahåller en värd för arbetsflödestjänster. Den ansvarar för att lyssna efter inkommande meddelanden och dirigera dem till rätt arbetsflödestjänstinstans, den styr avlastning och beständighet av inaktiva arbetsflöden med mera. Det här avsnittet beskriver hur WorkflowServiceHost bearbetar inkommande meddelanden.

Översikt över WorkflowServiceHost

Klassen WorkflowServiceHost används som värd för arbetsflödestjänster. Den lyssnar efter inkommande meddelanden och dirigerar dem till lämplig tjänstinstans, skapar nya instanser eller läser in befintliga instanser från beständig lagring efter behov. Följande diagram illustrerar på en hög nivå hur WorkflowServiceHost fungerar:

Diagram that shows an overview of the Workflow Service Host.

Det här diagrammet visar hur WorkflowServiceHost du läser in arbetsflödestjänstdefinitioner från .xamlx-filer och läser in konfigurationsinformation från en konfigurationsfil. Den läser också in spårningskonfigurationen från spårningsprofilen. WorkflowServiceHost exponerar en slutpunkt för arbetsflödeskontroll som gör att du kan skicka kontrollåtgärder till arbetsflödesinstanser. Mer information finns i Exempel på slutpunkt för arbetsflödeskontroll.

WorkflowServiceHost exponerar också programslutpunkter som lyssnar efter inkommande programmeddelanden. När ett inkommande meddelande tas emot skickas det till lämplig arbetsflödestjänstinstans (om det för närvarande läses in). Vid behov skapas en ny arbetsflödesinstans. Eller om en befintlig instans har sparats läses den in från beständighetsarkivet.

Information om WorkflowServiceHost

Följande diagram visar hur WorkflowServiceHost meddelanden hanteras lite mer detaljerat:

Diagram that shows the Workflow Service Host message flow.

Det här diagrammet visar tre olika slutpunkter, en programslutpunkt, en slutpunkt för arbetsflödeskontroll och en arbetsflödesvärdslutpunkt. Programslutpunkten tar emot meddelanden som är bundna till en specifik arbetsflödesinstans. Slutpunkten för arbetsflödeskontroll lyssnar efter kontrollåtgärder. Arbetsflödet som är värd för slutpunkten lyssnar efter meddelanden som gör WorkflowServiceHost att arbetsflöden som inte är tjänstbaserade läses in och körs. Som du ser i diagrammet bearbetas alla meddelanden via WCF-körningen. Begränsning av arbetsflödestjänstens instans uppnås med hjälp MaxConcurrentInstances av egenskapen . Den här egenskapen begränsar antalet samtidiga arbetsflödestjänstinstanser. När den här begränsningen överskrids placeras eventuella ytterligare begäranden för nya arbetsflödestjänstinstanser eller begäranden om att aktivera instanser av beständiga arbetsflöden i kö. De köade begärandena bearbetas i FIFO-ordning oavsett om de är begäranden för en ny instans eller en instans som körs. Information om värdprincip läses in som avgör hur ohanterade undantag hanteras och hur inaktiva arbetsflödestjänster tas bort och behålls. Mer information om de här avsnitten finns i Så här konfigurerar du ohanterat undantagsbeteende för arbetsflöde med WorkflowServiceHost och Så här konfigurerar du inaktivt beteende med WorkflowServiceHost. Arbetsflödesinstanser sparas enligt värdprinciper och läses in igen när det behövs. Mer information om arbetsflödespersistence finns i: Så här konfigurerar du beständighet med WorkflowServiceHost, skapar en långvarig arbetsflödestjänst och arbetsflödespersistence.

Följande bild visar flödet när WorkflowServiceHost.Open anropas:

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

Arbetsflödet läses in från XAML och aktivitetsträdet skapas. WorkflowServiceHost går i aktivitetsträdet och skapar tjänstbeskrivningen. Konfigurationen tillämpas på värden. Slutligen börjar värden lyssna efter inkommande meddelanden.

Följande bild visar vad som WorkflowServiceHost gör när det tar emot ett meddelande som är bundet till en mottagningsaktivitet som har CanCreateInstance inställt på true:

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

Meddelandet tas emot och bearbetas av WCF-kanalstacken. Begränsningar kontrolleras och korrelationsfrågor körs. Om meddelandet är bundet till en befintlig instans levereras meddelandet. Om en ny instans behöver skapas kontrolleras egenskapen Ta emot aktivitetens egenskap CanCreateInstance. Om den är inställd på true skapas en ny instans och meddelandet levereras.

Följande bild visar vad som WorkflowServiceHost händer när det tar emot ett meddelande som är bundet till en mottagningsaktivitet som har CanCreateInstance inställt på false.

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

Meddelandet tas emot och bearbetas av WCF-kanalstacken. Begränsningar kontrolleras och korrelationsfrågor körs. Meddelandet är bundet till en befintlig instans (eftersom CanCreateInstance är falskt) så instansen läses in från beständighetsarkivet, bokmärket återupptas och arbetsflödet körs.

Varning

Det går inte att öppna arbetsflödestjänstens värd om SQL Server endast är konfigurerat att lyssna på NamedPipe-protokollet.

Se även