23 October 2008
Integration von Dynamics CRM 4.0 in MS Office InfoPath 2007 – Teil 2 Architektur & InfoPath Formulardesign
Was müssen wir also tun, um die geforderte Funktionalität in InfoPath zur Verfügung zu stellen? Einiges (wenigstens aus jetziger Sicht :)! Denn: Da InfoPath nicht direkt mit dem CRM WebService interagiert, brauchen wir ein eigenes Verbindungsstück. Dafür werden wir uns einen eigenen WebService zusammenbauen und diesen am CRM-Server zur Verfügung stellen. Hier packen wir alles rein, was wir zur Kommunikation mit CRM benötigen. Unser eigener WebService wird uns schließlich als Datenquelle dienen bzw. werden wir unser fertig ausgefülltes Formular an diesen WebService übermitteln. Zu besseren Veranschaulichung hier ein grobes Schema der Architektur unserer Lösung:
Wie gehen wir vor?
Im Folgenden werden wir zuerst in CRM eine Entität Spesenbericht anlegen, in die die Daten gespeichert werden können, bevor wir unser InfoPath Formular entwerfen. Danach entwickeln wir unseren WebService und Verbinden unser Formular mit den einzelnen Methoden. Schließlich kümmern wir uns noch um das Eventhandling im Formular. Ganz zuletzt deployen wir das Formular und schauen uns an, ob es auch wirklich hält, was es verspricht.
Entität Spesenbericht
Wie wir in der Eingabemaske unten sehen, besteht ein Spesenbericht im wesentlichen aus 4 Attributen: Ein Name, der einigermaßen klärt, worum es sich bei den Spesen handelt, ein Datum zu welchem die Spesen entstanden sind, einen Betrag der dafür ausgegeben wurde und eine Begründung, warum das notwendig war. Daneben stehen uns noch zwei Radiobuttons zur Verfügung, die uns Auskunft über den Status der Spesen geben (freigegeben ja oder nein).
Unser Formular
Für die ersten vier Eigenschaften brauchen wir entsprechende Eingabefelder in unserem Formular. Ob ein Spesenbericht freigegeben ist oder nicht, ergibt sich daraus, wer ihn angelegt hat: War es der Besitzer des Projektes, vertrauen wir ihm und wollen die Spesen als freigegeben ansehen. Reicht ein anderer Benutzer den Spesenbericht ein, soll der Besitzer des Projektes verständigt werden und dieser die Ausgaben bestätigen.
Unser Formular braucht darüber hinaus noch eine Dropdown-Liste für alle Kunden, die auch Projekte haben (diesen soll der Spesenbericht ja zugeordnet werden) sowie ein Feld – da nehmen wir doch auch gleich eine Dropdown Liste – für die Projekte, die einem bestimmten Kunden zugeordnet sind.
Letztlich wollen wir noch Infos zu Benutzer und Projekteigentümer anzeigen (auch, weil wir über die Guids der beiden überprüfen werden, ob es einer Freigabe bedarf oder nicht).
Wenn wir schließlich noch Buttons für die Aktualisierung einzelner Formularfelder und zur Übermittlung an den Server hinzufügen (und uns bei der Formatierung ein wenig Mühe geben ;-), schaut unser Formular schließlich wie folgt aus:
Wie Sie sehen können, habe ich das Formular in Visual Studio (Version 2008) entworfen. Ebensogut könnte der Entwurf in InfoPath direkt erfolgen. Da wir in Visual Studio ja einiges an Hintergrundcoding erledigen wollen, bietet es sich an, auch gleich das Design hier zu machen.
InfoBasteln in Visual Studio
Dafür öffnen wir Visual Studio (2008), erzeugen ein neues Projekt und wählen als Vorlage InfoPath 2007 aus. Danach können wir über den Tools-Panel alle geforderten Controls hinzufügen. Die Namen der Controls vergeben wir über einen Klick mit der rechten Maustaste auf das Control und der Auswahl des Menüpunktes „Eigenschaften für Dropdown-Listenfeld…“ (im Fall der Dropdown-Liste für unsere Projektkunden) wie in den folgenden 2 Bildern unten gezeigt.
Im Eigenschaftsfenster vergeben wir vorerst einmal nur den Namen der einzelnen Controls… Alles andere, wie die Angabe einer Datenquelle aus der das Feld gespeist wird, gibt’s erst ein klein wenig später! Schließlich müssen wir dafür erst einmal unseren WebService auf die Beine stellen, was wir im nächsten Schritt (in Teil 3) auch gleich machen werden!!
Kleiner Tipp: InfoPath ermöglicht es uns, Regeln für Datenüberprüfung zu definieren. So wollen wir beispielsweise, dass das Eingabedatum der Spesen innerhalb der Projektzeit liegt oder der Button zur Übermittlung der Spesen erst dann aktiv wird, wenn die Eingabefelder des Spesenberichtes alle ausgefüllt sind! Diese Aufgabe können wir ebenfalls über das Eigenschaftsfenster unter “Datenüberprüfung” erledigen!
___________________________________________________________
Alexander Brandstätter, Microsoft Consulting Services
Comment Notification
If you would like to receive an email when updates are made to this post, please register here
Subscribe to this post's comments using
Comment Policy: No HTML allowed. URIs and line breaks are converted automatically. Your e–mail address will not show up on any public page.