Flujos de proceso de negocio de modelo

 

Publicado: enero de 2017

Se aplica a: Dynamics 365 (online), Dynamics 365 (on-premises), Dynamics CRM 2016, Dynamics CRM Online

Un flujo de proceso de negocio permite crear ventas, servicios y otros procesos comerciales más eficaces y rentables. Contar con procesos de alto rendimiento en el lugar lo ayudará a incrementar sus índices de ganancias, mejorar la satisfacción de los clientes y aumentar sus ingresos.

Un flujo del proceso de negocio crea una visualización del proceso de negocio mediante controles especiales en la parte superior de los formularios de entidad. Los usuarios son guiados a través de diversas fases de procesos de ventas, marketing o servicios de finalización. Cada proceso admite varias etapas y pasos. Puede agregar o quitar pasos, cambiar el orden de las fases, o agregar nuevas entidades al flujo del proceso de negocio.

Con Actualización de diciembre de 2016 para Dynamics 365 (online y local), pueden asociar diferentes definiciones de flujo de proceso de negocio a distintos roles y las instancias pueden ejecutarse en paralelo con el mismo registro de entidad. Los usuarios pueden cambiar entre instancias de proceso de negocio simultáneo y reanudar el trabajo en una fase actual del proceso. El nuevo diseñador visual de procesos de arrastrar y soltar permite la creación de procesos, como flujos de procesos de negocio y flujos de tareas, así como de reglas de negocio, mediante una interfaz gráfica intuitiva en Dynamics 365.

Para obtener más información acerca de procesos, vea TechNet: Flujos de proceso de negocio.

En este tema

Soporte de programabilidad del lado del servidor para flujo de proceso de negocio

Soporte de programabilidad del lado del cliente para flujos de proceso de negocio

Número máximo de procesos, fases y pasos

Soporte de programabilidad del lado del servidor para flujo de proceso de negocio

Una definición de flujo de proceso de negocio se almacena en la entidad Workflow. El flujo de proceso de negocio es una de las categorías del flujo de trabajo. Otras categorías de proceso incluyen acción, flujo de trabajo y diálogo. Para obtener más información, vea Categorías de proceso de Dynamics 365. Las entidades personalizadas y las entidades que han actualizado los formularios de la interfaz de usuario pueden participar en el flujo de proceso de negocio. Las entidades actualizadas de la interfaz de usuario tienen la propiedad de IsAIRUpdated definida en true. Para habilitar una entidad para el flujo de proceso de negocio, defina la propiedad de IsBusinessProcessEnabled en true.

Importante

La habilitación de una entidad para el flujo de proceso de negocio es un proceso unidireccional. No puede revertirlo.

  • Definir flujo de proceso de negocio

  • Activar flujo de proceso de negocio

  • Administrar la seguridad de los flujos de proceso de negocio

  • Administrar instancias de flujo de proceso de negocio

  • Aplicar el flujo de proceso de negocio cuando se crea un registro de entidad

Definir flujo de proceso de negocio

Use el nuevo diseñador visual de flujo de proceso de negocio de Dynamics 365 para definir un flujo de proceso de negocio. La entidad Workflow almacena una definición de flujo de proceso de negocio y deben especificarse los siguientes valores de atributo en el registro de la entidad Workflow para un flujo de proceso de negocio: name, category, businessprocesstype, primaryentity, uniquename, y xaml. Para obtener información sobre estos atributos, consulte workflow EntityType. De forma predeterminada, un registro de flujo de proceso de negocio se crea en el estado Draft.

Activar flujo de proceso de negocio

Para poder el flujo de proceso, debe activarlo. Para activarlo, debe tener el privilegio de prvActivateBusinessProcessFlow para la entidad Workflow. Use el mensaje de UpdateRequest para definir el estado del registro de entidad Workflow en Activated.Más información:Realizar operaciones especializadas con Actualizar

Una vez que active una definición de flujo de proceso de negocio (cambiando el estado del registro de entidad Workflow correspondiente), se crea automáticamente una entidad personalizada con el nombre siguiente para almacenar las instancias de flujo de proceso de negocio activadas: "<activesolutionprefix>_<uniquename>".

Por ejemplo, si especificó el nombre único de la definición de flujo de proceso de negocio como “myuniquebpf1” y usa el editor predeterminado para la solución activa, el nombre de la entidad personalizada creada para almacenar las instancias de proceso será “new_myuniquebpf1”.

Si el valor uniquename no está disponible para una definición de flujo de proceso de negocio, por ejemplo si el flujo de proceso de negocio se importó como parte de la solución desde una versión anterior, el nombre predeterminado de la entidad personalizada será "<activesolutionprefix>_bpf_<GUID_BPF_Definition>:

Importante

Los registros de flujo de proceso de negocio de ejemplo disponibles en Dynamics 365 usan entidades del sistema para almacenar los registros de instancia del flujo de proceso de negocio correspondiente. Un par de los registros de entidad de flujo de proceso de negocio de ejemplo son opportunitysalesprocess EntityType y leadtoopportunitysalesprocess EntityType.

No obstante, cualquier nueva definición de flujo de proceso de negocio que cree usará entidades personalizadas para almacenar sus registros de instancia como se explicó anteriormente.

Administrar la seguridad de los flujos de proceso de negocio

La entidad personalizada que se crea automáticamente al activar un flujo de proceso de negocio para almacenar las instancias de flujo de proceso de negocio cumple con el modelo de seguridad estándar para cualquier otra entidad personalizada en Customer Engagement. Esto implica que los privilegios otorgados en estas entidades definen los permisos en tiempo de ejecución para los usuarios para flujos de proceso de negocio.

La entidad personalizada de flujos de proceso de negocio tiene un ámbito de organización. Los privilegios normales de creación, recuperación, actualización y eliminación en esta entidad definen el permiso que tendría el usuario en función de los roles asignados. De manera predeterminada, al crear la entidad personalizada de flujo de proceso de negocio, solo se otorgan permisos a los roles de seguridad de administrador del sistema y de personalizador del sistema, y debe otorgar explícitamente permisos a esta entidad personalizada para otros roles de seguridad, según corresponda.

Administrar instancias de flujo de proceso de negocio

La entidad personalizada que se crea automáticamente al activar una definición de flujo de proceso de negocio almacena todas las instancias de proceso para la definición de flujo de proceso de negocio. La entidad personalizada admite la creación y administración mediante programación de registros (instancias de proceso) mediante la API web y el extremo de CRM 2011. Por ejemplo, si el nombre de la entidad personalizada es "new_myuniquebpf1", puede usar la consulta de la API web para recuperar todos los registros (instancias de proceso) en la entidad personalizada:


[URI de la organización]/api/data/v8.2/new_myuniquebpf1s

Una instancia de proceso puede tener uno de los siguientes estados: Active, Finished, o Aborted.

Importante

En esta sección se proporciona información sobre la administración mediante programación de diferentes escenarios de flujo de proceso de negocio como cambiar procesos de negocio, recuperar instancias de proceso para un registro de entidad, recuperar la ruta activa y la fase activa para una instancia de proceso, y moverse a la fase siguiente o anterior. Debe usar los mensajes y la entidad/entidades de flujo de proceso de negocio adecuadas como se describe en esta sección para administrar y automatizar mediante programación sus flujos de proceso de negocio.

La manipulación de atributos relacionados con el proceso (como ProcessId, StageId y TraversedPath) en entidades habilitadas para flujos de proceso de negocio no garantiza la coherencia del estado del flujo de proceso de negocio, y no es un escenario admitido. La única excepción a esto, es modificar mediante programación el atributo ProcessId al crear un registro de entidad para reemplazar la aplicación predeterminada del flujo de proceso de negocio al nuevo registro. Más información: Aplicar el flujo de proceso de negocio cuando se crea un registro de entidad

Use el mensaje SetProcess Action o SetProcessRequest para establecer otro flujo de proceso de negocio como instancia de proceso activa para el registro de la entidad de destino. Una instancia de proceso activa es la que está visible en la interfaz de usuario del registro de entidad. Si no hay ninguna instancia de proceso de la definición de flujo de proceso de negocio especificada, se creará una nueva instancia de flujo de proceso de negocio y se establecerá como activa para el registro de entidad. Si ya hay una instancia de proceso de la definición de flujo de proceso de negocio, la instancia de proceso se establecerá como activa para el registro de entidad. Si desea establecer una instancia de proceso específica como instancia de proceso activa para un registro de entidad, puede usar la propiedad NewProcessInstance para especificar la instancia.

Configurar un proceso activo mediante programación es igual que cambiar a otra instancia de proceso para el registro de entidad en la interfaz de usuario. Puesto que cada instancia de flujo de proceso de negocio mantiene su propia información de progreso de fase y paso, al cambiar a otra instancia de proceso de negocio no se pierde información de progreso, y se reanuda desde el mismo punto donde estaba la última vez.

El código de ejemplo siguiente demuestra cómo puede cambiar a otro flujo de proceso de negocio para un registro de entidad:

SetProcessRequest setProcReq = new SetProcessRequest
{
    Target = new EntityReference(Opportunity.EntityLogicalName, _opportunityId),
    NewProcess = new EntityReference(Workflow.EntityLogicalName, _bpfId)
};
SetProcessResponse setProcResp = (SetProcessResponse)_serviceProxy.Execute(setProcReq);

En el código de ejemplo anterior, la variable _bpfId representa el identificador de la definición de flujo de proceso de negocio a la que desea cambiar; puede recuperar el identificador de la definición de flujo de proceso de negocio requerida consultando la entidad Workflow. El código de ejemplo siguiente demuestra cómo puede recuperar el identificador de la definición de flujo de proceso de negocio "Proceso de ventas de la oportunidad” de ejemplo consultando la entidad Workflow:

QueryExpression opportunityBpfQuery = new QueryExpression
{
    EntityName = "workflow",
    ColumnSet =  new ColumnSet("name"),
    Criteria = new FilterExpression
    {
        Conditions =
        {
            new ConditionExpression
            {
                AttributeName = "uniquename",
                Operator = ConditionOperator.Equal,
                Values = { "opportunitysalesprocess" }
            }
        }
    }
};
Workflow retrievedBPF = (Workflow)_serviceProxy.RetrieveMultiple(opportunityBpfQuery).Entities[0];
_bpfId = retrievedBPF.Id;

Para ver el ejemplo completo, consulte Ejemplo: Trabajar con flujos de proceso de negocio

Use la RetrieveProcessInstances Function o el mensaje RetrieveProcessInstancesRequest para recuperar todas las instancias de flujo de proceso de negocio para un registro de entidad en todas las definiciones de proceso de negocio. Las instancias de flujo de proceso de negocio devueltas para una entidad se ordenan basándose en el atributo modifiedon para la instancia. Por ejemplo, la instancia de flujo de proceso de negocio modificada recientemente será el primer registro en la colección devuelta. La instancia de flujo de proceso de negocio modificada más recientemente es la que está activa en la interfaz de usuario para un registro de entidad.

El código de ejemmplo siguiente demuestra cómo recuperar instancias de flujo de proceso de negocio para un registro de entidad y, a continuación enumera las instancias de proceso asociadas al registro de entidad:

RetrieveProcessInstancesRequest procOpp2Req = new RetrieveProcessInstancesRequest
{
    EntityId = _opportunityId,
    EntityLogicalName = Opportunity.EntityLogicalName
};

RetrieveProcessInstancesResponse procOpp2Resp = (RetrieveProcessInstancesResponse)_serviceProxy.Execute(procOpp2Req);

// Declare variables to store values returned in response
int processCount = procOpp2Resp.Processes.Entities.Count;
var activeProcessInstance = procOpp2Resp.Processes.Entities[0]; // First record is the active process instance
_processOpp2Id = activeProcessInstance.Id; // Id of the active process instance, which will be used
                                           // later to retrieve the active path of the process instance

if (processCount > 0)
{
    // Display the count of process instances concurrently associated with the opportunity record
    Console.WriteLine("\nCount of process instances for the opportunity record: {0}", processCount);

    // Display all the process instances associated with the opportunity record
    // Demonstrates that multiple processes can run concurrently against the same record
    Console.WriteLine("\nProcess instances associated with the opportunity record:");
    for (int i = 0; i<processCount; i++)
    {
        Console.WriteLine("\t{0}", procOpp2Resp.Processes.Entities[i].Attributes["name"]);
    }
}

Los registros devueltos de la instancia de flujo de proceso de negocio para un registro de entidad también almacenan el identificador de la fase activa en el atributo processstageid que se puede usar para buscar la fase activa y, a continuación pasa a la fase anterior o siguiente. Para ello, primero necesita buscar la ruta activa de una instancia de flujo de proceso de negocio y las fases disponibles en la instancia de flujo de proceso utilizando RetrieveActivePath Function o RetrieveActivePathRequest. El código de ejemplo siguiente demuestra cómo recuperar las fases de proceso en la ruta activa para una instancia de flujo de proceso de negocio y la fase activa de la instancia:

// Retrieve the active stage ID of in the active process instance
_activeStageId = new Guid(activeProcessInstance.Attributes["processstageid"].ToString());

// Retrieve the process stages in the active path of the current process instance
RetrieveActivePathRequest pathReq = new RetrieveActivePathRequest
{
    ProcessInstanceId = _processOpp2Id
};
RetrieveActivePathResponse pathResp = (RetrieveActivePathResponse)_serviceProxy.Execute(pathReq);

Console.WriteLine("\nRetrieved stages in the active path of the process instance:");
for (int i = 0; i <pathResp.ProcessStages.Entities.Count; i++)
{
    Console.WriteLine("\tStage {0}: {1} (StageId: {2})", i + 1,
                            pathResp.ProcessStages.Entities[i].Attributes["stagename"], 
                            pathResp.ProcessStages.Entities[i].Attributes["processstageid"]);

    // Retrieve the active stage name and active stage position based on the activeStageId for the process instance
    if (pathResp.ProcessStages.Entities[i].Attributes["processstageid"].ToString() == _activeStageId.ToString())
    {
        _activeStageName = pathResp.ProcessStages.Entities[i].Attributes["stagename"].ToString();
        _activeStagePosition = i;
    }
}

// Display the active stage name and Id
Console.WriteLine("\nActive stage for the process instance: {0} (StageID: {1})", _activeStageName, _activeStageId);

Una vez que tenga la información de la fase activa y ruta de acceso activa para una instancia de flujo de proceso de negocio, puede usar la información para pasar a una fase anterior o siguiente en la ruta activa. La navegación hacia delante de fases debe hacerse en orden, es decir, solo debe avanzar a la siguiente fase en la ruta activa. El código de ejemplo siguiente demuestra cómo pasar a la siguiente fase para una instancia de flujo de proceso de negocio:

// Retrieve the stage ID of the next stage that you want to set as active
_activeStageId = (Guid)pathResp.ProcessStages.Entities[_activeStagePosition + 1].Attributes["processstageid"];

// Retrieve the process instance record to update its active stage
ColumnSet cols1 = new ColumnSet();
cols1.AddColumn("activestageid");
Entity retrievedProcessInstance = _serviceProxy.Retrieve("opportunitysalesprocess", _processOpp2Id, cols1);

// Set the next stage as the active stage
retrievedProcessInstance["activestageid"] = new EntityReference(ProcessStage.EntityLogicalName, _activeStageId);
_serviceProxy.Update(retrievedProcessInstance);

Para ver el ejemplo completo, consulte Ejemplo: Trabajar con flujos de proceso de negocio.

Aplicar el flujo de proceso de negocio cuando se crea un registro de entidad

En esta sección se proporciona información sobre el comportamiento predeterminado para los flujos de proceso de negocio que se aplican automáticamente a nuevos registros de entidades creadas en Customer Engagement, y cómo puede reemplazarlo para aplicar un flujo de proceso de negocio de su elección para nuevos registros de entidad.

De forma predeterminada, de una entidad que tiene varios flujos de proceso de negocio definidos, el sistema aplica un flujo de proceso de negocio al nuevo registro de entidad con la lógica de varias fases siguiente:

  1. Identifique todos los flujos de proceso de negocio aplicables al nuevo registro de entidad basado en el atributo Workflow.PrimaryEntity de los registros de la definición de flujo de proceso de negocio.

  2. Identifique las definiciones de flujo de proceso de negocio a las que el usuario actual tiene acceso. Para obtener información sobre cómo se determina y administra el acceso a un flujo de proceso de negocio, consulte Administrar la seguridad de los flujos de proceso de negocio antes en este tema.

  3. Todas las definiciones de flujo de proceso de negocio en el sistema están sujetas a un pedido global por entidad. El pedido del flujo de proceso de negocio se almacena en el atributo Workflow.ProcessOrder. Las definiciones de flujo de proceso de negocio para una entidad se ordenan basándose en este pedido, y se selecciona el que tenga el menor el valor de pedido.

  4. Por último, si el registro de entidad se crea a partir de una aplicación de negocio (módulo de la aplicación), se aplica un nivel más de filtrado para seleccionar el flujo de proceso de negocio que se aplicará automáticamente al nuevo registro de entidad. Cuando trabajan en una aplicación, los usuarios pueden tener acceso únicamente a las entidades, a los flujos de proceso de negocio, a las vistas y a los formularios pertinentes a los que tienen acceso en virtud de los roles de seguridad asignados a la aplicación de negocio.

    • Si la aplicación de negocio no contiene ningún flujo de proceso de negocio, el flujo de proceso de negocio se aplica según se explica hasta el paso 3.

    • Si la aplicación de negocio tiene uno o varios flujos de proceso de negocio, solo corresponderían los flujos de proceso de negocio presentes en la aplicación. En este caso, cuando el usuario está trabajando en un contexto de la aplicación de negocio, la lista de flujos de proceso de negocio del paso 3 se filtra aún más para los que sean parte de la aplicación de negocio que se encuentra en el módulo de la aplicación, y se ordenan en función del pedido de proceso.

    • Si no hay ningún flujo de proceso de negocio disponible en una aplicación de negocio para la entidad o uno al que el usuario tenga acceso, ningún flujo de proceso de negocio se aplica para el nuevo registro de entidad.

Puede anular que se aplique automáticamente el comportamiento predeterminado de los flujos de proceso de negocio a los nuevos registros de entidad. Para ello, establezca el atributo ProcessId de la entidad en uno de los siguientes valores cuando cree un nuevo registro de entidad:

  • Establecer Guid.Empty para omitir la configuración de un flujo de proceso de negocio para nuevos registros de entidad. Es posible que desee hacerlo si crea registros de entidad de manera masiva, pero no desea que el flujo de proceso de negocio se aplique a ellos.

  • Establézcalo en una entidad específica de flujo de proceso de negocio (como una referencia de entidad). En este caso, el sistema aplicará el flujo de proceso de negocio especificado, en lugar de la lógica predeterminada.

Si no establece un valor para el atributo ProcessId cuando crea un nuevo registro de entidad, el sistema aplicará la lógica predeterminada que se explicó anteriormente.

Nota

Anular que se aplique automáticamente el comportamiento predeterminado de los flujos de proceso de negocio a los nuevos registros de entidad solo se admite mediante programación. No puede hacerlo con la UI.

Soporte de programabilidad del lado del cliente para flujos de proceso de negocio

Con Dynamics 365 hay un objeto del lado del cliente que puede usar para interactuar con flujos de proceso de negocio en sus scripts de formulario. Los flujos de proceso de negocio desencadenan eventos del lado del cliente cada vez que un proceso se aplica a un registro, cambia la fase o cambia su estado a Active, Finished, o Aborted.Más información:Escribir scripts para flujos de procesos de negocio

Número máximo de procesos, fases y pasos

Por cada entidad, el valor predeterminado para el número máximo de flujos de proceso de negocio activados es de 10. Puede especificar un valor distinto mediante el atributo Organization.MaximumActiveBusinessProcessFlowsAllowedPerEntity. Sin embargo, si el valor es superior a 10, verá una disminución en el rendimiento del sistema cuando cambia procesos o abre un registro que tiene un flujo de proceso de negocio asignado. Esto puede resultar más apreciable si los procesos abarcan varias entidades.

Los siguientes valores no se pueden personalizar:

  • El número máximo de fases por entidad en el proceso es 30.

  • El número máximo de pasos en cada fase es 30.

  • El número máximo de entidades que pueden participar en el flujo de proceso es 5.

Ver también

Vídeo: Proceso negocio en Microsoft Dynamics CRM 2015
Categorías de proceso de Dynamics 365
Automatizar procesos de negocio mediante proceso de Dynamics 365
Crear flujos de trabajo en tiempo real
Habilitación de proceso con Microsoft Dynamics CRM 2013
Ayuda y entrenamiento: Crear un nuevo proceso de negocio
Ayuda y entrenamiento: Asignación de roles de procesos de negocio
Ayuda y entrenamiento: Oriente al personal en tareas comunes con procesos
Ayuda y entrenamiento: Agregar procesos de negocio listos para usar
TechNet: Flujos de proceso de negocio
Escribir scripts para flujos de procesos de negocio

Microsoft Dynamics 365

© 2017 Microsoft. Todos los derechos reservados. Copyright