Share via


Mensajería entrante

 

Publicada: mayo de 2016

Workflow Manager 1.0 permite a los flujos de trabajo suscribirse a los mensajes y recibir estos, tanto para la creación de nuevas instancias como para la correlación con instancias existentes.Estos mensajes son mensajes indirectos unidireccionales que dependen del usuario y proporcionan un filtro como parte de la suscripción usada para coincidir con los mensajes de entrada que se envían al Ámbito correspondiente (el Ámbito en el que se hospeda el flujo de trabajo).

Mensajería entrante

Las definiciones de los Flujos de trabajo pueden definir un ActivationFilter.El filtro sirve para determinar si es necesario crear una instancia del flujo de trabajo cuando se publica un mensaje en el Ámbito.Una instancia de flujo de trabajo en ejecución también puede definir filtros mediante las actividades Subscribe y ReceiveNotification.Para obtener más información sobre las actividades Subscribe y ReceiveNotification activities de Workflow Manager 1.0, consulte 2af7983b-8357-4e0f-9ba9-dfdeed05a8a7#BKMK_PubSubActivities.

Los mensajes se publican en el ámbito mediante el extremo de notificaciones o la API del cliente .NET (WorkflowInstanceManager) para publicar el mensaje de notificación.Un mensaje de notificación consta de dos partes:

  • Propiedades. Son un conjunto plano de pares clave-valor que sirven para filtrar.

  • Contenido: el contenido del mensaje.Es necesario proporcionar una cadena Dictionary<string, object> para asignar a los InArguments de la definición del flujo de trabajo o a la propiedad Content de ReceiveNotification (ReceiveParametersContent).En el siguiente fragmento de código se indica cómo publicar mensajes en un ámbito.

    // Create the WorkflowInstanceManager 
    WorkflowInstanceManager wim = new WorkflowInstanceManager(new Uri(RootScope + ScopeName)); 
    // Publish New Order message 
    wim.PublishNotification(new WorkflowNotification() 
    { 
        Properties = 
        { 
            { "EventName", "New Order" } 
        }, 
        Content = new Dictionary() 
        { 
            { "OrderId", Int32.Parse(orderid) }, 
            { "Cost", Double.Parse(ordercost) } 
        } 
    });
    

Nota

En estos momentos, Workflow Manager 1.0 no es compatible con los mensajes SOAP directos, incluidas las comunicaciones bidireccionales (solicitud-respuesta).