Udostępnij za pośrednictwem


Programowanie usługi przepływu pracy narzędzia Contract-First

Począwszy od programu .NET Framework 4.5, program Windows Workflow Foundation (WF) oferuje lepszą integrację między usługami internetowymi i przepływami pracy w formie tworzenia przepływu pracy pierwszego kontraktu. Narzędzie do programowania przepływu pracy pierwszego kontraktu umożliwia najpierw zaprojektowanie kontraktu w kodzie. Następnie narzędzie automatycznie generuje szablon działania w przyborniku dla operacji w kontrakcie. Ten temat zawiera omówienie sposobu mapowania działań i właściwości w usłudze przepływu pracy na atrybuty kontraktu usługi. Aby zapoznać się z przykładem krok po kroku tworzenia usługi przepływu pracy opartej na umowie, zobacz How to: Create a workflow service that consumes an existing service contract (Jak utworzyć usługę przepływu pracy, która korzysta z istniejącego kontraktu usługi).

W tym temacie

Mapowanie atrybutów kontraktu usługi na atrybuty przepływu pracy

Tabele w poniższych sekcjach określają różne atrybuty i właściwości programu WCF oraz sposób ich mapowania na działania i właściwości komunikatów w przepływie pracy pierwszego kontraktu.

Atrybuty kontraktu usługi

Nazwa właściwości Obsługiwane opis Walidacja WF
CallbackContract Nie. Pobiera lub ustawia typ kontraktu wywołania zwrotnego, gdy kontrakt jest kontraktem dwudupleksowym. (Nie dotyczy)
ConfigurationName Nie. Pobiera lub ustawia nazwę używaną do lokalizowania usługi w pliku konfiguracji aplikacji. (Nie dotyczy)
HasProtectionLevel Tak Pobiera wartość wskazującą, czy element członkowski ma przypisany poziom ochrony. Receive.ProtectionLevel nie powinien mieć wartości null.
Nazwisko Tak Pobiera lub ustawia nazwę <elementu portType> w języku WSDL (Web Services Description Language). Element Receive.ServiceContractName.LocalName powinien być zgodny.
Przestrzeń nazw Tak Pobiera lub ustawia przestrzeń nazw <elementu portType> w języku WSDL (Web Services Description Language). Receive.ServiceContractName.NameSpace powinien być zgodny
ProtectionLevel Tak Określa, czy powiązanie kontraktu musi obsługiwać wartość właściwości ProtectionLevel. Wartość Receive.ProtectionLevel powinna być zgodna.
Tryb sesji Nie. Pobiera lub ustawia, czy sesje są dozwolone, niedozwolone lub wymagane. (Nie dotyczy)
TypeId Nie. Po zaimplementowaniu w klasie pochodnej pobiera unikatowy identyfikator dla tego atrybutu. (Dziedziczone z atrybutu). (Nie dotyczy)

Tutaj wstaw treść podsekcji.

Atrybuty kontraktu operacji

Nazwa właściwości Obsługiwane opis Walidacja WF
Akcja Tak Pobiera lub ustawia akcję adresowania WS komunikatu żądania. Wartość Receive.Action powinna być zgodna.
AsyncPattern Nie. Wskazuje, że operacja jest implementowana asynchronicznie przy użyciu pary metod Begin<methodName> i End<methodName> w kontrakcie usługi. (Nie dotyczy)
HasProtectionLevel Tak Pobiera wartość wskazującą, czy komunikaty dla tej operacji muszą być szyfrowane, podpisane, czy oba. Receive.ProtectionLevel nie powinien mieć wartości null.
IsInitiating (IsInitiating) Nie. Pobiera lub ustawia wartość wskazującą, czy metoda implementuje operację, która może zainicjować sesję na serwerze (jeśli taka sesja istnieje). (Nie dotyczy)
IsOneWay Tak Pobiera lub ustawia wartość wskazującą, czy operacja zwraca komunikat odpowiedzi. (Brak funkcji SendReply dla tej odbierania lub brak funkcji ReceiveReply dla tego wysyłania).
IsTerminating Nie. Pobiera lub ustawia wartość wskazującą, czy operacja usługi powoduje zamknięcie sesji przez serwer po wysłaniu komunikatu odpowiedzi. (Nie dotyczy)
Nazwisko Tak Pobiera lub ustawia nazwę operacji. Element Receive.OperationName powinien być zgodny.
ProtectionLevel Tak Pobiera lub ustawia wartość określającą, czy komunikaty operacji muszą być szyfrowane, podpisane, czy oba. Wartość Receive.ProtectionLevel powinna być zgodna.
Odpowiedz Tak Pobiera lub ustawia wartość akcji SOAP dla komunikatu odpowiedzi operacji. Akcja SendReply.Action powinna być zgodna.
TypeId Nie. Po zaimplementowaniu w klasie pochodnej pobiera unikatowy identyfikator dla tego atrybutu. (Dziedziczone z atrybutu). (Nie dotyczy)

Atrybuty kontraktu komunikatów

Nazwa właściwości Obsługiwane opis Walidacja WF
HasProtectionLevel Tak Pobiera wartość wskazującą, czy komunikat ma poziom ochrony. Brak walidacji (Receive.Content i SendReply.Content muszą być zgodne z typem kontraktu komunikatu).
IsWrapped Tak Pobiera lub ustawia wartość określającą, czy treść komunikatu ma element otoki. Brak walidacji (Receive.Content i Sendreply.Content muszą być zgodne z typem kontraktu komunikatu).
ProtectionLevel Nie. Pobiera lub ustawia wartość, która określa, czy komunikat musi być zaszyfrowany, podpisany, czy oba. (Nie dotyczy)
TypeId Tak Po zaimplementowaniu w klasie pochodnej pobiera unikatowy identyfikator dla tego atrybutu. (Dziedziczone z atrybutu). Brak walidacji (Receive.Content i SendReply.Content muszą być zgodne z typem kontraktu komunikatu).
Nazwa otoki Tak Pobiera lub ustawia nazwę elementu otoki treści wiadomości. Brak walidacji (Receive.Content i SendReply.Content muszą być zgodne z typem kontraktu komunikatu).
WrapperNamespace Nie. Pobiera lub ustawia przestrzeń nazw elementu otoki treści komunikatu. (Nie dotyczy)

Atrybuty kontraktu danych

Nazwa właściwości Obsługiwane opis Walidacja WF
IsReference Nie. Pobiera lub ustawia wartość wskazującą, czy zachować dane odwołania do obiektu. (Nie dotyczy)
Nazwisko Tak Pobiera lub ustawia nazwę kontraktu danych dla typu. Brak walidacji (Receive.Content i SendReply.Content muszą być zgodne z typem kontraktu komunikatu).
Przestrzeń nazw Tak Pobiera lub ustawia przestrzeń nazw dla kontraktu danych dla typu. Brak walidacji (Receive.Content i SendReply.Content muszą być zgodne z typem kontraktu komunikatu).
TypeId Nie. Po zaimplementowaniu w klasie pochodnej pobiera unikatowy identyfikator dla tego atrybutu. (Dziedziczone z atrybutu). (Nie dotyczy)

Atrybuty kontraktu błędów

Nazwa właściwości Obsługiwane opis Walidacja WF
Akcja Tak Pobiera lub ustawia akcję komunikatu o błędzie protokołu SOAP określony jako część kontraktu operacji. Akcja SendReply.Action powinna być zgodna.
DetailType Tak Pobiera typ obiektu z możliwością serializacji, który zawiera informacje o błędzie. Właściwość SendReply.Content powinna być zgodna z typem
HasProtectionLevel Nie. Pobiera wartość wskazującą, czy komunikat o błędzie protokołu SOAP ma przypisany poziom ochrony. (Nie dotyczy)
Nazwisko Nie. Pobiera lub ustawia nazwę komunikatu o błędzie w języku WSDL (Web Services Description Language). (Nie dotyczy)
Przestrzeń nazw Nie. Pobiera lub ustawia przestrzeń nazw błędu PROTOKOŁU SOAP. (Nie dotyczy)
ProtectionLevel Nie. Określa poziom ochrony, który wymaga błędu protokołu SOAP z powiązania. (Nie dotyczy)
TypeId Nie. Po zaimplementowaniu w klasie pochodnej pobiera unikatowy identyfikator dla tego atrybutu. (Dziedziczone z atrybutu). (Nie dotyczy)

Dodatkowe informacje o obsłudze i implementacji

Nieobsługiwane funkcje kontraktu usługi

  • Korzystanie z zadań TPL (biblioteki równoległej zadań) w kontraktach nie jest obsługiwane.

  • Dziedziczenie w kontraktach usług nie jest obsługiwane.

Generowanie skonfigurowanych działań obsługi komunikatów

Dwie publiczne metody statyczne są dodawane do Receive działań i SendReply w celu obsługi generowania wstępnie skonfigurowanych działań komunikatów podczas korzystania z usług przepływu pracy pierwszego kontraktu.

Działanie wygenerowane przez te metody powinno przejść walidację kontraktu, dlatego te metody są używane wewnętrznie w ramach logiki walidacji dla Receive elementów i SendReply. Wszystkie OperationNamewartości , ServiceContractName, Action, SerializerOption, ProtectionLeveli KnownTypes są wstępnie skonfigurowane tak, aby odpowiadały zaimportowanej umowie. Na stronie właściwości zawartości dla działań w projektancie przepływu pracy sekcje Komunikat lub Parametry są również wstępnie skonfigurowane do dopasowania kontraktu.

Kontrakty błędów programu WCF są również obsługiwane przez zwrócenie oddzielnego zestawu skonfigurowanych SendReply działań dla każdego z błędów, które pojawiają się w obiekcie Faults FaultDescriptionCollection.

W przypadku innych części, OperationDescription które są obecnie nieobsługiwane przez usługi WF (np. zachowania WebGet/WebInvoke lub zachowania operacji niestandardowych), interfejs API zignoruje te wartości w ramach generowania i konfiguracji. Nie zostaną zgłoszone żadne wyjątki.