Delen via


Realtime-werkstromen maken

 

Gepubliceerd: november 2016

Is van toepassing op: Dynamics CRM 2015

Net als asynchrone werkstromen, kunt u realtime-werkstromen gebruiken om echte bedrijfsprocessen te ontwerpen en te automatiseren. Ze kunnen optioneel gebruikerinvoer vereisen, automatisch opstarten basis van opgegeven gebeurtenisvoorwaarden, of kunnen handmatig door een gebruiker worden gestart. De realtime-werkstromen bestaan voor bedrijfsgebruikers, bijvoorbeeld bedrijfsanalisten, om vergelijkbare functionaliteit in synchrone invoegtoepassingen uit te voeren zonder .NET Framework -programmeringservaring. U kunt werkstromen asynchrone of realtime in de Microsoft Dynamics 365 webtoepassing of in code maken.

Enkele belangrijke punten over een realtime-werkstroom zijn de volgende items:

  • Gedefinieerd door een Workflow entiteitsrecord te gebruiken, hebt die lijkt op een asynchrone werkstroom.

  • Wordt uitgevoerd in een fase van de pipeline van de gebeurtenisuitvoering, zoals synchrone invoegtoepassingen. De realtime werkstroom kan uitvoeren voor (pre-bewerking), na (post-bewerking), of tijdens de kernbewerking. Een realtime werkstroom die tijdens kernbewerking wordt uitgevoerd is de implementatie van een aangepaste bewerking. De realtime werkstromen kunnen in een fase worden gerangschikt, net als u met invoegtoepassingen kunt doen.Meer informatie:Pipelinefasen

  • Of geconfigureerd om op aanvraag of als reactie op een gebeurtenis, een werkstroom wordt direct uitgevoerd in plaats van in een wachtrij geplaatst om op een later tijdstip uit te voeren.

  • Kan in de beveiligingscontext van de aangemelde gebruiker of eigenaar van de werkstroom worden uitgevoerd. Echter, werkstromen uitvoeren op aanvraag worden altijd uitgevoerd onder de beveiligingscontext van de aangemelde gebruiker.

  • Kan geen vertraging bevatten of wachtactiviteiten bevatten.

  • Registreert alleen fouten, en alleen wanneer de logboekregistratie is ingeschakeld.

  • Voert in de huidige transactie uit. Alle activiteiten in de werkstroom en eventuele onderliggende workflows, behalve asynchrone werkstromen, maken deel uit van een enkele transactie. De onderliggende asynchrone workflows worden in de wachtrij geplaatst en in een afzonderlijke transactie uitgevoerd.

  • Kan naar een asynchrone werkstroom en weer terug in realtime worden geconverteerd.

In dit onderwerp

Vereiste beveiligingsrechten

Maak een realtime werkstroom in code

Converteert een asynchrone werkstroom naar realtime en terug.

Fout in afhandeling en terugdraaien

Verpak een realtime werkstroom voor distributie

Vereiste beveiligingsrechten

Een veiligheidsbevoegdheid genaamd Activeer realtimeprocessen (prvActivateSynchronousWorkflow) is vereist om de realtime werkstromen van een actie te activeren zodat deze kunnen worden uitgevoerd. De bevoegdheid Werkstroomtaak uitvoeren (prvWorkflowExecution) is vereist om de werkstroom te starten. Omdat een werkstroom de werking van het kernsysteem beïnvloedt, is het aan te raden dat alleen een kleine groep ervaren gebruikers de activeringsbevoegdheid wordt toegewezen.

Voor meer informatie over deze bevoegdheden raadpleegt u Aanpassing.

Maak een realtime werkstroom in code

Hoewel Microsoft Dynamics CRM Online realtime werkstromen ondersteunt, moeten ze interactief zijn gemaakt in de Webtoepassing. De op XAML gebaseerde werkstromen, in deze sectie besproken, zijn alleen ondersteund door een on-premises of IFD-server. Zie Aangepaste XAML-werkstromen voor meer informatie over XAML-werkstromen.

U kunt een realtime werkstroom maken in code door een Workflow entiteitsrecord te maken. Bekijk de kenmerkmetagegevens van de entiteit Workflow met het hulpprogramma voor de Metagegevensbrowser of het EntityMetadata.xlsx-werkblad in het SDK-pakket.Als u de metagegevens van de entiteit voor uw organisatie wilt bekijken, installeert u de oplossing Metadata Browser die wordt beschreven in Blader door de metagegevens voor uw organisatie. U kunt ook metagegevens weergeven voor een niet-aangepaste organisatie in het Excel-bestand EntityMetadata.xlsx, in de bovenste map van SDK download. Download het Microsoft Dynamics CRM SDK-pakket.

Het volgende voorbeeld vergelijkt een code die een asynchrone werkstroom maakt met code die een realtime werkstroom maakt.


// Create an asynchronous workflow.
// The workflow should execute after a new opportunity is created.
Workflow workflow = new Workflow()
{
    // These properties map to the New Process form settings in the web application.
    Name = "Set closeprobability on opportunity create (async)",
    Type = new OptionSetValue((int)WorkflowType.Definition),
    Category = new OptionSetValue((int)WorkflowCategory.Workflow),
    PrimaryEntity = Opportunity.EntityLogicalName,
    Mode = new OptionSetValue((int)WorkflowMode.Background),

    // Additional settings from the second New Process form.
    Description = @"When an opportunity is created, this workflow" +
        " sets the closeprobability field of the opportunity record to 40%.",
    OnDemand = false,
    Subprocess = false,
    Scope = new OptionSetValue((int)WorkflowScope.User),
    TriggerOnCreate = true,
    AsyncAutoDelete = true,
    Xaml = xamlWF,

    // Other properties not in the web forms.
    LanguageCode = 1033,  // U.S. English                        
};
_workflowId = _serviceProxy.Create(workflow);

// Create a real-time workflow. 
// The workflow should execute after a new opportunity is created
// and run in the context of the logged on user.
Workflow workflow = new Workflow()
{
    // These properties map to the New Process form settings in the web application.
    Name = "Set closeprobability on opportunity create (real-time)",
    Type = new OptionSetValue((int)WorkflowType.Definition),       
    Category = new OptionSetValue((int)WorkflowCategory.Workflow),
    PrimaryEntity = Opportunity.EntityLogicalName,
    Mode = new OptionSetValue((int)WorkflowMode.Realtime),

    // Additional settings from the second New Process form.
    Description = @"When an opportunity is created, this workflow" +
        " sets the closeprobability field of the opportunity record to 40%.",
    OnDemand = false,
    Subprocess = false,
    Scope = new OptionSetValue((int)WorkflowScope.User),
    RunAs = new OptionSetValue((int)workflow_runas.CallingUser),
    SyncWorkflowLogOnFailure = true,
    TriggerOnCreate = true,
    CreateStage = new OptionSetValue((int)workflow_stage.Postoperation),
    Xaml = xamlWF,

    // Other properties not in the web forms.
    LanguageCode = 1033,  // U.S. English
};
_workflowId = _serviceProxy.Create(workflow);

De realtime werkstroom heeft enkele aanvullende eigenschappen ingesteld die de asynchrone werkstroom niet heeft:

Werkstroomkenmerk

Beschrijving

Category

instellen op WorkflowCategory.Workflow.

RunAs

Geeft op dat de werkstroom onder de beveiligingscontext van de werkstroomeigenaar (workflow_runas.Owner), of aangemelde gebruiker (workflow_runas.CallingUser) uit wordt gevoerd.

SyncWorkflowLogOnError

Wanneer true, worden fouten naar ProcessSession records opgeslagen. In tegenstelling tot asynchrone werkstromen, wordt de realtime-werkstroomuitvoering hebt niet geregistreerd System Job aan records.

CreateStage, DeleteStage of UpdateStage

Identificeert de fase in de pipeline van de gebeurtenisuitvoering waarop de werkstroom moet worden uitgevoerd: vóór de kernbewerking (workflow_stage.Preoperation), of na (workflow_stage.Postoperation). U moet de fase aan de triggergebeurtenis voor de bedoelde werking aanpassen. Als bijvoorbeeld true, TriggerOnUpdate is, moet u ook UpdateStage instellen.

De realtime werkstromen kunnen niet worden uitgevoerd op wat wordt opgehaald. De rest van de ondersteunde webservicesberichten, behalve die worden opgehaald, wijzen aan een van deze drie ondersteunde gebeurtenissen toe. Een status toewijzen of instellen is in wezen hetzelfde als een update.

Mode

Dit is de uitvoeringsmodus. Stel dit in naar WorkflowMode.Realtime.

Rank

U kunt de uitvoering van invoegtoepassingen en werkstromen in realtime in een fase orderen door een rang in te stellen. Alle werkstromen of invoegtoepassingen met een rang van 1 uitvoeren voor degene met een rang van 2, enzovoort.

Xaml

Ingesteld op de XAML-code die de realtimewerkstroom van uw actie definieert.

U kunt de volledige voorbeeldcode zien voor het maken van een realtime werkstroom in het onderwerp Voorbeeld: Een realtime-werkstroom in code maken.

Converteert een asynchrone werkstroom naar realtime en terug.

U kunt werkstromen van asynchroon naar realtime en terug converteren met UpdateRequest zonder dat u de werkstroom hoeft te herschrijven, zolang de asynchrone workflow geen wacht- of vertragingsactiviteiten bevat. U kunt de conversie op elkaar inwerkend ook uitvoeren door de Webtoepassing. De werkstroom moet in een conceptstatus (niet-geactiveerd) zijn voordat de conversie wordt uitgevoerd.

Converteert een asynchrone werkstroom naar realtime

  1. Maakt een UpdateRequest voor de werkstroom.

  2. Stel de eigenschap Mode van de werkstroom in op WorkflowMode.Realtime.

  3. Voer de CreateStage, UpdateStage of DeleteStage van de werkstroom zoals geschikt in. Bijvoorbeeld, als uw werkstroom TriggerOnDelete heeft ingesteld, stel dan ook de eigenschap. DeleteStage in.

  4. Noem de Execute methode die de updateaanvraag doorgeeft als parameter.

Converteer een realtime-werkstroom naar ansynchroon

  1. Maakt een UpdateRequest voor de werkstroom.

  2. Stel de eigenschap Mode van de werkstroom in op WorkflowMode.Background.

  3. Noem de Execute methode die de updateaanvraag doorgeeft als parameter.

Fout in afhandeling en terugdraaien

Een werkstroomactiviteit die wordt uitgevoerd tijdens de databasetransactie en die een uitzondering teruggeeft aan het platform, annuleert de kernbewerking. Dit resulteert in het terugdraaien van de kernbewerking als deze al heeft plaatsgevonden. Daarnaast elke gebeurtenis of invoegtoepassing geregistreerd na de gebeurtenis of in realtime werkstromen die nog niet zijn uitgevoerd. Alle asynchrone werkstromen die door dezelfde gebeurtenise zijn geactiveerd worden niet uitgevoerd.

Als u een activiteit van de workflow stoppen (TerminateWorkflow-klasse) met de optie geannuleerd opneemt in de werkstroom, kunt u een aangepast statusbericht (Reason eigenschap) aan de activiteit toevoegen die één regel tekst bevat die voor de gebruiker in het dialoogvenster Fout met bedrijfsproces moet worden weergegeven.

Wanneer SyncWorkflowLogOnError is ingesteld als true, worden werkstroomfouten gemeld in ProcessSession entiteitsrecords.

Verpak een realtime werkstroom voor distributie

Om uw werkstroom te distribueren zodat het in een Microsoft Dynamics 365 organisatie kan worden geïmporteerd, voegt u uw werkstroom toe aan een Microsoft Dynamics 365 - oplossing. Dit is gemakkelijk met de webtoepassing door naar INSTELLINGEN > AANPASSINGEN > Oplossingen te gaan. U kunt ook code schrijven om de oplossing te maken. Raadpleeg Uitbreidingen inpakken en verdelen met oplossingen voor meer informatie over oplossingen.

Zie ook

Werkstromen schrijven om bedrijfsprocessen te automatiseren
Uw eigen acties maken
Pipeline voor gebeurtenisuitvoering
Invoegtoepassingen schrijven om bedrijfsprocessen uit te breiden

© 2017 Microsoft. Alle rechten voorbehouden. Auteursrecht