Condividi tramite


Modellare processi aziendali

 

Data di pubblicazione: gennaio 2017

Si applica a: Dynamics 365 (online), Dynamics 365 (on-premises), Dynamics CRM 2016, Dynamics CRM Online

Un processo aziendale consente di creare vendite, servizi e altri processi aziendali più efficienti e ottimizzati. Disponendo di processi ad alte prestazioni si potranno aumentare le percentuali di opportunità acquisite, migliorare la soddisfazione del cliente e far crescere i ricavi.

Un processo aziendale crea una visualizzazione del processo aziendale posizionando speciali controlli nella parte superiore dei moduli dell'entità. Gli utenti vengono guidati nelle varie fasi di vendita, marketing o processi del servizio verso il completamento. Ogni processo supporta più fasi e passaggi. È possibile aggiungere o rimuovere passaggi, modificare l'ordine delle fasi o aggiungere nuove entità al processo aziendale.

Con Aggiornamento di dicembre 2016 per Dynamics 365 (online e locale), diverse definizioni dei processi aziendali possono essere associate a diversi ruoli e le istanze possono essere eseguite simultaneamente sullo stesso record di entità. Gli utenti possono passare tra le varie istanze dei processi aziendali simultanei e riprendere il lavoro a una fase corrente del processo. La nuova finestra di progettazione dei processi di trascinamento della selezione visiva consente la creazione di processi, ad esempio processi aziendali e flussi di attività, tramite un'interfaccia grafica intuitiva in Dynamics 365.

Per informazioni dettagliate sui processi, vedi TechNet: Processi aziendali.

In questo argomento

Supporto di programmabilità lato server per processi aziendali

Supporto di programmabilità lato client per processi aziendali

Numero massimo di processi, fasi e procedure

Supporto di programmabilità lato server per processi aziendali

Una definizione del processo aziendale è archiviata nell'entità Workflow. Il processo aziendale è una delle categorie del processo. Altre categorie di processo includono azione, flusso di lavoro e interazione. Per ulteriori informazioni, vedere Categorie di processo Dynamics 365. Entità personalizzate ed entità con moduli dell'interfaccia utente aggiornati possono partecipare al processo aziendale. Le entità dell'interfaccia utente aggiornate hanno la proprietà di IsAIRUpdated impostata su true. Per abilitare un'entità per il processo aziendale, impostare la proprietà di IsBusinessProcessEnabled su true.

Importante

Abilitare un'entità per processo aziendale è un processo unidirezionale. Non è possibile invertirlo.

  • Definire il processo aziendale

  • Attivare il processo aziendale

  • Gestire la sicurezza per i processi aziendali

  • Gestire le istanze dei processi aziendali

  • Applicare il processo aziendale durante la creazione di un record dell'entità

Definire il processo aziendale

Utilizzare la nuova finestra di progettazione visiva dei processi aziendali in Dynamics 365 per definire un processo aziendale. L'entità Workflow archivia una definizione del processo aziendale e i valori di attributi seguenti devono essere specificati nel record dell'entità Workflow per un processo aziendale: name, category, businessprocesstype, primaryentity, uniquename e xaml. Per informazioni sugli attributi, vedi workflow EntityType. Per impostazione predefinita, un record di processo aziendale viene creato nello stato Draft .

Attivare il processo aziendale

Prima di poter utilizzare il flusso di processo, è necessario attivarlo. Per attivarlo, è necessario disporre del privilegio prvActivateBusinessProcessFlow per l'entità Workflow. Utilizzare il messaggio UpdateRequest per impostare lo stato del record di entità Workflow su Activated.Ulteriori informazioni:Eseguire operazioni specializzate utilizzando l'aggiornamento

Dopo aver attivato una definizione di processo aziendale (modificando lo stato del record di entità Workflow corrispondente), un'entità personalizzata con il nome seguente viene creata automaticamente per archiviare le istanze attivate del processo aziendale: "<activesolutionprefix>_<uniquename>".

Ad esempio, se è stato specificato il nome univoco della definizione del processo aziendale come "myuniquebpf1" e si utilizza l'autore predefinito per la soluzione attiva, il nome dell'entità personalizzata creata per l'archiviazione delle istanze del processo sarà "new_myuniquebpf1".

Se il valore uniquename non è disponibile per la definizione del processo aziendale, ad esempio se il processo aziendale è stato importato come parte di una soluzione da una versione precedente, il nome predefinito dell'entità personalizzata sarà "<activesolutionprefix>_bpf_<GUID_BPF_Definition>:

Importante

I record di esempio dei processi aziendali disponibili in Dynamics 365 utilizzano le entità di sistema per archiviare i corrispondenti record delle istanze dei processi aziendali. La coppia di record di entità del processo aziendale di esempio sono opportunitysalesprocess EntityType e leadtoopportunitysalesprocess EntityType.

Tuttavia, le nuove definizioni del processo aziendale create utilizzano le entità personalizzate per archiviare i propri record dell'istanza come descritto in precedenza.

Gestire la sicurezza per i processi aziendali

L'entità personalizzata creata automaticamente all'attivazione di un processo aziendale, per memorizzare le istanze dei processi aziendali, applica il modello di sicurezza standard come qualsiasi altra entità personalizzata di Customer Engagement. Questo implica che i privilegi assegnati a queste entità definiscono le autorizzazioni di runtime per gli utenti dei processi aziendali.

L'entità personalizzata del processo aziendale include un ambito dell'organizzazione. I privilegi standard dell'entità (per creare, recuperare, aggiornare ed eliminare) definiscono le autorizzazioni di cui l'utente dovrebbe disporre in base ai ruoli assegnati. Per impostazione predefinita, quando l'entità personalizzata del processo aziendale viene creata, viene concesso l'accesso solo all'amministratore di sistema e ai ruoli di sicurezza Addetto alla personalizzazione del sistema ed è necessario assegnare esplicitamente le autorizzazioni a questa entità personalizzata per altri ruoli di sicurezza in base alle esigenze.

Gestire le istanze dei processi aziendali

L'entità personalizzata creata automaticamente all'attivazione di una definizione di processo aziendale archivia tutte le istanze della definizione di processo aziendale. L'entità personalizzata supporta la creazione e la gestione programmatica dei record (istanze di processo) tramite l'API Web e l'endpoint CRM 2011. Ad esempio, se il nome di un'entità personalizzata è "new_myuniquebpf1", puoi utilizzare la seguente query API Web per recuperare tutti i record (istanze di processo) dell'entità personalizzata:


[URI organizzazione]/api/data/v8.2/new_myuniquebpf1s

Un'istanza di processo può avere uno dei due seguenti stati: Active, Finished o Aborted.

Importante

In questa sezione vengono fornite informazioni sulla gestione a livello di programmazione degli scenari diversi dei processi aziendali ad esempio il passaggio tra processi aziendali, il recupero di istanze di processo per un record di entità, il recupero del percorso attivo e della fase attiva per un'istanza di processo e lo spostamento alla fase successiva o precedente. È necessario utilizzare i messaggi e le entità appropriate per il processo aziendale come descritto in questa sezione per gestire a livello di programmazione e automatizzare i processi aziendali.

La gestione degli attributi correlati ai processi, ad esempio ProcessId, StageId e TraversedPath, per le entità abilitate per i processi aziendali non garantisce la coerenza dello stato dei processi aziendali e non è uno scenario supportato. L'unica eccezione a questo consiste nella modifica a livello di programmazione dell'attributo ProcessId durante la creazione di un record dell'entità per sostituire l'applicazione predefinita del processo aziendale nel nuovo record. Per ulteriori informazioni, vedere Applicare il processo aziendale durante la creazione di un record dell'entità

Utilizza il messaggio SetProcess Action o SetProcessRequest per impostare un altro processo aziendale come l'istanza di processo attiva per il record dell'entità di destinazione. Un'istanza di processo attiva è quella visibile nell'interfaccia utente per il record dell'entità. Se non esiste alcuna istanza di processo della definizione processo aziendale specificata, viene creata una nuova istanza di processo aziendale e impostata come attiva per il record di entità. Se è già presente un'istanza di processo della definizione del processo aziendale, l'istanza di processo viene impostata come l'istanza di processo attiva del record di entità. Se vuoi impostare un'istanza di processo particolare come l'istanza di processo attiva per un record di entità, puoi usare la proprietà NewProcessInstance per specificare l'istanza.

L'impostazione di un processo attivo a livello di programmazione è uguale al passaggio a un'altra istanza di processo per il record di entità nell'interfaccia utente. Poiché ogni istanza di processo aziendale mantiene le proprie informazioni di stato del passaggio e della fase, il passaggio a un'altra istanza di processo aziendale non causa la perdita delle informazioni di stato e tu riprendi il lavoro dallo stesso punto in cui eri l'ultima volta.

Nel seguente esempio di codice viene illustrato come puoi passare a un altro processo aziendale per un record di entità:

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

Nell'esempio di codice precedente, la variabile _bpfId rappresenta l'ID della definizione del processo aziendale a cui vuoi passare. Puoi recuperare l'ID della definizione del processo aziendale eseguendo una query dell'entità Workflow. Nel seguente esempio di codice viene illustrato come recuperare l'ID della definizione del processo aziendale "Processo di vendita opportunità" di esempio eseguendo una query dell'entità 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;

Per un esempio completo, vedere Esempio: Utilizzare i processi aziendali.

Utilizza la RetrieveProcessInstances Function o il messaggio RetrieveProcessInstancesRequest per recuperare tutte le istanze di processo aziendale per un record dell'entità in tutte le definizioni di processi aziendali. Le istanze del processo aziendale restituite per un'entità vengono ordinate in base all'attributo modifiedon per l'istanza. Ad esempio, l'istanza del processo aziendale modificata più di recente sarà il primo record della raccolta restituita. L'istanza di processo aziendale modificata più di recente è quella attiva nell'interfaccia utente per il record dell'entità.

Nel seguente esempio di codice viene illustrato come recuperare le istanze di processo aziendale per un record di entità ed elencare le istanze di processo associate al record di entità:

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"]);
    }
}

I record restituiti dell'istanza di processo aziendale per un record di entità includono anche l'ID della fase attiva nell'attributo processstageid che può essere utilizzato per trovare la fase attiva e quindi passare alla fase successiva o precedente. A tale scopo, devi prima trovare il percorso attivo di un'istanza di processo aziendale e le fasi disponibili dell'istanza di processo utilizzando RetrieveActivePath Function o RetrieveActivePathRequest. Nel seguente esempio di codice viene illustrato come recuperare le fasi di processo nel percorso attivo di un'istanza di processo aziendale e la fase attiva dell'istanza:

// 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 volta avute le informazioni sulla fase attiva e su percorso attivo di un'istanza di processo aziendale, utilizza le informazioni per passare a una fase precedente o successiva nel percorso attivo. Lo spostamento in avanti delle fasi deve essere svolto in sequenza, ovvero puoi solo procedere alla fase successiva nel percorso attivo. Nel seguente esempio di codice viene illustrato come spostarsi alla fase successiva di un'istanza di processo aziendale:

// 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);

Per un esempio completo, vedere Esempio: Utilizzare i processi aziendali.

Applicare il processo aziendale durante la creazione di un record dell'entità

In questa sezione vengono fornite informazioni sul comportamento predefinito per l'applicazione automatica dei processi aziendali a nuovi record dell'entità creati in Customer Engagement e su come è possibile sostituirlo per applicare un processo aziendale desiderato per nuovi record dell'entità.

Per impostazione predefinita, per un'entità con più processi aziendali correlati definiti, il sistema applica un processo aziendale nel nuovo record dell'entità utilizzando la logica a più passaggi seguenti:

  1. Individua i processi aziendali applicabili al nuovo record dell'entità in base all'attributo Workflow.PrimaryEntity dei record della definizione dei processi aziendali.

  2. Identifica le definizioni del processo aziendale a cui ha accesso l'utente corrente. Per informazioni su come viene determinato e gestito l'accesso a un processo aziendale, vedi Gestire la sicurezza per i processi aziendali in precedenza in questo argomento.

  3. Tutte le definizioni del processo aziendale nel sistema sono soggette a un ordine globale per entità. L'ordine del processo aziendale è memorizzato nell'attributo Workflow.ProcessOrder. Le definizioni del processo aziendale per un'entità sono ordinate in base a questo ordine e viene selezionata la definizione con il valore di ordinamento inferiore.

  4. Infine, se il record dell'entità viene creato da un'app aziendale (modulo dell'app), un ulteriore livello di filtro viene applicato per selezionare il processo aziendale da applicare automaticamente al nuovo record dell'entità. Quando lavorano in un'app, gli utenti possono accedere solo a entità, processi aziendali, visualizzazioni e moduli pertinenti per cui dispongono di accesso in virtù dei ruoli di sicurezza assegnati nell'app aziendale.

    • Se l'app aziendale non contiene alcun processo aziendale, viene applicato il processo aziendale come descritto fino al passaggio 3.

    • Se l'app aziendale include uno o più processi aziendali, sarebbero applicabili solo i processi aziendali presenti nell'app. In questo caso, quando l'utente sta lavorando in un contesto dell'app aziendale, l'elenco dei processi aziendali del passaggio 3 viene filtrato ulteriormente rispetto ai processi che fanno parte dell'app aziendale che sono presenti nel modulo dell'app e ordinati in base all'ordine di elaborazione.

    • Se in un'app aziendale non è disponibile alcun processo aziendale per l'entità o per cui l'utente ha accesso, nessun processo aziendale viene applicato per il nuovo record dell'entità.

È possibile sostituire il comportamento predefinito del processo aziendale che viene applicato automaticamente ai nuovi record dell'entità. A tale scopo, imposta l'attributo ProcessId dell'entità su uno dei valori seguenti durante la creazione di un nuovo record dell'entità:

  • Imposta su Guid.Empty per ignorare l'impostazione di un processo aziendale per nuovi record dell'entità. Potresti scegliere questa operazione se stai effettuando una creazione di massa di record dell'entità, ma non vuoi che venga applicato il processo aziendale a questi record.

  • Imposta un'entità specifica del processo aziendale (come riferimento dell'entità). In questo caso, il sistema applicherà il processo aziendale specificato anziché la logica predefinita.

Se non imposti un valore per l'attributo ProcessId durante la creazione di un nuovo record dell'entità, il sistema applicherà la logica predefinita come descritto in precedenza.

Nota

La sostituzione del comportamento predefinito del processo aziendale che viene applicato automaticamente ai nuovi record dell'entità è supportata solo a livello di programmazione. Non è possibile eseguire questa operazione utilizzando l'interfaccia utente.

Supporto di programmabilità lato client per processi aziendali

Con Dynamics 365 c'è un oggetto sul lato client che è possibile utilizzare per l'interazione con i processi aziendale dagli script. I processi aziendali attivano eventi lato client ogni volta che un processo viene applicato a un record, la fase viene modificata o il relativo stato viene modificato in Active, Finished o Aborted.Ulteriori informazioni:Scrivere gli script per i processi aziendali

Numero massimo di processi, fasi e procedure

Per un'entità, il valore predefinito per il numero massimo di flussi aziendale attivati è 10. È possibile specificare un valore diverso utilizzando l'attributo Organization.MaximumActiveBusinessProcessFlowsAllowedPerEntity. Tuttavia, se il valore è maggiore di 10, è possibile notare una diminuzione nelle prestazioni del sistema quando si cambiano processi o si apre un record con un processo aziendale assegnato. Questo problema diventa più rilevante se i processi si estendono su più entità.

Le impostazioni seguenti non sono personalizzabili:

  • Il numero massimo di fasi per entità nel processo è 30.

  • Il numero massimo di procedure in ogni fase è 30.

  • Il numero massimo di entità che possono partecipare al flusso di processo è 5.

Vedere anche

Video: Processo aziendale in Microsoft Dynamics CRM 2015
Categorie di processo Dynamics 365
Automatizzare i processi aziendali utilizzando il processo Dynamics 365
Creazione di flussi di lavoro in tempo reale
Abilitazione del processo con Microsoft Dynamics CRM 2013
Guida e formazione: Creare un nuovo processo aziendale
Guida e formazione: Assegnare un ruolo di sicurezza a un processo aziendale
Guida e formazione: Guidare il personale attraverso le attività comuni con i processi
Guida e formazione: Aggiungere processi aziendali pronti all'uso
TechNet: Processi aziendali
Scrivere gli script per i processi aziendali

Microsoft Dynamics 365

© 2017 Microsoft. Tutti i diritti sono riservati. Copyright