Workflow Manager 1.0 - HTTP-Aktivitäten
Workflow-Manager 1.0 stellt eine Sammlung von Messagingaktivitäten zur Verfügung, die das Senden ausgehender Nachrichten an HTTP-Dienste ermöglichen.Im Allgemeinen stellt jede Aktivität ein HTTP-Verb dar.Dieses Thema bietet einen Überblick über diese Aktivitäten.
Inhalt dieses Themas
Allgemeine Eigenschaften der HTTP-Aktivität
HTTP-Aktivitäten
Angeben des Inhalts für die Anforderung und die Antwort
HTTP-Header in "DynamicValue"
Allgemeine Eigenschaften der HTTP-Aktivität
Die Argumente der HTTP-Aktivitäten sind sehr ähnlich, unterscheiden sich jedoch abhängig davon, was relevant für den HTTP-Vorgang ist, den die Aktivität verkapselt.Die Argumente jeder Aktivität ermöglichen das Angeben der Kernsammlung der Parameter, die festgelegt werden müssen, damit ein HTTP-Dienst erfolgreich aufgerufen werden kann. Beispiele:
URI des Diensts
Anforderungsheader und -inhalte
Antwortheader und -inhalte
Rückgabestatuscode
Sicherheitstoken für sichere Aufrufe
Die folgenden Tabelle listet die Eigenschaften und Argumente auf, die für alle HTTP-Aktivitäten gemeinsam gelten.
Eigenschaft |
Beschreibung |
---|---|
InArgument<string> Uri |
Der URI der Anforderung. |
InArgument<DynamicValue> RequestHeaders |
Die HTTP-Header der Anforderungsnachricht. |
InArgument<SecurityToken> SecurityToken |
Ermöglicht ein auf Ansprüchen basierendes Delegationsmuster mithilfe der GetS2SSecurityToken-Aktivität. Hinweis: Dieser Vorgang konfiguriert die HTTP-Aktivität für die Verwendung von JsonWebToken (JWT) und OAuth2-Trägertoken. Er kann daher nur in Workflows verwendet werden, die Bestandteil eines mithilfe von S2S gesicherten Bereichs sind.Die Ansprüche des Aufrufers, der den Workflow instanziiert (d. h., der Aktivierungsnachricht) werden verwendet, und das ausgehende Token wird mithilfe des ausgehenden Signaturzertifikats signiert, das für die Bereitstellung konfiguriert wurde. |
Boolescher Wert RetryOnConnectionFailure |
Aktiviert automatische Wiederholungsversuche für Anforderungen, bei denen aufgrund eines Timeouts oder Verbindungsverlusts ein Fehler auftritt, mithilfe von Exponential Backoff. |
ActivityFunc<HttpStatusCode, DynamicValue, DynamicValue, bool> HttpErrorHandler |
Ermöglicht die Verarbeitng der Wiederholungsversuchlogik basierend auf einem bestimmten HttpStatusCode, Antwortheadern und Antwortinhalten. |
OutArgument<DynamicValue> ResponseHeaders |
Die HTTP-Header der Antwortnachricht. |
OutArgument ResponseContent |
Der Inhalt der Antwortnachricht. |
OutArgument<HttpStatusCode> HttpStatusCode |
Der HttpStatusCode der Antwortnachricht. |
HTTP-Aktivitäten
Workflow-Manager 1.0 stellt eine Sammlung von Messagingaktivitäten zur Verfügung, die das Senden ausgehender Nachrichten an HTTP-Dienste ermöglichen.Im Allgemeinen stellt jede Aktivität ein HTTP-Verb dar.In der folgenden Tabelle werden die in Workflow-Manager 1.0 verfügbaren HTTP-Aktivitäten aufgelistet.Alle diese Aktivitäten verwenden die allgemeine Sammlung von Argumenten und Eigenschaften, die unter Allgemeine Eigenschaften der HTTP-Aktivität beschrieben werden.Neben diesen allgemeinen Eigenschaften und Argumenten besitzen einige Aktivitäten weitere Argumente. Diese werden in der Spalte Other Arguments beschrieben.
Aktivitätsdaten |
Beschreibung |
Weitere Argumente |
---|---|---|
GET für einen HTTP-Dienst. |
||
POST für einen HTTP-Dienst. |
InArgument RequestContent |
|
PUT für einen HTTP-Dienst. |
InArgument RequestContent |
|
DELETE für einen HTTP-Dienst. |
||
Header der Spitzenklasse für einen Updatevorgang mithilfe eines eTags |
InArgument RequestContent InArgument<String> Etag |
Angeben des Inhalts für die Anforderung und die Antwort
Beim Bereitstellen des Inhalts für die Anforderung und die Antwort können Sie ein primitives Objekt (z. B. eine Zeichenfolge, eine Zahl oder ein Datum) verwenden, das als Anforderungsinhalt serialisiert wird, oder einen DynamicValue.
HTTP-Aktivitäten sind eng in "DynamicValue" integriert: Für Anforderungen wird der bereitgestellte "DynamicValue" automatisch in seine JSON-Darstellung serialisiert und als Anforderungsinhalt für den HTTP-Aufruf festgelegt.Für Antworten wird der vom Server zurückgegebene Inhalt in einen DynamicValue geladen(dies funktioniert nur, wenn die Antwort als gültiger JSON-Wert zurückgegeben wird).
Das folgenden Codebeispiel zeigt die Verwendung von HttpGet zum Abrufen von Informationen aus Netflix in einen DynamicValue und die Verwendung einiger seiner Eigenschaften in einer Aktivität:
Variable<DynamicValue> response = new Variable<DynamicValue>();
Variable<string> name = new Variable<string>();
Variable<string> synopsis = new Variable<string>();
Variable<string> releaseYear = new Variable<string>();
Variable<string> result = new Variable<string>();
Activity sequence = new Sequence
{
Variables = { response, name, synopsis, releaseYear, result },
Activities =
{
// get the data from Netflix
new HttpGet
{
Uri = "http://odata.netflix.com/Catalog/Titles?$filter=Name%20eq%20'The%20Name%20of%20The%20Rose'",
ResponseContent = new OutArgument<DynamicValue>(response)
},
// read some properties from the result
new GetDynamicValueProperties
{
Source = response,
Properties =
{
{ "d/results(0)/Name", new OutArgument<string>(name) },
{ "d/results(0)/Synopsis", new OutArgument<string>(synopsis) },
{ "d/results(0)/ReleaseYear", new OutArgument<string>(releaseYear) }
}
},
// create a new string with the properties read the previous step
new FormatString
{
Format = "{0} ({1}): {2}",
Arguments =
{
new InArgument<string>(name),
new InArgument<string>(releaseYear),
new InArgument<string>(synopsis),
},
Result = result
}
}
};
Hinweis
Die DynamicValue-Integration in HTTP-Aktivitäten wird für Dienste unterstützt, die Inhalt als JSON akzeptieren und zurückgeben.AtomPub wird bei der DynamicValue-Integration zurzeit noch nicht unterstützt.
HTTP-Header in "DynamicValue"
HTTP-Header werden als ein DynamicValue angegeben.Zum Festlegen von Headern für eine Aktivität müssen Sie nur einen DynamicValue erstellen und übergeben, der die Header enthält, die Sie verwenden möchten.
Variable<DynamicValue> requestHeaders = new Variable<DynamicValue>();
Variable<DynamicValue> responseHeaders = new Variable<DynamicValue>();
var sequence = new Sequence
{
Variables = { requestHeaders, responseHeaders },
Activities =
{
// setup the headers
new BuildDynamicValue
{
Result = requestHeaders,
Properties =
{
{ "Accept", new InArgument<string>("text/plain") },
{ "Accept-Charset", new InArgument<string>("utf-8") },
}
},
// get the data from Netflix
new HttpGet
{
Uri = "https://contoso.com?var1=val",
RequestHeaders = requestHeaders,
ResponseHeaders = responseHeaders,
},
}
};