Exemplarische Vorgehensweise: Einen UII-Webanwendungs-Adapter erstellen

Sie können einen Webanwendungsadapter erstellen, wenn Sie Webanwendungen verbessern möchten, für die Sie über keinen Zugriff auf Quellcode verfügen oder Berechtigungen zum Ändern besitzen, indem Sie verwalteten Code verwenden. Microsoft Dataverse stellt eine Visual Studio-Vorlage zum Erstellen eines Webanwendungsadapters bereit. Die Vorlage bietet grundlegenden Code als Kommentare, um Ihnen dabei zu helfen, den Webanwendungs-Adapter entwicklen zu können.

In dieser exemplarischen Vorgehensweise erstellen Sie eine externe Webanwendung namens QsWebApplication und hosten sie in Unified Service Desk. Anschließend erstellen und konfigurieren Sie einen Web Application Adapter namens MyWebApplicationAdapter für die externe Webanwendung, um mit Unified Service Desk zu interagieren. Die Webanwendung verfügt über vier Labels, jeweils eines für den Vornamen, den Nachnamen, die Adresse und die ID des Kunden sowie vier entsprechende Textfelder zur Anzeige der Werte des Unified Service Desk.

Anforderungen

  • Microsoft .NET Framework 4.6.2

  • Unified Service Desk Client-Anwendung; wird für das Testen des gehosteten Steuerelements benötigt.

  • Visual Studio 2012, Visual Studio 2013, oder Visual Studio 2015

  • NuGet Paket-Manager für Visual Studio 2012, Visual Studio 2013 oder Visual Studio 2015

  • CRM SDK-Vorlagen für Visual Studio, das die gehostete UII- Steuerelement-Projektvorlage enthält. Laden Sie die CRM SDK-Vorlagen aus dem Visual Studio Katalog herunter,und doppelklicken Sie auf die Datei CRMSDKTemplates.vsix, um die Vorlage in Visual Studio zu installieren.

Schritt 1: Erstellen einer Beispielwebanwendung

  1. Herunterladen des UII SDK-Pakets (.exe)

  2. Doppelklicken Sie auf die Paketdatei, um den Inhalt zu extrahieren.

  3. Navigieren Sie zum Ordner <ExtractedFolder>\UII\SampleCode\UII\AIF\QsWebApplication und öffnen Sie die Datei Microsoft.Uii.QuickStarts.QsWebApplication.csproj unter Visual Studio.

  4. Drücken Sie F5 oder wählen Sie Debuggen>Debuggen starten, um die Beispiel-Webanwendung auf Ihrem Computer zu hosten. Die Anwendung wird auf https://localhost:2627/. gehostet.

    Web-App in Visual Studio.

Schritt 2: Konfigurieren Sie zunächst eine Webanwendung

  1. Melden Sie sich bei der Dynamics 365 Instanz an.

  2. Gehen Sie zu Einstellungen>Unified Service Desk.

  3. Wählen Sie Gehostete Steuerelemente aus.

  4. Wählen Sie Neu aus.

  5. Geben Sie auf der Seite Neues gehostetes Steuerelement die folgenden Werte an:

    Feld Wert
    Name QsWebApplication
    USD-Komponententyp Gehostete CCA-Anwendung
    Gehostete Anwendung Gehostete Webanwendung
    Anwendung ist global Markiert
    Anzeigegruppe MainPanel
    Adapter Keinen Adapter verwenden
    Anwendung ist dynamisch Nein
    Anwendungshosting SetParent verwenden
    URL Geben Sie den Ort an, an dem die Webanwendung gehostet wird. In diesem Fall ist es https://localhost:2627/

    Screenshot der Web-App-Konfiguration.

  6. Wählen Sie Speichern aus.

Schritt 3: Testen der Webanwendung

  1. Überprüfen Sie, ob die Beispiel-Webanwendung, die Sie in Schritt 1 erstellt haben, weiterhin ausgeführt wird.

  2. Führen Sie den Unified Service Desk Client aus, um eine Verbindung zu Ihrem Dataverse-Server herzustellen.

  3. Bei erfolgreicher Anmeldung wird auf dem Desktop Externe Beispiele-Webanwendung angezeigt.

  4. Klicken Sie auf die Registerkarte Externe Beispiel-Webanwendung, um zu sehen, dass die Webanwendung im Unified Service Desk gehostet wird.

    Web-App hosten in Unified Service Desk.

Anmerkung

Zu diesem Zeitpunkt sind die Felder leer, da Sie nur die externe Webanwendung im Unified Service Desk hosten. Um die Liste mit Werten aus Unified Service Desk auszufüllen, müssen wir einen Webanwendungsadapter erstellen, wie im nächsten Schritt gezeigt.

Schritt 4: Erstellen des Webanwendungsadapters

  1. Starten Sie Visual Studio und erstellen Sie ein neues Projekt.

  2. Im Dialogfeld Neues Projekt:

    1. Erweitern Sie in der Liste der installierten Vorlagen auf der linken Seite Visual C# und wählen Sie CRM SDK Vorlagen>Unified Service Desk>UII Web Application Adapter.

    2. Geben Sie den Namen und den Speicherort des Projekts an, und klicken Sie auf OK, um ein neues Projekt zu erstellen.

    Screenshot des Webadapters in Visual Studio.

    1. Wählen Sie WebAppAdapter.cs, und aktualisieren Sie die Definition von NotifyContextChange mit dem folgenden Code, um die Textfelder aus den Kontextinformationen aufzufüllen. Weitere Informationen: Kontext)

      public override bool NotifyContextChange(Context context)  
              {  
                  // Populating text fields from context information.  
      
                  HTMLDocument htmlDoc = Browser.Document as HTMLDocument;  
                  if (htmlDoc != null)  
                  {  
                      IHTMLElementCollection htmlElementCollection = htmlDoc.all;  
                      IHTMLElement htmlFirstName = htmlElementCollection.item("txtFirstName", 0) as IHTMLElement;  
                      htmlFirstName.setAttribute("value", context["firstname"], 0);  
                      IHTMLElement htmlLastName = htmlElementCollection.item("txtLastName", 0) as IHTMLElement;  
                      htmlLastName.setAttribute("value", context["lastname"], 0);  
                      IHTMLElement htmlAddress = htmlElementCollection.item("txtAddress", 0) as IHTMLElement;  
                      htmlAddress.setAttribute("value", context["address1_line1"], 0);  
                      IHTMLElement htmlID = htmlElementCollection.item("txtID", 0) as IHTMLElement;  
                      htmlID.setAttribute("value", context["CustomerID"], 0);  
                  }  
                  return base.NotifyContextChange(context);  
              }  
      
      
    2. Fügen Sie den folgenden Code zur Überschreibungsdefinition von DoAction hinzu, um die Anwendung mit Werten von Unified Service Desk zu aktualisieren

      public override bool DoAction(HostedWebApplication.WebAction action, ref string data)  
              {  
                  Trace.WriteLine(string.Format("{0}>>>>> RECEIVED (WebAction) Action : {1} ", this.Name, action.Name));  
      
                  // Check to see if the browser is working on something before allowing the system to do 'normal' behavior.  
                  if (Browser.WebBrowser.ReadyState != tagREADYSTATE.READYSTATE_COMPLETE)  
                  {  
                      // Browser is not in a state to process this request,  Queue it for when the browser is ready to handle it.   
                      Trace.WriteLine(string.Format("{0}>>>>> Browser Busy,({2}) Queuing Action : {1} ", this.Name, action.Name, Browser.WebBrowser.ReadyState.ToString()));  
                      qReqActionList.Enqueue(new BrowserActionData(action, data));  
                      return false;  
                  }  
                Trace.WriteLine(string.Format("{0}>>>>>>>>>>> Action:Name={1} Action:Url={2} Action:Query={3} Action:Init={4}", this.Name, action.Name, action.Url, action.QueryString, action.Initialization));  
      
                  // Get browser DOM and element collection.  
                  // Create an XML Document to load the passed in data to.  
                  HTMLDocument htmlDoc = Browser.Document as HTMLDocument;  
                  IHTMLElementCollection htmlElementCollection = htmlDoc.all;  
      
                  // Check action name for something we know how to process.  
                  switch (action.Name)  
                  {  
                      case "UpdateFirstName":  
                          IHTMLElement htmlFirstName = htmlElementCollection.item("txtFirstName", 0) as IHTMLElement;  
                          htmlFirstName.setAttribute("value", data, 0);  
                          break;  
                      case "UpdateLastName":  
                          IHTMLElement htmlLastName = htmlElementCollection.item("txtLastName", 0) as IHTMLElement;  
                          htmlLastName.setAttribute("value", data, 0);  
                          break;  
                      case "UpdateAddress":  
                          IHTMLElement htmlAddress = htmlElementCollection.item("txtAddress", 0) as IHTMLElement;  
                          htmlAddress.setAttribute("value", data, 0);  
                          break;  
                      case "UpdateID":  
                          IHTMLElement htmlID = htmlElementCollection.item("txtID", 0) as IHTMLElement;  
                          htmlID.setAttribute("value", data, 0);  
                          break;  
                  }  
                  return false;  
              }  
      
      
    3. Speichern Sie das Projekt und bauen Sie es auf (Aufbauen>Lösung aufbauen). Nachdem das Projekt erfolgreich aufgebaut wurde, wird eine Assembly (MyWebApplicationAdapter.dll) im \bin\debug-Ordner Ihres Projektordners generiert. Sie benötigen diese Assembly späterzum Testen und Verwenden Ihres Webanwendungsadapters.

Schritt 5: Konfigurieren des Webanwendungsadapters

  1. Melden Sie sich bei der Dynamics 365-Instanz an.

  2. Wählen Sie auf der Navigationsleiste Dynamics 365 aus.

  3. Klicken Sie auf Einstellungen>Unified Service Desk>Gehostete Steuerelemente.

  4. Wählen Sie in der Liste der gehosteten Steuerelemente das gehostete Steuerelement QsWebApplication.

    Gehostete Steuerelementliste.

  5. Geben Sie im Abschnitt Adapterkonfiguration die folgenden Werte an.

    Feld Wert
    Adapter Adapter verwenden
    URI MyWebApplicationAdapter
    Typ MyWebApplicationAdapter.WebAppAdapter

    Webadapter-Konfiguration.

    Anmerkung

    URI ist der Name Ihres Assemblys und Typ ist der Name Ihres Assemblys (dll), gefolgt von einem Punkt (.) und dann dem Klassennamen in Ihrem Visual Studio-Projekt. In diesem Beispiel lautet der Name des Assemblys MyWebApplicationAdapter und Name der Klasse ist WebAdapter; dies ist der Standardklassenname, wenn Sie ein benutzerdefiniertes gehostetes Steuerelement erstellen.

  6. Wählen Sie Speichern aus, um die Änderungen zu speichern.

Schritt 6: Testen des Webanwendungsadapters

  1. Kopieren Sie die Montage, die Ihre Web Application Adapter-Definition enthält, aus Ihrem Projektausgabeordner Visual Studio (<ProjectFolder>\bin\debug) in das Unified Service Desk-Anwendungsverzeichnis. In diesem Fall die MyWebApplicationAdapter.dll-Datei zum Kopieren c: \Program Files\ Microsoft Dynamics CRM USD\USD Verzeichnis.

  2. Führen Sie den Unified Service Desk Client aus, um sich mit Ihrem Dynamics 365 for Customer Engagement Apps Server zu verbinden.

  3. Bei erfolgreicher Anmeldung wird auf dem Desktop die Schaltfläche für die externe Beispiel-Webanwendung angezeigt.

  4. Wählen Sie Suchen aus und wählen Sie dann Kontakte aus, und wählen Sie einen Kontakt aus. Wählen Sie in diesem Fall Patrick Sands.

    Screenshot der Kontaktliste.

  5. Klicken Sie auf Externe Beispiel-Webanwendung, und Sie sehen, dass Vorname, Nachname, Adresse und ID des Kunden ausgefüllt sind.

    Screenshot des WebApp-Adapter-Tests.

Anmerkung

Diese exemplarische Vorgehensweise zeigt Ihnen, wie Sie Daten aus Unified Service Desk in der externen Webanwendung lesen oder anzeigen können. Um die Daten in Unified Service Desk von der externen Webanwendung aus zu aktualisieren und umgekehrt, siehe Beispielhafte Vorgehensweise: Erzeugen eines gehosteten UII Windows Forms Steuerelements

Siehe auch

Verwenden von UII-Adaptern, um mit externem und Webanwendungen zu interagieren