Brug Web API-handlinger
Udgivet: januar 2017
Gælder for: Dynamics 365 (online), Dynamics 365 (on-premises), Dynamics CRM 2016, Dynamics CRM Online
Handlinger og funktioner repræsenterer handlinger, der kan genbruges, og som du kan udføre ved hjælp af Web-API'en. Brug en POST-anmodning med handlinger, der er angivet i Web API Action Reference, til at udføre handlinger, der har bivirkninger. Du kan også definere brugerdefinerede handlinger, som derefter er tilgængelige, så du kan bruge dem.
Dette emne indeholder
Ubundne handlinger
Bundne handlinger
Brug en brugerdefineret handling
Angive objektparametertype
Ubundne handlinger
Handlinger defineres i d80cfb87-d4f1-4c75-bcc8-4f54d1351e26#bkmk_csdl. Som et eksempel er følgende definitionen af den WinOpportunity Action, der er repræsenteret i CSDL.
<Action Name="WinOpportunity">
<Parameter Name="OpportunityClose" Type="mscrm.opportunityclose" Nullable="false" />
<Parameter Name="Status" Type="Edm.Int32" Nullable="false" />
</Action>
WinOpportunity-handlingen svarer til den WinOpportunityRequest, der bruger organisationstjenesten. Brug denne handling til at indstille tilstanden for en salgsmulighed til Vundet og oprette en opportunityclose EntityType for at registrere hændelsen. Denne handling indeholder ikke en returværdi. Hvis den lykkes, er handlingen fuldført.
OpportunityClose-parameteren kræver en JSON-repræsentation af det opportunityclose-objekt, der skal oprettes i handlingen. Dette objekt skal være relateret til den salgsmulighed, der udsteder opportunityid-navigationsegenskaben med en enkelt værdi. I JSON indstilles dette ved hjælp af @odata.bind-anmærkningen, som forklaret i Tilknyt objekter ved oprettelse.
Status-parameteren skal indstilles til statussen for opportunity, når den er lukket. Du kan finde standardværdien for denne i opportunity EntityType statuscode-egenskaben. Indstillingen Vundet har værdien 3. Du spørger måske dig selv, hvorfor det er nødvendigt at indstille denne værdi, når der er kun én statusårsagsindstilling, der repræsenterer Vundet? Årsagen er, at fordi du kan definere brugerdefinerede statusindstillinger, der repræsenterer en gevinst, f.eks. stor gevinst eller lille gevinst, kan værdien potentielt være forskellige fra 3 i den pågældende situation.
Følgende eksempel er HTTP-anmodning og -svar på opkald til WinOpportunity-handlingen for en salgsmulighed med en opportunityid-værdi på b3828ac8-917a-e511-80d2-00155d2a68d2.
Anmodning
POST cc_WebAPI_ServiceURI/WinOpportunity HTTP/1.1 Accept: application/json Content-Type: application/json; charset=utf-8 OData-MaxVersion: 4.0 OData-Version: 4.0 { "Status": 3, "OpportunityClose": { "subject": "Won Opportunity", "opportunityid@odata.bind": "cc_WebAPI_ServiceURI/opportunities(b3828ac8-917a-e511-80d2-00155d2a68d2)" } }
Svar
HTTP/1.1 204 No Content OData-Version: 4.0
Bundne handlinger
I d80cfb87-d4f1-4c75-bcc8-4f54d1351e26#bkmk_csdl, når et Action-element repræsenterer en bundet handling, har det en IsBound-attribut med værdien true. Det første Parameter-element, der er defineret i handlingen, repræsenterer det objekt, som handlingen er bundet til. Når Type-attributten for parameteren er en samling, er handlingen bundet til en samling af objekter. Som et eksempel er følgende definitionen af den AddToQueue Action, der er repræsenteret i CSDL:
<ComplexType Name="AddToQueueResponse">
<Property Name="QueueItemId" Type="Edm.Guid" Nullable="false" />
</ComplexType>
<Action Name="AddToQueue" IsBound="true">
<Parameter Name="entity" Type="mscrm.queue" Nullable="false" />
<Parameter Name="Target" Type="mscrm.crmbaseentity" Nullable="false" />
<Parameter Name="SourceQueue" Type="mscrm.queue" />
<Parameter Name="QueueItemProperties" Type="mscrm.queueitem" />
<ReturnType Type="mscrm.AddToQueueResponse" Nullable="false" />
</Action>
Den bundne handling svarer til den AddToQueueRequest, der bruges af organisationstjenesten. I Web API'en er denne handling bundet til den queue EntityType, der repræsenterer AddToQueueRequest.DestinationQueueId-egenskaben. Denne handling accepterer flere parametre yderligere og returnerer et AddToQueueResponse ComplexType, der svarer til den AddToQueueResponse, som organisationstjenesten returnerede. Når en handling returnerer en kompleks type, vises definitionen på den komplekse type direkte over handlingen i CSDL'et.
En bundet handling skal aktiveres ved hjælp af en URI for at angive den første værdi for parameteren. Du kan ikke angive den som en navngivet parameterværdi.
Når du aktiverer af en bundet funktion, skal du medtage det fulde navn på funktionen, herunder Microsoft.Dynamics.CRM-navneområdet. Hvis du ikke medtager det fulde navn, vises følgende fejlmeddelelse: Status Code:400 Request message has unresolved parameters.
Følgende eksempel viser, hvordan du føjer et bogstav til en kø ved hjælp af AddToQueue Action. Fordi Target-parametertypen ikke er specifik (mscrm.crmbaseentity), skal du eksplicit angive objekttypen ved hjælp af @odata.type-egenskabsværdien for det fulde navn på objektet, herunder Microsoft.Dynamics.CRM-navneområdet. I dette tilfælde Microsoft.Dynamics.CRM.letter.Flere oplysninger:Angive objektparametertype
Anmodning
POST cc_WebAPI_ServiceURI/queues(56ae8258-4878-e511-80d4-00155d2a68d1)/Microsoft.Dynamics.CRM.AddToQueue HTTP/1.1 Accept: application/json Content-Type: application/json; charset=utf-8 OData-MaxVersion: 4.0 OData-Version: 4.0 { "Target": { "activityid": "59ae8258-4878-e511-80d4-00155d2a68d1", "@odata.type": "Microsoft.Dynamics.CRM.letter" } }
Svar
HTTP/1.1 200 OK Content-Type: application/json; odata.metadata=minimal OData-Version: 4.0 { "@odata.context": "cc_WebAPI_ServiceURI/$metadata#Microsoft.Dynamics.CRM.AddToQueueResponse", "QueueItemId": "5aae8258-4878-e511-80d4-00155d2a68d1" }
Brug en brugerdefineret handling
Hvis du definerer brugerdefinerede handlinger for din organisation eller løsning, medtages de også i d80cfb87-d4f1-4c75-bcc8-4f54d1351e26#bkmk_csdl. Oplysninger om oprettelse af handlinger ved hjælp af tilpasningsværktøjerne i programmet finder du i TechNet-emnet Handlinger. Du kan finde oplysninger om oprettelse og brug af dine egne brugerdefinerede handlinger under Oprette dine egne handlinger.
Uanset om de handlinger, der er inkluderet i din brugerdefinerede handling, har bivirkninger eller ej, kan de potentielt ændre data, og derfor anses de for handlinger frem for funktioner. Det er ikke muligt at oprette en brugerdefineret funktion.
Eksempel på brugerdefineret handling: Føje en note til en kontakt
Lad os sige, at du vil oprette en brugerdefineret handling, der føjer en ny note til en bestemt kontakt. Du kan oprette en brugerdefineret handling, der er bundet til kontaktobjektet, med følgende egenskaber.
UI Label |
Værdi |
---|---|
Procesnavn |
AddNoteToContact |
Entydigt navn |
new_AddNoteToContact |
Objekt |
Kontaktperson |
Kategori |
Handling |
Procesargumenter
Navn |
Type |
Krævet |
Retning |
---|---|---|---|
NoteTitle |
Streng |
Krævet |
Input |
NoteText |
Streng |
Krævet |
Input |
NoteReference |
EntityReference |
Krævet |
Resultat |
Trin
Navn |
Trintype |
Beskrivelse |
---|---|---|
Opret noten |
Opret post |
Titel = {NoteTitle(Arguments)} Notetekst = {NoteText(Arguments)} Angående = {Contact{Contact}} |
Returner en reference til noten |
Tildel værdi |
NoteReference værdi = {Note(Opret noten (Bemærk))} |
Når du har publiceret og aktiveret den brugerdefinerede handling og har hentet CSDL'et, kan du se denne nye handling defineret.
<Action Name="new_AddNoteToContact" IsBound="true">
<Parameter Name="entity" Type="mscrm.contact" Nullable="false" />
<Parameter Name="NoteTitle" Type="Edm.String" Nullable="false" Unicode="false" />
<Parameter Name="NoteText" Type="Edm.String" Nullable="false" Unicode="false" />
<ReturnType Type="mscrm.annotation" Nullable="false" />
</Action>
Følgende HTTP-anmodning og svar viser, hvordan du kalder den brugerdefinerede handling, og det svar, der returneres, hvis handlingen lykkes.
Anmodning
POST cc_WebAPI_ServiceURI/contacts(94d8c461-a27a-e511-80d2-00155d2a68d2)/Microsoft.Dynamics.CRM.new_AddNoteToContact HTTP/1.1 Accept: application/json Content-Type: application/json; charset=utf-8 OData-MaxVersion: 4.0 OData-Version: 4.0 { "NoteTitle": "New Note Title", "NoteText": "This is the text of the note" }
Svar
HTTP/1.1 200 OK Content-Type: application/json; odata.metadata=minimal OData-Version: 4.0 { "@odata.context": "cc_WebAPI_ServiceURI/$metadata#annotations/$entity", "annotationid": "9ad8c461-a27a-e511-80d2-00155d2a68d2" }
Angive objektparametertype
Når en handling kræver et objekt som en parameter og objekttypen er tvetydig, skal du bruge @odata.type-egenskab til at angive objekttypen. Værdien af denne egenskab er det fuldt kvalificerede navn på det objekt, som følger dette mønster:
Microsoft.Dynamics.CRM.+<objektets logiske navn>.
Som vist i sektionen Bundne handlinger ovenfor, er Target-parameter til AddToQueue Action en aktivitet. Men da alle aktiviteter nedarver fra activitypointer EntityType, skal du medtage følgende egenskab i objektet JSON for at angive, at objekttypen er et brev: "@odata.type": "Microsoft.Dynamics.CRM.letter".
To andre eksempler er AddMembersTeam Action og RemoveMembersTeam Action, fordi Members-parameteren er en samling af systemuser EntityType, som arver den ownerid primære nøgle fra principal EntityType. Hvis du sender følgende JSON som repræsenterende en enkelt systemuser i samlingen, det er klart, at objektet er en systemuser og ikke en team EntityType, der også arver fra hoved-entitytype.
{
"Members": [{
"@odata.type": "Microsoft.Dynamics.CRM.systemuser",
"ownerid": "5dbf5efc-4507-e611-80de-5065f38a7b01"
}]
}
Hvis du ikke angiver objekttypen i denne situation, kan du få følgende fejlmeddelelse: "EdmEntityObject passed should have the key property value set.".
Se også
Web API-funktioner og handlingseksempel (C#)
Eksempel på web-API-funktioner og handlinger (JavaScript på klientsiden)
Udføre operationer ved hjælp af web-API
Skrive HTTP-anmodninger og håndtere fejl
Forespørg på data ved hjælp af Web-API'en
Oprette et objekt ved hjælp af Web-API
Hente et objekt ved hjælp af web-API'et
Opdatere og slette objekter ved hjælp af web-API'et
Tilknytte og fjerne tilknytningen af objekter ved hjælp af web-API'et
Bruge Web-API-funktioner
Udføre batchhandlinger ved hjælp af Web-API
Efterligne en anden bruger ved hjælp af Web-API'en
Udfør betingede operationer ved hjælp af web-API
Microsoft Dynamics 365
© 2017 Microsoft. Alle rettigheder forbeholdes. Ophavsret