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.
Funkcionalnost sustava Dynamics 365 Customer Engagement (on-premises) možete proširiti stvaranjem prilagođenih poruka poznatih kao akcije. Te će akcije imati pridružene klase zahtjeva/odgovora i generirat će se akcija web-API-ja. Akcije se obično koriste za dodavanje novih funkcija specifičnih za domenu web-servisu tvrtke ili ustanove ili za kombiniranje više zahtjeva za porukama web-servisa tvrtke ili ustanove u jedan zahtjev. Na primjer, u pozivnom centru za podršku možda ćete htjeti kombinirati poruke Stvori, Dodijeli i Postavi stanje u jednu novu poruku Eskalira.
Poslovna logika radnje implementira se pomoću tijeka rada. Kada stvorite akciju, pridruženi tijek rada u stvarnom vremenu automatski se registrira za izvršavanje u fazi 30 (osnovna operacija) izvršnog kanala. Dodatne informacije o tijekovima rada u stvarnom vremenu potražite u odjeljku Vrste tijeka rada.
Iako su akcije podržane u sustavu Dynamics 365 for Customer Engagement, stvaranje akcije u kodu (pomoću XAML-a) podržavaju samo lokalne i IFD implementacije. Korisnici na mreži moraju interaktivno stvarati akcije u web-aplikaciji.
O definicijama akcija
Akcija se definira pomoću zapisa entiteta Workflow
, slično tijeku rada u stvarnom vremenu. Neke ključne točke o tome što je radnja i kako funkcionira nalaze se na sljedećem popisu:
Može biti povezan s jednim entitetom ili biti globalan (nije povezan ni s jednim određenim entitetom).
Izvršava se u osnovnoj fazi operacije 30 cjevovoda izvršenja događaja.
Podržava pozivanje dodataka registriranih u fazama prije i nakon operacije cjevovoda za izvršavanje događaja.
Dodaci mogu biti registrirani u fazama prije ili nakon operacije samo kada je status radnje Aktivirano.
Dostupan je putem web-API-ja ili
organization.svc
krajnjihorganization.svc/web
točaka.Može se izvršiti pomoću JavaScript web resursa. Dodatne informacije: Izvršavanje radnje pomoću JavaScript web-resursa
Uvijek se pokreće u sigurnosnom kontekstu korisnika koji poziva.
Zapis se ne može izbrisati dok su u akciji registrirani koraci dodatka.
Po želji, putem konfiguracijske postavke, može sudjelovati u trenutnoj transakciji baze podataka.
Ne podržava opseg u kojem je izvršavanje ograničeno na korisnika, poslovnu jedinicu ili tvrtku ili ustanovu. Akcije se uvijek izvršavaju u opsegu organizacije.
Podržava ulazne i izlazne argumente.
Podržava reviziju promjena podataka.
Nije podržano s izvanmrežnim klijentima.
Može se pozvati pozivom metode web servisa.
Može se pozvati izravno iz tijeka rada.
Potrebne dozvole
Sigurnosna privilegija pod nazivom Aktiviraj procese u stvarnom vremenu (prvActivateSynchronousWorkflow
) potrebna je za aktiviranje tijeka rada radnje u stvarnom vremenu kako bi se mogla izvršiti. To je dodatak svim privilegijama potrebnim za stvaranje tijeka rada.
Stvaranje akcije pomoću koda
Obično bi akciju implementirao alat za prilagodbu pomoću interaktivnog dizajnera tijeka rada web-aplikacije. Međutim, razvojni inženjeri mogu implementirati akcije pomoću SDK poziva i po želji ih implementirati na lokalni ili IFD poslužitelj.
Atributi entiteta tijeka rada koji se koriste za akciju opisani su u sljedećoj tablici. Primjer koda za tijek rada u stvarnom vremenu možete pronaći u temi Stvaranje tijeka rada u stvarnom vremenu u kodu.
Atribut tijeka rada | Opis |
---|---|
Category |
Postavite na WorkflowCategory.CustomOperation . |
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. |
Mode |
Ne koristi se. |
IsTransacted |
Postavite na true ako radnja treba sudjelovati u transakciji baze podataka; u suprotnom, false . Prema zadanim je postavkama true . |
UniqueName |
Jedinstveni naziv za radnju. Naziv se sastoji od prefiksa izdavača + "_" + jedinstvenog naziva. |
Xaml |
Postavite XAML kôd koji definira tijek rada vaše akcije u stvarnom vremenu. Ne postoji način da se upućujemo na drugi postojeći tijek rada u stvarnom vremenu. |
Dodavanje ulaznih i izlaznih argumenata
Akcije podržavaju ulazne i izlazne argumente koji se mogu dodati u tijek rada pomoću vrste DynamicActivityProperty . Kada dodate te argumente u tijek rada akcije, oni postaju svojstva u klasama zahtjeva za porukom i odgovora povezanima s tom akcijom. Na primjer, sljedeći primjer prikazuje C# i XAML kod za dva ulazna i jedan izlazna argumenta.
DynamicActivityProperty inputProperty1 = new DynamicActivityProperty { Name = "Subject", Type = typeof(InArgument<string>) };
DynamicActivityProperty inputProperty2 = new DynamicActivityProperty { Name = "EntityCollection", Type = typeof(InArgument<EntityCollection>) };
DynamicActivityProperty outputProperty1 = new DynamicActivityProperty { Name = "Output", Type = typeof(OutArgument<string>) };
inputProperty1.Attributes.Add(new ArgumentRequiredAttribute(true));
inputProperty1.Attributes.Add(new ArgumentDescriptionAttribute("The subject"));
inputProperty1.Attributes.Add(new ArgumentDirectionAttribute(Microsoft.Xrm.Sdk.Workflow.ArgumentDirection.Input));
inputProperty2.Attributes.Add(new ArgumentRequiredAttribute(false));
inputProperty2.Attributes.Add(new ArgumentDescriptionAttribute("The entity collection"));
inputProperty2.Attributes.Add(new ArgumentDirectionAttribute(Microsoft.Xrm.Sdk.Workflow.ArgumentDirection.Input));
outputProperty1.Attributes.Add(new ArgumentRequiredAttribute(false));
outputProperty1.Attributes.Add(new ArgumentDescriptionAttribute("The output"));
outputProperty1.Attributes.Add(new ArgumentDirectionAttribute(Microsoft.Xrm.Sdk.Workflow.ArgumentDirection.Output));
<x:Property Name="Subject"
Type="InArgument(x:String)">
<x:Property.Attributes>
<mxsw:ArgumentRequiredAttribute Value="True" />
<mxsw:ArgumentTargetAttribute Value="False" />
<mxsw:ArgumentDescriptionAttribute Value="The subject " />
<mxsw:ArgumentDirectionAttribute Value="Input" />
<mxsw:ArgumentEntityAttribute Value="" />
</x:Property.Attributes>
</x:Property>
<x:Property Name="EntityCollection"
Type="InArgument(mxs:EntityCollection)">
<x:Property.Attributes>
<mxsw:ArgumentRequiredAttribute Value="False" />
<mxsw:ArgumentTargetAttribute Value="False" />
<mxsw:ArgumentDescriptionAttribute Value="The entity collection" />
<mxsw:ArgumentDirectionAttribute Value="Input" />
<mxsw:ArgumentEntityAttribute Value="" />
</x:Property.Attributes>
</x:Property>
<x:Property Name="Output"
Type="OutArgument(x:String)">
<x:Property.Attributes>
<mxsw:ArgumentRequiredAttribute Value="False" />
<mxsw:ArgumentTargetAttribute Value="False" />
<mxsw:ArgumentDescriptionAttribute Value="The output" />
<mxsw:ArgumentDirectionAttribute Value="Output" />
<mxsw:ArgumentEntityAttribute Value="" />
</x:Property.Attributes>
</x:Property>
Nazivi koji se koriste za svojstva trebaju biti u skladu s nazivima argumenata jer će generiranje koda definirati te nazive kao svojstva zahtjeva ili odgovora.
Podržane vrste argumenata za ulazne i izlazne argumente prikazane su u sljedećoj tablici.
Vrsta .NET | Vrsta argumenta |
---|---|
System.Int32 | Cjelobrojna |
System.String | Gudački |
EntityReference | Entitetska referenca |
Entity | Entitet |
EntityCollection | Zbirka entiteta |
System.DateTime | DatumVrijeme |
Sustav.Dvostruko | Plutati |
System.Decimal | Decimala |
Money | Novac |
System.Boolean | Booleov |
OptionSetValue | Popis za odabir |
Podržani atributi argumenata navedeni su u sljedećoj tablici.
Atribut argumenta | Opis |
---|---|
ArgumentRequiredAttribute | Označava je li argument obavezan. |
ArgumentDirectionAttribute | Označava je li smjer argumenta ulaz ili izlaz. |
ArgumentDescriptionAttribute | Određuje opis argumenta. |
ArgumentEntityAttribute | Koristi se ako želite proslijediti entitet. |
ArgumentTargetAttribute | Taj se atribut automatski generira ili dodaje. Upućuje na primarni entitet za koji se izvodi tijek rada. Ovaj atribut nije obavezan za globalne akcije. |
Pakiranje akcije za distribuciju
Da biste distribuirali akciju tako da se može uvesti u tvrtku ili ustanovu sustava Dynamics 365 Customer Engagement (on-premises), dodajte akciju u rješenje Customer Engagement. 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.
Generiranje tipova ranog uvezivanja za akciju
Pomoću alata CrmSvcUtil možete generirati klase zahtjeva i odgovora za svoju radnju koju ćete uključiti u kod aplikacije. Međutim, prije nego što generirate ove klase, svakako aktivirajte akciju.
Da biste preuzeli CrmSvcUtil.exe, pogledajte Razvojni alati za Dataverse.
Sljedeći primjer prikazuje oblik za pokretanje alata iz naredbenog retka za lokalnu instalaciju sustava Customer Engagement. Unosite vrijednosti parametara za svoju instalaciju.
CrmSvcUtil.exe /url:https://<serverName>/<organizationName>/XRMServices/2011/Organization.svc /out:<outputFilename>.cs /username:<username> /password:<password> /domain:<domainName> /namespace:<outputNamespace> /serviceContextName:<serviceContextName> /generateActions
Sljedeći primjer prikazuje oblik za pokretanje alata iz naredbenog retka sa sustavom Dynamics 365 for Customer Engagement. Unosite vrijednosti parametara koje odgovaraju vašem računu i poslužitelju.
CrmSvcUtil.exe /url:https://<organizationUrlName>.api.crm.dynamics.com/XRMServices/2011/Organization.svc /out:<outputFilename>.cs /username:<username> /password:<password> /namespace:<outputNamespace> /serviceContextName:<serviceContextName> /generateActions
Obratite pažnju na upotrebu parametra /generateActions
. Dodatne informacije: Stvaranje klasa rano vezanih entiteta pomoću alata za generiranje koda (CrmSvcUtil.exe).
Možete koristiti rano ili kasno vezane vrste s generiranim klasama zahtjeva i odgovora za svoju akciju.
Izvršavanje radnje pomoću web-API-ja
Nova akcija stvara se u Web API-ju kada je stvorena. Ako je akcija stvorena u kontekstu entiteta, ona je vezana za taj entitet. Inače je to nevezana radnja. Dodatne informacije: Korištenje radnji web-API-ja.
Izvršavanje radnje pomoću JavaScript web-resursa
Akcija se može izvršiti pomoću Web API-ja kao i svaka radnja sustava. Više informacija: Xrm.WebApi.online.execute
Izvršavanje akcije pomoću usluge tvrtke ili ustanove
Da biste izvršili akciju pomoću web-servisa tvrtke ili ustanove pomoću upravljanog koda, slijedite ove korake.
Uključite datoteku rano uvezanih tipova koju ste generirali pomoću alata CrmSvcUtil u projekt svoje aplikacije.
U kodu aplikacije instancirajte zahtjev svoje akcije i popunite sva potrebna svojstva.
Invoke Execute, prosljeđujući svoj zahtjev kao argument.
Prije pokretanja koda aplikacije, provjerite je li akcija aktivirana. U suprotnom ćete primiti pogrešku tijekom izvođenja.
Izvršavanje radnje pomoću procesa
Akciju možete izvršiti iz tijekova rada, dijaloških okvira ili drugih radnji procesa. Aktivirane prilagođene akcije dostupne su procesima odabirom stavke Izvedi radnju na padajućem izborniku Dodaj korak obrasca procesa web-aplikacije. Nakon što se korak doda u proces, možete odabrati novu prilagođenu akciju (ili bilo koju radnju) s popisa akcija navedenog u koraku. Odaberite Postavi svojstva u koraku da biste odredili sve ulazne parametre koje vaša prilagođena akcija zahtijeva.
Napomena
Ako prilagođena akcija ima nepodržane vrste parametara, na primjer Popis za odabir, Entitet ili Zbirka entiteta, prilagođena akcija nije navedena na popisu Akcija .
Mogućnost izvršavanja akcije iz procesa uvedena je u sustavu Dynamics CRM Online 2015 Update 1.
Postojeće Depth provjere platforme osiguravaju da se ne dogodi beskonačna petlja. Za više informacija o ograničenjima dubine pogledajte MaxDepth.
Pazite na dugotrajne akcije
Ako je jedan od koraka u tijeku rada akcije u stvarnom vremenu prilagođena aktivnost tijeka rada, ta se prilagođena aktivnost tijeka rada izvršava unutar izoliranog okruženja za vrijeme izvođenja testnog okruženja i podliježe ograničenju vremenskog ograničenja od dvije minute, slično kao što se upravlja dodacima za testiranje. Međutim, ne postoje ograničenja u pogledu ukupnog vremena koje sama radnja može potrajati. Osim toga, ako akcija sudjeluje u transakciji, gdje je omogućeno vraćanje, primjenjivat će se vremenska ograničenja sustava SQL Server.
Savjet
Preporuka najbolje prakse je da se dugotrajne operacije trebaju izvršavati izvan sustava Dynamics 365 Customer Engagement (on-premises) pomoću .NET asinkronih ili pozadinskih procesa.
Pogledajte
Stvaranje tijekova rada u stvarnom vremenu
Korištenje dijaloškog okvira za vođene procese
Kanal za izvršavanje događaja
Napišite tijekove rada za automatizaciju poslovnih procesa
Prilagodite svoj sustav