Atividades Http do Workflow Manager Tools 1.0
Publicado: março de 2016
O Workflow Manager 1.0 fornece um conjunto de atividades de sistema de mensagens que permite o envio de mensagens de saída para serviços Http.Em geral, cada atividade representa um verbo Http.Este tópico fornece uma visão geral dessas atividades.
Neste tópico
Propriedades comuns de atividades Http
Atividades Http
Especificando o conteúdo de solicitação e resposta
Cabeçalhos Http em DynamicValue
Propriedades comuns de atividades Http
Os argumentos das atividades Http são muito similares, mas variam consoante o que é relevante para a operação Http específica que a atividade encapsula.Os argumentos de cada atividade permitem especificar o conjunto principal de parâmetros que precisam ser definidos de modo a invocar com sucesso um serviço http, incluindo:
Uri do serviço
Cabeçalhos e conteúdo da solicitação
Cabeçalhos e conteúdo da resposta
Código de status de retorno
Token de segurança para invocações seguras
A tabela a seguir lista as propriedades e argumentos que são comuns em todas as atividades Http.
Propriedade |
Descrição |
---|---|
InArgument<string> Uri |
O Uri da solicitação. |
InArgument<DynamicValue> RequestHeaders |
Os cabeçalhos Http da mensagem de solicitação. |
InArgument<SecurityToken> SecurityToken |
Permite um padrão de delegação baseado em declarações usando a atividade GetS2SSecurityToken. isso configura uma atividade Http para usar os tokens portadores JsonWebTokens (JWTs) e OAuth2 e, assim sendo, pode ser usada apenas dentro de fluxos de trabalho que fazem parte de um escopo protegido usando S2S.As declarações do chamador que instancia o fluxo de trabalho (ou seja, a mensagem de ativação) são usadas e o token de saída é assinado usando o certificado de autenticação de saída configurado para a implantação. |
bool RetryOnConnectionFailure |
Permite a repetição automática de solicitações que falharam devido ao tempo limite ou à perda de conexão usando uma retirada exponencial. |
ActivityFunc<HttpStatusCode, DynamicValue, DynamicValue, bool> HttpErrorHandler |
Permite a manipulação da lógica de repetição com base em um HttpStatusCode, cabeçalhos de resposta e conteúdo de resposta específicos. |
OutArgument<DynamicValue> ResponseHeaders |
Os cabeçalhos Http da mensagem de resposta. |
OutArgument ResponseContent |
Os conteúdos do corpo da mensagem de resposta. |
OutArgument<HttpStatusCode> HttpStatusCode |
O HttpStatusCode da mensagem de resposta. |
Atividades Http
O Workflow Manager 1.0 fornece um conjunto de atividades de sistema de mensagens que permite o envio de mensagens de saída para serviços Http.Em geral, cada atividade representa um verbo Http.A tabela a seguir lista as atividades Http disponíveis em Workflow Manager 1.0.Todas essas atividades têm o conjunto de argumentos e propriedades comuns descrito em Propriedades comuns de atividades Http.Além dessas propriedades e argumentos comuns, algumas das atividades têm argumentos adicionais, como descrito na coluna Other Arguments.
Atividade |
Descrição |
Outros argumentos |
---|---|---|
GET em um serviço Http |
||
POST para um serviço Http |
InArgument RequestContent |
|
PUT para um serviço Http |
InArgument RequestContent |
|
DELETE para um serviço Http |
||
Cabeçalhos de primeira classe para fazer uma operação de atualização usando um eTag |
InArgument RequestContent InArgument<String> Etag |
Especificando o conteúdo de solicitação e resposta
Ao fornecer o conteúdo de solicitação e resposta, é possível passar um objeto primitivo, por exemplo, uma cadeia de caracteres, número ou data, que será serializado como o conteúdo da solicitação ou um DynamicValue.
Atividades Http têm uma integração profunda com DynamicValue: para solicitações o DynamicValue fornecido será serializado automaticamente para a sua representação Json e definido como o conteúdo de solicitação da chamada Http.Para respostas o conteúdo retornado do servidor será carregado em um DynamicValue (isso só funciona se a resposta for retornada como um Json válido).
O seguinte exemplo de código mostra como usar um HttpGet para obter informações do Netflix em um DynamicValue e usar algumas das suas propriedades em uma atividade:
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
}
}
};
Observação
A integração do DynamicValue com as atividades Http é suportada para serviços que aceitam e retornam conteúdo como Json.No momento, AtomPub não é suportado na integração DynamicValue.
Cabeçalhos Http em DynamicValue
Os cabeçalhos Http são especificados como um DynamicValue.Para definir os cabeçalhos para um atividade, apenas é necessário criar e passar um DynamicValue que contenha os cabeçalhos que você deseja usar.
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,
},
}
};