Oprette arbejdsprocesser i realtid
Udgivet: november 2016
Gælder for: Dynamics CRM 2015
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 CRM 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
Opret en UpdateRequest for arbejdsprocessen.
Angiv arbejdsprocessens Mode-egenskab til WorkflowMode.Realtime.
Angiv arbejdsprocessens CreateStage, UpdateStage eller DeleteStage efter behov. Hvis din arbejdsproces f.eks. har TriggerOnDelete indstillet, skal du også angive egenskaben DeleteStage.
Kald metoden Execute, der overfører opdateringsanmodningen som en parameter.
Konverter en arbejdsproces i realtid til asynkron
Opret en UpdateRequest for arbejdsprocessen.
Angiv arbejdsprocessens Mode-egenskab til WorkflowMode.Background.
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å
Skriv arbejdsprocesser til automatisering af forretningsprocesser
Oprette dine egne handlinger
Pipeline for hændelseskørsel
Skriv plug-ins for at udvide forretningsprocesser
© 2017 Microsoft. Alle rettigheder forbeholdes. Ophavsret