Nota
O acceso a esta páxina require autorización. Pode tentar iniciar sesión ou modificar os directorios.
O acceso a esta páxina require autorización. Pode tentar modificar os directorios.
Podes ampliar a funcionalidade de Dynamics 365 Customer Engagement (on-premises) creando mensaxes personalizadas coñecidas como accións. Estas accións terán clases de solicitude / resposta asociadas e xerarase unha acción API web. As accións utilízanse normalmente para engadir novas funcionalidades específicas do dominio ao servizo web da organización ou para combinar varias solicitudes de mensaxes de servizos web da organización nunha única solicitude. Por exemplo, nun centro de chamadas de soporte, pode querer combinar as mensaxes Crear, Asignar e Setstate nunha única nova mensaxe de escalada.
A lóxica de negocio dunha acción implementase mediante un fluxo de traballo. Cando creas unha acción, o fluxo de traballo en tempo real asociado rexístrase automaticamente para executalo na fase 30 (operación principal) da pipeline de execución. Para obter máis información sobre os fluxos de traballo en tempo real, consulte Tipos de fluxos de traballo.
Aínda que as accións están soportadas en Dynamics 365 for Customer Engagement, a creación dunha acción no código (usando XAML) só está soportada por implementacións locais e IFD. Os clientes en liña deben crear accións de forma interactiva na aplicación web.
Acerca das definicións de acción
Unha acción defínese usando un Workflow
rexistro de entidade, similar a un fluxo de traballo en tempo real. Algúns puntos clave do que é unha acción e como funciona están na seguinte lista:
Pode estar asociado a unha única entidade ou ser global (non asociado a ningunha entidade en particular).
Está executado na fase 30 da operación central da pipeline de execución de eventos.
Soporta a invocación de complementos rexistrados nas fases previas e post-operacións da pipeline de execución de eventos.
Só pode ter complementos rexistrados nas fases previas ou post-operación cando o estado da acción está activado.
Está dispoñible a través da API web ou
organization.svc
eorganization.svc/web
puntos de final.Pódese executar usando un recurso web JavaScript. Máis información: Executar unha acción usando un recurso web JavaScript
Funciona sempre baixo o contexto de seguridade do usuario chamado.
Non se pode eliminar o rexistro mentres hai pasos de engadidos rexistrados na acción.
Pode participar opcionalmente, a través dunha configuración de configuración, na transacción actual da base de datos.
Non admite un ámbito no que a execución está restrinxida a un usuario, unidade de negocio ou organización. As accións sempre se executan no ámbito da organización.
Soporta argumentos de entrada e saída.
Soporte para a auditoría de cambios de datos.
Non está soportado con clientes sen conexión.
Pódese invocar mediante unha chamada de método de servizo web.
Pódese invocar directamente desde un fluxo de traballo.
Permisos requiridos
Requírese un privilexio de seguridade chamado Activar procesosprvActivateSynchronousWorkflow
en tempo real para activar o fluxo de traballo en tempo real dunha acción para que poida ser executada. Isto é ademais de todos os privilexios necesarios para crear un fluxo de traballo.
Crear unha acción usando código
Normalmente, unha acción sería implementada por un personalizador usando o deseñador interactivo de fluxos de traballo da aplicación web. Non obstante, os desenvolvedores poden implementar accións usando chamadas SDK e implementalas nun servidor local ou IFD se o desexan.
Os atributos da entidade de fluxo de traballo que se usan para unha acción descríbense na seguinte táboa. O código de exemplo para un fluxo de traballo en tempo real pódese atopar no tema Crear un fluxo de traballo en tempo real en código.
Atributo do fluxo de traballo | Descripción |
---|---|
Category |
Establecer a WorkflowCategory.CustomOperation . |
SyncWorkflowLogOnError |
Cando true se rexistran erros nos ProcessSession rexistros. A diferenza dos fluxos de traballo asíncronos, a execución do fluxo de traballo en tempo real non se rexistra nos System Job rexistros. |
Mode |
Non utilizado. |
IsTransacted |
Estableza se true a acción debe participar na transacción da base de datos; en caso contrario, false . O valor predefinido é true . |
UniqueName |
Un nome único para a acción. O nome está composto por un prefixo editorial + "_" + o nome único. |
Xaml |
Configure o código XAML que define o fluxo de traballo en tempo real da súa acción. Non hai forma de referirse a outro fluxo de traballo en tempo real existente. |
Engadir argumentos de entrada e saída
As accións soportan argumentos de entrada e saída que se poden engadir ao fluxo de traballo usando un tipo DynamicActivityProperty . Cando engade estes argumentos ao fluxo de traballo dunha acción, convértense en propiedades nas clases de solicitude de mensaxe e resposta asociadas a esa acción. Por exemplo, o seguinte exemplo mostra o código C# e XAML para dous argumentos de entrada e un de saída.
DynamicActivityProperty inputProperty1 = new DynamicActivityProperty { Name = "Subject", Type = typeof(InArgument<string>) };
DynamicActivityProperty inputProperty2 = new DynamicActivityProperty { Name = "EntityCollection", Type = typeof(InArgument<EntityCollection>) };
DynamicActivityProperty outputProperty1 = new DynamicActivityProperty { Name = "Output", Type = typeof(OutArgument<string>) };
inputProperty1.Attributes.Add(new ArgumentRequiredAttribute(true));
inputProperty1.Attributes.Add(new ArgumentDescriptionAttribute("The subject"));
inputProperty1.Attributes.Add(new ArgumentDirectionAttribute(Microsoft.Xrm.Sdk.Workflow.ArgumentDirection.Input));
inputProperty2.Attributes.Add(new ArgumentRequiredAttribute(false));
inputProperty2.Attributes.Add(new ArgumentDescriptionAttribute("The entity collection"));
inputProperty2.Attributes.Add(new ArgumentDirectionAttribute(Microsoft.Xrm.Sdk.Workflow.ArgumentDirection.Input));
outputProperty1.Attributes.Add(new ArgumentRequiredAttribute(false));
outputProperty1.Attributes.Add(new ArgumentDescriptionAttribute("The output"));
outputProperty1.Attributes.Add(new ArgumentDirectionAttribute(Microsoft.Xrm.Sdk.Workflow.ArgumentDirection.Output));
<x:Property Name="Subject"
Type="InArgument(x:String)">
<x:Property.Attributes>
<mxsw:ArgumentRequiredAttribute Value="True" />
<mxsw:ArgumentTargetAttribute Value="False" />
<mxsw:ArgumentDescriptionAttribute Value="The subject " />
<mxsw:ArgumentDirectionAttribute Value="Input" />
<mxsw:ArgumentEntityAttribute Value="" />
</x:Property.Attributes>
</x:Property>
<x:Property Name="EntityCollection"
Type="InArgument(mxs:EntityCollection)">
<x:Property.Attributes>
<mxsw:ArgumentRequiredAttribute Value="False" />
<mxsw:ArgumentTargetAttribute Value="False" />
<mxsw:ArgumentDescriptionAttribute Value="The entity collection" />
<mxsw:ArgumentDirectionAttribute Value="Input" />
<mxsw:ArgumentEntityAttribute Value="" />
</x:Property.Attributes>
</x:Property>
<x:Property Name="Output"
Type="OutArgument(x:String)">
<x:Property.Attributes>
<mxsw:ArgumentRequiredAttribute Value="False" />
<mxsw:ArgumentTargetAttribute Value="False" />
<mxsw:ArgumentDescriptionAttribute Value="The output" />
<mxsw:ArgumentDirectionAttribute Value="Output" />
<mxsw:ArgumentEntityAttribute Value="" />
</x:Property.Attributes>
</x:Property>
Os nomes usados para as propiedades deben ser consistentes cos nomes dos argumentos, xa que a xeración de código definirá estes nomes como propiedades de solicitude ou resposta.
Os tipos de argumentos soportados para os argumentos de entrada e saída móstranse na seguinte táboa.
Tipo .NET | Tipo de argumento |
---|---|
System.Int32 | Número enteiro |
System.String | Cadea |
EntityReference | Referencia de entidade |
Entity | Entidad |
EntityCollection | Colección de entidades |
System.DateTime | DataHora |
Sistema. Dobre | Flotar |
System.Decimal | Decimal |
Money | Diñeiro |
Sistema.Booleano | Booleanounit synonyms for matching user input |
OptionSetValue | Lista de selección |
Os atributos de argumentos soportados están listados na seguinte táboa.
Atributo argumento | Descripción |
---|---|
ArgumentRequiredAttribute | Indica se o argumento é necesario. |
ArgumentDirectionAttribute | Indica se a dirección do argumento é unha entrada ou saída. |
ArgumentDescriptionAttribute | Especifica unha descrición para o argumento. |
ArgumentEntityAttribute | Utilízase se queres pasar a unha entidade. |
ArgumentTargetAttribute | Este atributo é xerado ou engadido automaticamente. Apunta á entidade principal para a que se executa o fluxo de traballo. Este atributo é opcional para accións globais. |
Empaquetar unha acción para a distribución
Para distribuír a túa acción de xeito que poida ser importada nunha organización de Dynamics 365 Customer Engagement (on-premises), engade a túa acción a unha solución de Customer Engagement. Isto faise facilmente usando a aplicación web navegando a Configuración>Personalizacións Solucións>. Tamén podes escribir código para crear a solución. Para obter máis información sobre as solucións, consulte Empaquetar e distribuír extensións.
Xerar tipos de limitación anticipada para unha acción
Usando a ferramenta CrmSvcUtil, pode xerar clases de solicitudes e respostas para que a súa acción inclúa no código da aplicación. Non obstante, antes de xerar estas clases, asegúrese de activar a acción.
Para descargar o CrmSvcUtil.exe, consulte Ferramentas de desenvolvemento de Dataverse.
O seguinte exemplo mostra o formato para executar a ferramenta desde a liña de comandos para unha instalación local de Customer Engagement. Proporciona os valores dos parámetros para a instalación.
CrmSvcUtil.exe /url:https://<serverName>/<organizationName>/XRMServices/2011/Organization.svc /out:<outputFilename>.cs /username:<username> /password:<password> /domain:<domainName> /namespace:<outputNamespace> /serviceContextName:<serviceContextName> /generateActions
O seguinte exemplo mostra o formato para executar a ferramenta desde a liña de comandos con Dynamics 365 for Customer Engagement. Proporciona os valores de parámetros axeitados para a túa conta e servidor.
CrmSvcUtil.exe /url:https://<organizationUrlName>.api.crm.dynamics.com/XRMServices/2011/Organization.svc /out:<outputFilename>.cs /username:<username> /password:<password> /namespace:<outputNamespace> /serviceContextName:<serviceContextName> /generateActions
Observa o uso do /generateActions
parámetro. Máis información: Crear clases de entidades vinculadas precoz coa ferramenta de xeración de código (CrmSvcUtil.exe).
Podes usar tipos de vinculación anticipada ou tardía coas clases de solicitude e resposta xeradas para a túa acción.
Executar unha acción usando a API Web
Créase unha nova acción na API web cando se crea. Se a acción se crea no contexto dunha entidade, está ligada a esa entidade. En caso contrario, é unha acción sen limitacións. Máis información: Usar accións API web.
Executar unha acción usando un recurso web JavaScript
Unha acción pode ser executada usando a API web como calquera acción do sistema. Máis información: Xrm.WebApi.online.execute
Executar unha acción usando o servizo de organización
Para executar unha acción usando o servizo web da organización usando código xestionado, siga estes pasos.
Inclúa o ficheiro de tipos de vinculación inicial que xerou usando a ferramenta CrmSvcUtil no proxecto do seu programa.
No código da aplicación, instanza da solicitude da acción e enche todas as propiedades requiridas.
Invoca Executea túa solicitude como argumento.
Antes de executar o código da aplicación, asegúrese de que a acción está activada. En caso contrario, recibirás un erro de tempo de execución.
Executar unha acción usando un proceso
Pode executar unha acción a partir de fluxos de traballo, diálogos ou outras accións do proceso. As accións personalizadas activadas están dispoñibles para os procesos seleccionando o elemento Executar acción no despregable Engadir paso do formulario de proceso da aplicación web. Despois de engadir o paso ao proceso, pode seleccionar a súa nova acción personalizada (ou calquera acción) na lista de accións proporcionada no paso. Seleccione Establecer propiedades no paso para especificar os parámetros de entrada que requira a acción personalizada.
Nota
Se unha acción personalizada ten tipos de parámetros non soportados, por exemplo Lista de selección, Entidade ou Colección de entidades, a acción personalizada non aparece na lista de accións .
A posibilidade de executar unha acción a partir dun proceso introduciuse con Dynamics CRM Online 2015 Update 1.
As comprobacións da plataforma existentes Depth aseguran que non se produce un bucle infinito. Para máis información sobre os límites de profundidade, véxase.MaxDepth
Coidado coas accións de longa duración
Se un dos pasos do fluxo de traballo en tempo real da acción é unha actividade de fluxo de traballo personalizada, esa actividade de fluxo de traballo personalizada executarase dentro do ambiente illado de tempo de execución de sandbox e estará suxeita ao límite de tempo límite de dous minutos, de xeito similar a como se xestionan os complementos en caixa de area. Non obstante, non hai restricións sobre a cantidade de tempo total que pode levar a acción en si. Ademais, se unha acción participa nunha transacción, onde o rollback está activado, aplicaranse tempos límites de SQL Server.
Suxestión
Unha recomendación de boas prácticas é que as operacións de longa duración deben executarse fóra de Dynamics 365 Customer Engagement (on-premises) usando procesos asíncronos ou en fondo .NET.
Consulte tamén
Crear fluxos de traballo en tempo real
Usar diálogos para procesos guiados
Pipeline de execución de eventos
Escribir fluxos de traballo para automatizar os procesos de negocio
Personaliza o teu sistema