Del via


Oprette arbejdsprocesser i realtid

 

Udgivet: januar 2017

Gælder for: Dynamics 365 (online), Dynamics 365 (on-premises), Dynamics CRM 2016, Dynamics CRM Online

På samme måde som asynkrone arbejdsprocesser kan arbejdsprocesser i realtid bruges til at modellere og automatisere forretningsprocesser i virkelighedens verden. De kan eventuelt kræve brugerinput, kan starte automatisk på baggrund af angivne hændelsesbetingelser eller kan startes manuelt af en bruger. Arbejdsprocesser i realtid er til erhvervsbrugere, for eksempel forretningsanalytikere, til at gennemføre lignende funktionalitet til synkrone plug-ins uden at skulle have .NET Framework-erfaring med programmering. Du kan oprette asynkrone arbejdsprocesser eller arbejdsprocesser i realtid i Microsoft Dynamics 365-webprogrammet eller i kode.

Nogle vigtige ting om en arbejdsproces i realtid inkluderer følgende elementer:

  • Defineres ved hjælp af en Workflow-objektpost, der ligner en asynkron arbejdsproces.

  • Udføres i et trin i hændelsens kørselsrækkefølge, lige som synkrone plug-ins. Arbejdsprocessen i realtid kan udføres før (starthandling), efter (efterfølgende handling) eller under kernehandlingen. En arbejdsproces i realtid, der er udført under kernehandlingen, er gennemførelsen af en brugerdefineret handling. Arbejdsprocesser i realtid kan placeres i en fase, ligesom du kan gøre med plug-ins.Flere oplysninger:Pipelinefaser

  • Uanset om den er konfigureret til at køre efter behov eller som svar på en hændelse, kører en arbejdsproces i realtid med det samme i stedet for at blive sat i kø for at køre på et senere tidspunkt.

  • Kan køre i sikkerhedskonteksten for en bruger, der er logget ind, eller ejeren af arbejdsprocessen. Arbejdsprocesser, der er indstillet til at køre efter behov, kører dog altid i sikkerhedskonteksten for den bruger, der er logget på.

  • Kan ikke indeholde forsinkelser eller venteaktiviteter.

  • Logfører kun fejl og kun, når logføring er aktiveret.

  • Udføres i den aktuelle transaktion. Alle aktiviteter i arbejdsprocessen og eventuelle underordnede arbejdsprocesser, undtagen asynkrone arbejdsprocesser, er en del af en enkelt transaktion. Asynkrone underordnede arbejdsprocesser er sat i kø og køres i en separat transaktion.

  • Kan konverteres til en asynkron arbejdsproces og tilbage til realtid.

Dette emne indeholder

Påkrævede sikkerhedsrettigheder

Oprette en arbejdsproces i realtid i kode

Konvertere en asynkron arbejdsproces til realtid og tilbage igen

Håndtering af fejl og annullering

Pakke en arbejdsproces i realtid til distribution

Påkrævede sikkerhedsrettigheder

Der kræves en sikkerhedsrettighed med navnet Aktivér processer i realtid (prvActivateSynchronousWorkflow) for at aktivere arbejdsprocesser i realtid, så de kan udføres. Rettigheden Udfør arbejdsprocesjob (prvWorkflowExecution) kræves for at starte arbejdsprocessen. Da en arbejdsproces i realtid påvirker kernesystemhandlingen, anbefales det, at kun en mindre erfaren gruppe af brugere er tildelt aktiveringsrettigheden.

Yderligere oplysninger om disse rettigheder finder du under fanen Tilpasning.

Oprette en arbejdsproces i realtid i kode

Mens Microsoft Dynamics 365 (online) understøtter arbejdsprocesser i realtid, skal de oprettes interaktivt i webprogrammet. XAML-baserede arbejdsprocesser, som er beskrevet i dette afsnit, understøttes kun af en lokal server eller IFD-server. Du kan finde flere oplysninger om XAML-arbejdsprocesser under Brugerdefinerede XAML-arbejdsprocesser.

Du kan oprette en arbejdsproces i realtid i kode ved at oprette en Workflow-objektpost. Gennemgå Workflow-objektets attributmetadata ved hjælp af værktøjet Metadatabrowser eller regnearket EntityMetadata.xlsx i SDK-pakken.Du kan få vist objektmetadataene for din virksomhed ved at installere Metadata-browserløsningen, der er beskrevet i Gennemse metadata for organisationen. Du kan også få vist metadataene for en ikke-tilpasset virksomhed i Excel-filen kaldet EntityMetadata.xlsx, der findes i den øverste mappe i SDK download. Hent SDK-pakken til Microsoft Dynamics CRM.

I følgende eksempel sammenlignes kode, der opretter en asynkron arbejdsproces, med kode, der opretter en arbejdsproces i realtid.


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

Arbejdsprocessen i realtid har nogle yderligere egenskaber, som den asynkrone arbejdsproces ikke har:

Attribut for arbejdsproces

Beskrivelse

Category

Indstillet til WorkflowCategory.Workflow.

RunAs

Angiver at køre arbejdsprocessen i sikkerhedskonteksten af ejeren af arbejdsprocessen (workflow_runas.Owner) eller brugeren, der er logget på (workflow_runas.CallingUser).

SyncWorkflowLogOnError

Når true logges fejl til ProcessSession-poster. I modsætning til asynkrone arbejdsprocesser logges udførelse af arbejdsproces ikke til System Job-poster.

CreateStage, DeleteStage eller UpdateStage

Identificerer fasen i hændelsens kørselsrækkefølge, hvor arbejdsprocessen er at køre: før kernehandlingen (workflow_stage.Preoperation), eller efter (workflow_stage.Postoperation). Du skal matche fasen i udløserhændelsen for den påtænkte handling. Hvis f.eks. TriggerOnUpdate er true, skal du også indstille UpdateStage.

Arbejdsprocesser i realtid kan ikke udføres på hentninger. Udover hentninger knyttes resten af de understøttede webtjenestemeddelelser til én af følgende tre understøttede hændelser. En handling for tildeling eller angivelse af en tilstand er f.eks. i realiteten det samme som en opdatering.

Mode

Dette er i kørselstilstanden. Indstil denne til WorkflowMode.Realtime.

Rank

Du kan bestille kørsel af plug-ins og arbejdsprocesser i realtid inden for en fase ved at angive en rang. Alle plug-ins eller arbejdsprocesser i realtid med placeringen 1 udføres før dem med placeringen 2 osv.

Xaml

Indstillet til den XAML-kode, der definerer arbejdsprocessen i realtid.

Du kan se hele eksempelkoden til oprettelse af en arbejdsproces i realtid i emnet Eksempel: Opret en arbejdsproces i realtid i kode.

Konvertere en asynkron arbejdsproces til realtid og tilbage igen

Du kan konvertere arbejdsprocesser fra asynkron til realtid og tilbage ved hjælp af UpdateRequest uden at opdatere arbejdsprocessen, så længe den asynkrone arbejdsproces ikke indeholder nogen ventende eller forsinkende aktiviteter. Du kan også gøre konverteringen interaktivt ved hjælp af webprogrammet. Arbejdsprocessen skal være i kladdetilstand (ikke aktiveret), før konverteringen er udført.

Konvertere en asynkron arbejdsproces til realtid

  1. Opret en UpdateRequest for arbejdsprocessen.

  2. Angiv arbejdsprocessens Mode-egenskab til WorkflowMode.Realtime.

  3. Angiv arbejdsprocessens CreateStage, UpdateStage eller DeleteStage efter behov. Hvis din arbejdsproces f.eks. har TriggerOnDelete indstillet, skal du også angive egenskaben DeleteStage.

  4. Kald metoden Execute, der overfører opdateringsanmodningen som en parameter.

Konverter en arbejdsproces i realtid til asynkron

  1. Opret en UpdateRequest for arbejdsprocessen.

  2. Angiv arbejdsprocessens Mode-egenskab til WorkflowMode.Background.

  3. Kald metoden Execute, der overfører opdateringsanmodningen som en parameter.

Håndtering af fejl og annullering

Al arbejdsprocesaktivitet, der køres under databasetransaktionen, og som sender en undtagelse tilbage til platformen, annullerer kernehandlingen. Dette resulterer i annullering af kernehandlingen, hvis den allerede er opstået. En før hændelse eller efterfølgende hændelse registrerer desuden plug-ins eller arbejdsprocesser i realtid, der endnu ikke er blevet udført. Eventuelle asynkrone arbejdsprocesser, der udløses af den samme hændelse, bliver ikke udført.

Hvis du medtager en stopaktivitet af arbejdsprocessen (TerminateWorkflow-klasse) med den annullerede indstilling i arbejdsprocessen, kan du tilføje en brugerdefineret statusmeddelelse (Reason-egenskab) til den aktivitet, der indeholder en enkelt tekstlinje, der skal vises for brugeren i dialogboksen Fejl i forretningsproces.

Når SyncWorkflowLogOnError er angivet til true, bliver fejl i arbejdsprocesser i realtid logført i ProcessSession-objektposter.

Pakke en arbejdsproces i realtid til distribution

For at distribuere din arbejdsproces, så den kan importeres til en Microsoft Dynamics 365-organisation, skal du tilføje din arbejdsproces til en Microsoft Dynamics 365-løsning. Dette gøres nemt ved hjælp af webprogrammet ved at gå til INDSTILLINGER >TILPASNINGER > Løsninger. Du kan også skrive kode for at oprette en løsning. Du kan få flere oplysninger om løsninger på siden Pakke- og distributionsudvidelser ved hjælp af løsninger.

Se også

Automatisere forretningsprocesser ved hjælp af Dynamics 365-proces
Oprette dine egne handlinger
Pipeline for hændelseskørsel
Skriv plug-ins for at udvide forretningsprocesser

Microsoft Dynamics 365

© 2017 Microsoft. Alle rettigheder forbeholdes. Ophavsret