Workflow ExecutionTimeSpan Letzte Woche hatte ich Rahmen einer Service Anfrage bei Microsoft ein Problem. Ich sollte testen wie lange es dauert per Workflow einen Datensatz für eine bestimmte Entität zu erzeugen. Das Ganze musste ziemlich genau sein, da es sich bei der Anfrage um die zu hohe Ausführungszeit einer PlugIn-Kette handelt in der eben ein solcher Datensatz erzeugt wird.

Versuchsaufbau

Ein Workflow soll einen neuen Kontakt, basierend auf den Daten eines bestehenden Kontakt, erzeugen. Quasi eine Light-Kopie. Er wird so konfiguriert dass er einen Eintrag in den Systemaufträgen hinterlässt.

Workflow-Protokoll

Das Workflow-Protokoll ist leider nicht so aussagekräftig wie gedacht. Es beinhaltet die Zeiten nur minutengenau.

Workflow ExecutionTimeSpan

Das bringt mich aber zumindest auf eine Idee. Intern speichert Dynamics CRM die Daten genauer als es sie auf der Oberfläche anzeigt. Jetzt muss ich da nur noch ran kommen, wohlgemerkt in einen CRM Online System.

Workflow ExecutionTimeSpan

Da man ja bekanntlich bei CRM Online nicht direkt auf die Datenbank zugreifen kann, plante ich mit dem OData Query Designer aus den Dynamics XRM Tools eine Abfrage erstellen die "Erstellt am" und "Geändert am" meines Workflows ausgibt.
Bei der Auswahl der Felder für meine Abfrage finde ich dann das Feld "Zeitspanne für Ausführung", oder auf englisch "ExecutionTimeSpan". BINGO! Das klingt gut!

Die Abfrage

EURESERVERURL/xrmservices/2011/OrganizationData.svc/AsyncOperationSet?$select=Name,StartedOn,CreatedOn,CompletedOn,ModifiedOn,ExecutionTimeSpan&$filter=OperationType/Value eq 10&$orderby=CreatedOn desc

Um die URL mal etwas verständlicher dazustellen:

  • Die URL des Organisationsdatendienst (OData) eures CRM.
    EURESERVERURL/xrmservices/2011/OrganizationData.svc
     
  • Die Tabelle aus der ich gerne Daten hätte.
    AsyncOperationSet?
     
  • Die Spalten der Tabelle die ich gerne als Ergebnis hätte.
    $select=Name,CreatedOn,StartedOn,CompletedOn,ModifiedOn,ExecutionTimeSpan
     
  • Es sollen nur Systemaufträge vom Typ "Workflow" zurückgeliefert werden.
    $filter=OperationType/Value eq 10
     
  • Als letztes hätte ich hätte die Ergebnisse gerne nach dem Erstelldatum sortiert, so dass die neuesten oben sind.
    Wer will schon lange suchen.
    $orderby=CreatedOn desc

Das Ergebnis

<xml version="1.0" encoding="utf-8" standalone="yes">
<feed xml:base="http://od4u-crm2013.cloudapp.net/FC/XRMServices/2011/OrganizationData.svc/" xmlns:d="http://schemas.microsoft.com/ado/2007/08/dataservices" xmlns:m="http://schemas.microsoft.com/ado/2007/08/dataservices/metadata" xmlns="http://www.w3.org/2005/Atom">
  <title type="text">AsyncOperationSet</title>
  <id>http://od4u-crm2013.cloudapp.net/FC/xrmservices/2011/OrganizationData.svc/AsyncOperationSet</id>
  <updated>2014-10-05T08:07:34Z</updated>
  <link rel="self" title="AsyncOperationSet" href="AsyncOperationSet" />
  <entry>
    <id>http://od4u-crm2013.cloudapp.net/FC/XRMServices/2011/OrganizationData.svc/AsyncOperationSet(guid'40107141-ab4b-e411-80df-00155d572098')</id>
    <title type="text">LightCopy</title>
    <updated>2014-10-05T08:07:34Z</updated>
    <author>
      <name />
    </author>
    <link rel="edit" title="AsyncOperation" href="AsyncOperationSet(guid'40107141-ab4b-e411-80df-00155d572098')" />
    <category term="Microsoft.Crm.Sdk.Data.Services.AsyncOperation" scheme="http://schemas.microsoft.com/ado/2007/08/dataservices/scheme" />
    <content type="application/xml">
      <m:properties>
        <d:Name>LightCopy</d:Name>
        <d:CreatedOn m:type="Edm.DateTime">2014-10-04T09:46:04Z</d:CreatedOn>
        <d:StartedOn m:type="Edm.DateTime">2014-10-04T09:46:17Z</d:StartedOn>
        <d:CompletedOn m:type="Edm.DateTime">2014-10-04T09:46:22Z</d:CompletedOn>
        <d:ModifiedOn m:type="Edm.DateTime">2014-10-04T09:46:22Z</d:ModifiedOn>
        <d:ExecutionTimeSpan m:type="Edm.Double">1.7</d:ExecutionTimeSpan>
        <d:ModifiedOn m:type="Edm.DateTime">2014-10-04T09:46:22Z</d:ModifiedOn>
      </m:properties>
    </content>
  </entry>
</feed>
In dem markierten Bereich seht ihr die Spalten die wir abgerufen habe und in Zeile 23 den Wert der Workflow ExecutionTimeSpan.
Somit hatte der Workflow also eine Ausführungszeit von 1,7 Sekunden.

Mit Power Query für Excel könnt ihr euch die Daten auch etwas schöner anzeigen lassen oder ganze Serien von Workflows auswerten und dann mit Excel Mittelwerte berechnen oder Diagramme erstellen lassen. Excel halt.

Hope it helps!

Der Artikel Workflow ExecutionTimeSpan von Ben ist auf leicht bewölkt veröffentlicht worden..