Napomena
Za pristup ovoj stranici potrebna je autorizacija. Možete se pokušati prijaviti ili promijeniti direktorije.
Za pristup ovoj stranici potrebna je autorizacija. Možete pokušati promijeniti direktorije.
Slično asinkronim tijekovima rada, tijekovi rada u stvarnom vremenu mogu se koristiti za modeliranje i automatizaciju poslovnih procesa u stvarnom svijetu. Po želji mogu zahtijevati korisnički unos, mogu se automatski pokrenuti na temelju određenih uvjeta događaja ili ih korisnik može pokrenuti ručno. Tijekovi rada u stvarnom vremenu namijenjeni su poslovnim korisnicima, na primjer poslovnim analitičarima, za implementaciju sličnih funkcija sinkronim dodacima bez potrebe za iskustvom programiranja .NET Frameworka. Možete stvoriti asinkrone tijekove rada ili tijekove rada u stvarnom vremenu u web-aplikaciji Dynamics 365 Customer Engagement (on-premises) ili u kodu.
Neke ključne točke o tijeku rada u stvarnom vremenu uključuju sljedeće stavke:
Definirano pomoću zapisa entiteta
Workflow
, slično asinkronom tijeku rada.Izvršava se u fazi kanala za izvršavanje događaja, slično sinkronim dodacima. Tijek rada u stvarnom vremenu može se izvršiti prije (prije operacije), nakon (nakon operacije) ili tijekom osnovne operacije. Tijek rada u stvarnom vremenu koji se izvršava tijekom osnovne operacije je implementacija prilagođene radnje. Tijekovi rada u stvarnom vremenu mogu se rangirati unutar faze baš kao što to možete učiniti s dodacima. Dodatne informacije: Kanal za izvršavanje događaja
Bez obzira na to je li konfiguriran za pokretanje na zahtjev ili kao odgovor na događaj, tijek rada u stvarnom vremenu pokreće se odmah, umjesto da se stavlja u red čekanja za kasnije izvođenje.
Može se pokrenuti u sigurnosnom kontekstu prijavljenog korisnika ili vlasnika tijeka rada. Međutim, tijekovi rada postavljeni za pokretanje na zahtjev uvijek se izvode u sigurnosnom kontekstu prijavljenog korisnika.
Ne može sadržavati aktivnosti kašnjenja ili čekanja.
Bilježi samo pogreške i samo kada je omogućeno zapisivanje.
Izvršava se u trenutnoj transakciji. Sve aktivnosti u tijeku rada i svi podređeni tijekovi rada, osim asinkronih tijekova rada, dio su jedne transakcije. Asinhroni podređeni tijekovi rada stavljaju se u red čekanja i izvršavaju se u zasebnoj transakciji.
Može se pretvoriti u asinkroni tijek rada i vratiti u stvarno vrijeme.
Potrebne sigurnosne privilegije
Sigurnosna privilegija pod nazivom Aktiviraj procese u stvarnom vremenu (prvActivateSynchronousWorkflow
) potrebna je za aktiviranje tijekova rada u stvarnom vremenu kako bi se mogli izvršavati. Za pokretanje tijeka rada potrebna je privilegija Izvrši posaoprvWorkflowExecution
tijeka rada. Budući da tijek rada u stvarnom vremenu utječe na rad osnovnog sustava, preporučuje se da se privilegiju aktivacije dodijeli samo maloj iskusnoj grupi korisnika.
Stvaranje tijeka rada u stvarnom vremenu u kodu
Iako Dynamics 365 for Customer Engagement podržava tijekove rada u stvarnom vremenu, oni se moraju interaktivno stvoriti u web-aplikaciji. Tijekove rada temeljene na XAML-u, o kojima se govori u ovom odjeljku, podržava samo lokalni ili IFD poslužitelj.
Tijek rada u stvarnom vremenu možete stvoriti u kodu stvaranjem zapisa entiteta Workflow
. Pregledajte Workflow
metapodatke atributa entiteta pomoću alata Preglednik metapodataka. Da biste vidjeli metapodatke entiteta za svoju tvrtku ili ustanovu, instalirajte rješenje preglednika metapodataka opisano u odjeljku Pregledavanje metapodataka za svoju tvrtku ili ustanovu. Također možete pregledati referentnu dokumentaciju za entitete u referenci entiteta.
Sljedeći primjer uspoređuje kod koji stvara asinkroni tijek rada s kodom koji stvara tijek rada u stvarnom vremenu.
// 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);
Tijek rada u stvarnom vremenu ima postavljena neka dodatna svojstva koja asinkroni tijek rada nema:
Atribut tijeka rada | Opis |
---|---|
Category |
Postavite na WorkflowCategory.Workflow . |
RunAs |
Određuje izvršavanje tijeka rada u sigurnosnom kontekstu vlasnika tijeka rada (workflow_runas.Owner ) ili prijavljenog korisnika (workflow_runas.CallingUser ). |
SyncWorkflowLogOnError |
Kada true se pogreške zapisuju u ProcessSession zapise. Za razliku od asinkronih tijekova rada, izvršavanje tijeka rada u stvarnom vremenu ne bilježi se u System Job zapise. |
CreateStage , DeleteStage , ili UpdateStage |
Identificira fazu u kanalu izvršenja događaja u kojoj će se pokrenuti tijek rada: prije osnovne operacije (workflow_stage.Preoperation ) ili nakon (workflow_stage.Postoperation ). Morate uskladiti fazu s događajem okidača za namjeravanu operaciju. Na primjer, ako TriggerOnUpdate je true , morate postaviti UpdateStage i .Tijekovi rada u stvarnom vremenu ne mogu se izvršiti prilikom dohvaćanja. Osim dohvaćanja, ostale podržane poruke web-servisa mapiraju se na jedan od ova tri podržana događaja. Na primjer, operacija dodjele ili postavljanja stanja u konačnici je ista kao i ažuriranje. |
Mode |
Ovo je način izvršenja. Postavite ovo na WorkflowMode.Realtime . |
Rank |
Možete naručiti izvršavanje dodataka i tijekova rada u stvarnom vremenu unutar faze postavljanjem ranga. Svi dodaci ili tijekovi rada u stvarnom vremenu s rangom 1 izvršavaju se prije onih s rangom 2 i tako dalje. |
Xaml |
Postavite XAML kod koji definira vaš tijek rada u stvarnom vremenu. |
Potpuni ogledni kôd za stvaranje tijeka rada u stvarnom vremenu možete vidjeti u temi Uzorak: Stvaranje tijeka rada u stvarnom vremenu u kodu.
Pretvaranje asinkronog tijeka rada u stvarnom vremenu i natrag
Tijekove rada možete pretvoriti iz asinkronog u stvarnom vremenu i unatrag bez UpdateRequest potrebe za ponovnim pisanjem tijeka rada, sve dok asinkroni tijek rada ne sadrži aktivnosti čekanja ili kašnjenja. Pretvorbu možete izvršiti i interaktivno pomoću web aplikacije. Tijek rada mora biti u stanju skice (nije aktiviran) prije izvođenja pretvorbe.
Pretvaranje asinkronog tijeka rada u stvarnom vremenu
Stvorite za UpdateRequest tijek rada.
Postavite svojstvo tijeka rada
Mode
naWorkflowMode.Realtime
.Postavite tijek rada
CreateStage
,UpdateStage
, iliDeleteStage
prema potrebi. Na primjer, ako je vaš tijek rada postavljen,TriggerOnDelete
postaviteDeleteStage
i svojstvo.Nazovite metodu Execute koja prosljeđuje zahtjev za ažuriranje kao parametar.
Pretvaranje tijeka rada u stvarnom vremenu u asinkroni
Stvorite za UpdateRequest tijek rada.
Postavite svojstvo tijeka rada
Mode
naWorkflowMode.Background
.Nazovite metodu Execute koja prosljeđuje zahtjev za ažuriranje kao parametar.
Rukovanje pogreškama i vraćanje
Svaka aktivnost tijeka rada koja se izvršava tijekom transakcije baze podataka i koja prosljeđuje iznimku natrag na platformu poništava osnovnu operaciju. To rezultira vraćanjem osnovne operacije ako se već dogodila. Osim toga, svi registrirani dodaci prije ili poslije događaja ili tijekovi rada u stvarnom vremenu koji se još nisu izvršili. Svi asinkroni tijekovi rada koje pokreće isti događaj neće se izvršiti.
Ako u tijek rada uključite aktivnost zaustavljanja tijeka rada (klasa TerminateWorkflow) s opcijom otkazano, toj aktivnosti možete dodati prilagođenu poruku o statusu (Reason
svojstvo) koja sadrži jedan redak teksta koji će se prikazati korisniku u dijaloškom okviru Pogreška poslovnog procesa .
Kada SyncWorkflowLogOnError
je postavljeno na true
, pogreške tijeka rada u stvarnom vremenu bilježe se u ProcessSession
zapisima entiteta.
Pakiranje tijeka rada u stvarnom vremenu za distribuciju
Da biste distribuirali tijek rada tako da se može uvesti u tvrtku ili ustanovu sustava Dynamics 365 Customer Engagement (on-premises), dodajte tijek rada u rješenje Dynamics 365 Customer Engagement (on-premises). To se lako radi pomoću web aplikacije tako da odete na POSTAVKE > PRILAGODBE > Rješenja. Također možete napisati kod za stvaranje rješenja. Dodatne informacije o rješenjima potražite u članku Pakiranje i distribucija proširenja.
Pogledajte također
Napišite tijekove rada za automatizaciju poslovnih procesa
Stvaranje vlastitih radnji
Kanal za izvršavanje događaja
Napišite Plug-Ins za proširenje poslovnih procesa