Delen via


Uw eigen acties maken

 

Gepubliceerd: november 2016

Is van toepassing op: Dynamics CRM 2015

U kunt de functionaliteit van Microsoft Dynamics 365 uitbreiden door aangepaste berichten te maken die bekend staan als acties. Deze acties hebben bijbehorende aanvragen/responsklassen. Weldra worden de acties beschikbaar voor bedrijfstoepassingen en uitbreidingen alleen door de oproepen van de organisatiewebservice. De acties worden gewoonlijk gebruikt om nieuwe domeinspecifieke functionaliteit toe te voegen aan de organisatiewebservice of om meerdere berichtaanvragen van de organisatiewebservice te combineren in één aanvraag. In een ondersteuningscallcenter kunt u bijvoorbeeld de berichten Create, Assign en Setstate combineren tot één nieuw bericht Escalate.

De bedrijfslogica van een actie wordt uitgevoerd met een werkstroom. Als u een actie maakt, wordt de gekoppelde realtime-werkstroom automatisch vastgelegd om in fase 30 (kernbewerking) van de uitvoeringspipeline uit te voeren. Voor meer informatie over realtimewerkstromen, raadpleegt u Werkstroomcategorieën.

Terwijl de acties in beide Microsoft Dynamics CRM 2015 en Microsoft Dynamics CRM Online 2015 Update worden ondersteund, is het maken van een actie in code (met gebruik van XAML) alleen ondersteund door een Microsoft Dynamics CRM 2015 on-premises en IFD. De online klanten moeten interactief acties in de webtoepassing maken.

In dit onderwerp

Informatie over actiedefinities

Vereiste machtigingen

Maak een actie met behulp van code

Verpak een actie voor distributie

Maak eerder gebonden typen voor een actie

Voer een actie uit met behulp van de webservice

Een actie uitvoeren met een proces

Kijk uit voor langlopende acties

Informatie over actiedefinities

Een actie wordt gedefinieerd door een Workflow entiteitsrecord te gebruiken, hebt die lijkt op een realtime werkstroom. Enkele belangrijke punten van wat een actie is en hoe deze werkt vindt u in de volgende lijst:

  • Kan gekoppeld worden met één entiteit of algemeen zijn (niet met een specifieke entiteit gekoppeld).

  • Wordt uitgevoerd in fase 30-kernbewerking van de pipeline van de gebeurtenisuitvoering.

  • Ondersteunt de aanroeping van plug-ins geregistreerd in de pre-bewerking en post-bewerkingsfasen van de pipeline van de gebeurtenisuitvoering.

  • Kan alleen plug-ins bevatten die in de pre-bewerking of post-bewerkingsfasen zijn geregistreerd wanneer de actiestatus Geactiveerd is.

  • Is beschikbaar via de organization.svc en organization.svc/webeindpunten, maar niet via het eindpunt organizationdata.svc (OData).

  • Kunnen worden uitgevoerd met een JavaScript - webresource.Meer informatie:Voer een actie uit met een JavaScript-webresource

  • Altijd uitgevoerd onder de beveiligingscontext van de aanroepende gebruiker.

  • Het record kan niet worden verwijderd zolang er plug-ins op de actie geregistreerd zijn.

  • Kan eventueel, door een configuratie-instelling, in de huidige databasetransactie deelnemen.

  • Ondersteunt geen bereik waar de uitvoering beperkt is tot een gebruiker, een business unit, of een organisatie. De acties worden altijd uitgevoerd in organisatiebereik.

  • Ondersteunt invoer- en uitvoerargumenten.

  • Ondersteunt het controleren van gewijzigde gegevens.

  • Wordt niet ondersteund met offline clients.

  • Kan worden aangeroepen door een aanroep van een webservicemethode.

Notitie

  • Kan direct vanuit een werkstroom worden aangeroepen.

Voor Microsoft Dynamics CRM Online-organisaties is deze functie alleen beschikbaar als uw organisatie is bijgewerkt naar Dynamics CRM Online 2015 Update 1. Wilt u ook over deze mogelijkheid beschikken? Vind uw CRM-beheerder of ondersteuningsmedewerker. Deze functie is niet beschikbaar voor Dynamics CRM (on-premises).

Vereiste machtigingen

Een veiligheidsbevoegdheid genaamd Realtimeprocessen activeren (prvActivateSynchronousWorkflow) is vereist om de realtimewerkstroom van een actie te activeren zodat deze kan worden uitgevoerd. Dit staat naast de bevoegdheden die nodig zijn om een werkstroom te maken. Zie de UI-toewijzing van bevoegdheden in de Aanpassing voor meer informatie over deze bevoegdheden.

Maak een actie met behulp van code

Normaal gesproken, wordt een actie ingevoerd door een systeemaanpasser met de interactieve werkstroomontwerper van de Webtoepassing. Echter, kunnen ontwikkelaars acties uitvoeren met SDK-oproepen en naar een on-premises of IFD-server implementeren indien gewenst.

De werkstroomentiteitskenmerken voor een actie worden beschreven in de volgende tabel. De voorbeeldcode voor een realtime-werkstroom kunt u vinden in het onderwerp Maak een realtime werkstroom in code.

Werkstroomkenmerk

Beschrijving

Category

instellen op WorkflowCategory.CustomOperation.

SyncWorkflowLogOnError

Wanneer true, worden fouten naar ProcessSession records opgeslagen. In tegenstelling tot asynchrone werkstromen, wordt de realtime-werkstroomuitvoering hebt niet geregistreerd System Job aan records.

Mode

Niet gebruikt.

IsTransacted

Stel in naar true als de actie deel moet nemen in de databasetransactie; anders, false. Standaard is true.

UniqueName

Een unieke naam voor de actie. De naam bestaat uit een uitgevervoorvoegsel + "_" + de unieke naam.

Xaml

Is ingesteld op de XAML-code die de realtimewerkstroom van uw actie definieert. Er is geen manier om naar een andere bestaande realtime werkstroom te verwijzen.

Invoer- en uitvoerargumenten toevoegen

De acties ondersteunen invoer- en uitvoerargumenten die aan de werkstroom kunnen worden toegevoegd met een type DynamicActivityProperty. Als u deze argumenten aan de werkstroom van een actie toevoegt, worden deze de eigenschappen in de berichtaanvraag en responsklassen aan deze actie gekoppeld. Bijvoorbeeld, het volgende voorbeeld toont in C# en XAML-code en twee invoer- en één uitvoerargumenten.

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>

De namen voor de eigenschappen die worden gebruikt moeten consistent zijn met de argumentnamen, omdat de codegeneratie deze namen definieert als verzoek- of responseigenschappen.

De ondersteunde argumenttypen voor de invoer- en uitvoerargumenten worden weergegeven in de volgende tabel.

.NET-Type

Type argument

System.Int32

Integer

System.String

String

EntityReference

EntityReference

Entity

Entity

EntityCollection

EntityCollection

System.DateTime

DateTime

System.Double

Float

System.Decimal

Decimal

Money

Money

System.Boolean

Boolean

OptionSetValue

Picklist

De ondersteunde argumentkenmerken staan in de volgende tabel.

Argumentkenmerk

Beschrijving

ArgumentRequiredAttribute

Geeft aan of het argument is vereist.

ArgumentDirectionAttribute

Geeft aan of de richting van het argument een invoer of uitvoer is.

ArgumentDescriptionAttribute

Geeft een beschrijving op voor het argument.

ArgumentEntityAttribute

Gebruikt als u wilt doorgeven in een entiteit.

ArgumentTargetAttribute

Dit kenmerk wordt automatisch gegenereerd of toegevoegd. Het wijst naar de primaire entiteit in waarop de werkstroom wordt uitgevoerd. Dit kenmerk is optioneel voor algemene acties.

Verpak een actie voor distributie

Om de actie te distribueren zodat het in een Microsoft Dynamics 365 organisatie kan worden geïmporteerd, voegt u uw actie toe aan een Dynamics 365 - oplossing. Dit is gemakkelijk met de webtoepassing door naar Instellingen > Aanpassingen> Oplossingen te gaan. U kunt ook code schrijven om de oplossing te maken. Raadpleeg Uitbreidingen inpakken en verdelen met oplossingen voor meer informatie over oplossingen.

Maak eerder gebonden typen voor een actie

Met het CrmSvcUtil-hulpprogramma in het SDK-pakket kunt u aanvragen en responsklassen voor de actie maken die u in uw toepassingscode wilt toevoegen. Echter, voordat u de klassen maakt, moet u de actie activeren.

Download het Microsoft Dynamics CRM SDK-pakket.

In het volgende voorbeeld wordt de indeling weergegeven voor het uitvoeren van het hulpprogramma van de opdrachtregel voor een on-premises distributie van Dynamics 365. U levert de parameterwaarden voor uw installatie.

CrmSvcUtil.exe /url:http://<serverName>/<organizationName>/XRMServices/2011/Organization.svc /out:<outputFilename>.cs /username:<username> /password:<password> /domain:<domainName> /namespace:<outputNamespace> /serviceContextName:<serviceContextName> /generateActions

In het volgende voorbeeld wordt de indeling weergegeven voor het uitvoeren van het hulpprogramma van de opdrachtregel met Microsoft Dynamics CRM Online. U levert de parameterwaarden geschikt voor uw account en de server.

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

Merk het gebruik van de parameter /generateActions op.Meer informatie:Eerder gebonden entiteitklassen maken met het hulpmiddel voor het genereren van code (CrmSvcUtil.exe).

U kunt eerder of later verbonden typen gebruiken met de gegenereerde aanvraag en responsklassen voor uw actie.

Voer een actie uit met behulp van de webservice

Als u een bewerking wilt uitvoeren met de organisatiewebservice gebruikmakend van beheerde code, volgt u deze stappen.

  1. Bevat het eerder verbonden typenbestand dat u heeft gegeneerd met het CrmSvcUtil-hulpprogramma in uw toepassingsproject.

  2. In uw toepassingcode, maakt u de aanvraag voor uw actie en vult u eventuele vereiste eigenschappen in.

  3. Roep Execute aan, uw verzoek doorgevend als een argument.

Voordat u uw toepassingcode uitvoert, zorgt u dat de actie is geactiveerd. Anders, zult u een uitvoeringstijdfout ontvangen.

Voer een actie uit met een JavaScript-webresource

De Sdk.Soap.js voorbeeldbibliotheek toont hoe de berichten met de JavaScript-webresources en het Moderne App SOAP-eindpunt kunnen worden gebruikt (organization.svc/web). Gebruik het metgezelvoorbeeld Sdk.Soap.js Action Message Generator om JavaScript - bibliotheken te maken die kunnen worden gebruikt met Sdk.Soap.js op dezelfde manier als u de bibliotheken voor systeemberichten kunt gebruiken die in dat voorbeeld worden geleverd. De bestanden die worden gegenereerd met de Sdk.Soap.js Action Message Generator zijn afzonderlijke JavaScript-bibliotheken voor elke actie. Elke bibliotheek bevat een aanvraag en responsklasse die overeenkomen met de klassen die door de CrmSvcUtil zijn gegenereerd.

Een actie uitvoeren met een proces

U kunt een actie uitvoeren vanuit werkstromen, dialoogvensters of andere procesacties. Geactiveerde aangepaste acties zijn beschikbaar voor processen door het item Actie uitvoeren in de vervolgkeuzelijst Stap toevoegen van het procesformulier voor de webtoepassing te selecteren. Nadat de stap is toegevoegd aan uw proces, kunt u uw nieuwe aangepaste actie (of elke andere actie) selecteren vanuit de lijst Actie die beschikbaar wordt gesteld in de stap. Kies Eigenschappen instellen in de stap om eventuele invoerparameters op te geven die uw aangepaste actie vereist.

Notitie

Als een aangepaste actie niet-ondersteunde parametertypen heeft, bijvoorbeeld Selectielijst, Entiteit of Entiteitsverzameling, wordt de aangepaste actie niet weergegeven in de lijst Actie.

Het vermogen om een actie uit te voeren vanuit een proces werd geïntroduceerd met Update 1 voor Microsoft Dynamics CRM Online 2015.

De bestaande Depth-platformcontroles waarborgen dat geen oneindige lus ontstaat. Zie MaxDepth voor meer informatie over dieptelimieten.

Kijk uit voor langlopende acties

Als een van de stappen in de realtime-werkstroom van de actie een aangepaste werkstroomactiviteit is, wordt die aangepaste werkstroomactiviteit uitgevoerd in de sandboxruntime geïsoleerde omgeving en is deze onderhevig aan een time-outlimiet van twee minuten, vergelijkbaar met hoe plug-ins in de sandbox worden beheerd. Echter, er zijn geen beperkingen op de hoeveelheid algehele tijd die de actie zelf kan innemen. Als een actie bovendien deelneemt in een transactie waar terugdraaien is ingeschakeld, worden de SQL Server time-outs toegepast.

Tip

Een aanbevolen procedure is dat langdurige bewerkingen buiten Microsoft Dynamics 365 moeten worden uitgevoerd met behulp van asynchrone processen of achtergrondprocessen van .NET.

Zie ook

Realtime-werkstromen maken
Dialoogvensters gebruiken voor begeleide processen
Pipeline voor gebeurtenisuitvoering
Werkstromen schrijven om bedrijfsprocessen te automatiseren
TechNet: Uw systeem aanpassen

© 2017 Microsoft. Alle rechten voorbehouden. Auteursrecht