Compartilhar via


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

HttpGet

GET em um serviço Http

HttpPost

POST para um serviço Http

InArgument RequestContent

HttpPut

PUT para um serviço Http

InArgument RequestContent

HttpDelete

DELETE para um serviço Http

HttpMerge

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,
        },
    }
};