User Interface Process Application Block (UIP) Version 2.0 – Tutorial Visual Studio 2008

Mittwoch, 30. April 2008 |  Autor: admin

In dem Artikel beschreibe ich wie man sich ein kleines Beispielprojekt mit UIP2 aufbaut. Das fertige Projekt findet hier ihr [uipapplication].

Mit UIP ist es möglich Prozesse viewbasiert abzubilden.

Download & Installation

Das Download Paket findet sich unter

http://www.microsoft.com/downloads/details.aspx?FamilyID=98C6CC9D-88E1-4490-8BD6-78092A0F084E&displaylang=en

Nach der Installation kann die Solution, standardmäßig zu finden unter „C:\Program Files\Microsoft Application Blocks For .Net\User Interface Process 2.0\Code\Microsoft.ApplicationBlocks.UIProcess.sln“, mit Visual Studio 2008 geöffnet und in das neue VS08-Format konvertiert werden.

Die Solution kann nun einmal kompiliert werden, damit die entstandenen Assemblies (.dll-Dateien) im Anschluss in eigenen Projekten referenziert werden können (kleiner Tipp: Wenn das kompilieren nicht funktioniert, einfach mal in den Project-Properties | Application | Target Framework nachschauen welche .NET-Version ausgewählt ist). Falls die Verzeichnis-Rechte nicht stimmen und ein „Access denied“-Fehler auftritt findet sich unter „C:\Program Files\Microsoft Application Blocks For .Net\User Interface Process 2.0\Scripts\“ die Datei „SET_PERMS.BAT“, welche die Zugriffsrechte der Verzeichnisse setzt. Somit ist UIP startklar.

Los geht’s!

IIS Virtual Directory vorbereiten

Bevor wir mit dem programmieren anfangen, müssen wir noch ein virtuelles Verzeichnis innerhalb des IIS erstellen. Über Start | Systemsteuerung | Verwaltung | Internet-Informationsdienste finden wir unter dem lokalen Computer und den Websites die Default Web Site. Mit einem Rechtsklick | Neu | Virtuelles Verzeichnis… können wir ein neues VD erstellen. Der frei gewählte Alias ist „UIPApplication“, der Pfad zum Projekt wird ausgewählt und die restlichen Standardeinstellungen übernommen. Anschließend sollte es so wie im Ausschnitt zu sehen ausschauen:

uip_iis_virtual_directory

Das erste Projekt

Wir erstellen ein neues ASP.NET Web Application Projekt namens „UIPApplication“. Als erstes werden dem Projekt die UIP-Assemblies hinzugefügt. Diese liegen unter „C:\Program Files\Microsoft Application Blocks For .Net\User Interface Process 2.0\Code\Microsoft.ApplicationBlocks.UIProcess\bin\Debug“ und heißen:

  • Microsoft.ApplicationBlocks.Data.dll (optional)
  • Microsoft.ApplicationBlocks.UIProcess.dll

Als nächstes werden einige Dateien (Default.aspx, View1-3.aspx, myController.cs) erstellt. Der Screenshot zeigt diese, und ebenfalls wie das komplette Projekt anschließend aussehen sollte:

uip_solution

Nachdem die Referenzen und die Dateien hinzugefügt wurden, stellen wir den IIS Web Server für das Projekt ein. Wir müssen an dieser Stelle auf das soeben erstellte VD mappen. Ein Rechtsklick auf das Projekt „UIPApplication“ | Properties führt uns über „Web“ zu dem gewünschten Menüpunkt. Die Einstellungen können wie auf der Grafik zu sehen übernommen werden:

uip_projects_properties_web_virtualpath

Der Wert für die „Specific Page“ ist wichtig, damit das Projekt mit der richtigen Startseite gestartet werden kann.

Der Punkt „Use IIS Web server“ gibt den Pfad unseres erstellten virtuellen Verzeichnisses an.

Vorgehen

Alles was der Entwickler zu tun hat, lässt sich in vier Schritten auflisten:

  • UIP Controller erstellen
  • UI Formulare erstellen/anpassen
  • Die Events der UI Formulare an den Controller koppeln
  • Web.config für UIP konfigurieren

Schritt 1 – UIP Controller erstellen – myController.cs

Zuerst erstellen wir den Controller. Der Controller erbt von der Klasse ControllerBase. Der Konstruktor erhält einen Navigator als Parameter, der an den base-Konstruktor weitergereicht wird.

public class MyController : ControllerBase
{
public MyController(Navigator nav)
: base(nav)
{
}
public void Next()
{
Navigate("next");
}

Innerhalb des Controllers werden die Methoden erstellt, die von den Views genutzt werden können, um bestimmte Funktionalitäten auszuführen. Views können auf den Controller-State zugreifen.

Die hier gezeigte Methode Next() ruft beim Aufruf die Methode Navigate(“next“) auf. View1 benutzt diese Controller-Methode, und durch die Konfiguration in der web.config weiß UIP wohin navigiert werden muss.

Schritt 2 – UI Formulare erstellen

Das Projekt enthält bereits vier aspx-Dateien. Alle Dateien die UIP verwenden müssen UIPProcess integrieren:

using Microsoft.ApplicationBlocks.UIProcess;

Die Datei Default.aspx wird nicht per UIP verarbeitet. Erst der Klick auf den „Start UIP“-Button startet UIP, und geht auf die konfigurierte Start-View.

protected void Button1_Click(object sender, EventArgs e)
{
// Create a task and start the UIPAB block
UIPManager.StartNavigationTask(“UIPApplication”);
}

Mit UIPManager.StartNavigationTask(“UIPApplication“) wird der in der web.config definierte Task gestartet. Dazu kommen wir später. Ein Task der UIP-Welt ist quasi ein definierter Use-Case. UIP weist jedem Task eine eindeutige ID zu die für die Persistenz benötigt wird.

Schritt 3 – Controller benutzen

Die View1-3.aspx-Dateien sind Standard ASP.NET-Seiten. Im Code-behind der Dateien regelt der Controller die Navigation zwischen den einzelnen Views. Die einzelnen Dateien sind also lose gekoppelt, und wissen nichts von ihrem Vorgänger oder Nachfolger innerhalb eines Workflows. Dieser Teil wird in der web.config konfiguriert.

Die drei Dateien benutzen UIP zur Navigation. Deswegen müssen diese von der Klasse Microsoft.ApplicationBlocks.UIProcess.WebFormView erben:

public partial class View1 : WebFormView

Bei einem Klick auf den “Weiter”-Button der View1 wird folgender Code ausgeführt:

MyController myController = (MyController)Controller;
myController.Next();

Der Controller kümmert sich um die Navigation zur nächsten Seite.

Schritt 4 – web.config konfigurieren

Die UIP-Konfiguration der web.config ist im Prinzip selbstsprechend. Zuerst wird eine config-section definiert:

<configSections>
<section name=“uipConfiguration“ type=“Microsoft.ApplicationBlocks.UIProcess.UIPConfigHandler,Microsoft.ApplicationBlocks.UIProcess, Version=1.0.1.0,Culture=neutral,PublicKeyToken=null“/>
</configSections>

Anschließend wird die Section „uipConfiguration“ konfiguriert. Zuerst werden die „objectTypes“ erstellt. Dazu gehören zum Beispiel der statePersistenceProvider oder das Bekanntmachen des zu nutzenden Controllers.

Als nächsten werden die Views bekannt gemacht:

<views>
<view name=“View1“ type=“View1.aspx“ controller=“myController“/>
<view name=“View2“ type=“View2.aspx“ controller=“myController“/>
<view name=“View3“ type=“View3.aspx“ controller=“myController“/>
</views>

Der NavigationGraph sorgt für die Navigation innerhalb der Views. Hier kann die startView und die einzelnen Nodes eingestellt werden. Der Ausschnitt zeigt z.B. wo die View1 beim Klicken von „next“ hinnavigieren soll:

<navigationGraph iViewManager=“WebFormViewManager“ name=“UIPApplication“ state=“State“ statePersist=“SessionStatePersistence“ startView=“View1“>
<node view=“View1“>
<navigateTo navigateValue=“next“ view=“View2“/>
</node>

Starten des Projekts

Zu guter letzt kann das Projekt ausgeführt werden.

UIP erneut kompilieren

Wer mindestens die Version .NET 2.0 benutzt könnte folgenden Fehler bekommen:

“Parser Error Message: Exception in configuration section handler web.config Wildcard ‘##any’ allows element ‘statePersistenceProvider’, and causes the content model to become ambiguous. A content model must be formed such that during validation of an element information item sequence, the particle contained directly, indirectly or implicitly therein with which to attempt to validate each item in the sequence in turn can be uniquely determined without examining the content or attributes of that item, and without any information about the items in the remainder of the sequence..“

Für UIP2 wird .NET 2.0 genutzt. Die Version 2.0 ist restriktiver in der Verarbeitung von XML-Dateien, weshalb diese Exception beim ausführen des Projekts geworfen wird.

Der Fehler kann schnell bereinigt werden.

Dazu muss die installierte UIP Solution geöffnet und die Datei „UIPConfigSchema.xsd“ bearbeitet werden. Genauer gesagt muss dort einfach die Zeile

<xs:any maxOccurs=”unbounded” minOccurs=”0″ processContents=”skip” />

auskommentiert werden. (Näheres dazu hier http://forums.asp.net/p/713774/1081395.aspx#1081395)

Im Anschluss sollte die Ausführung funktionieren.

Integrierte Windows Authentifizierung einschalten

  • To enable integrated Windows authentication
    • Log on to the Web server by using an administrator account.
    • Click Start and then click Control Panel.
    • In Control Panel, double-click Administrative Tools.
    • Double-click Internet Information Services.
    • Click the Web server node.
    • A Web Sites folder opens underneath the server name.
    • You can configure authentication for all Web sites or for individual Web sites. To configure authentication for all Web sites, right-click the Web Sites folder and then click Properties. To configure authentication for an individual Web site, open the Web Sites folder, right-click the individual Web site, and then click Properties.
    • The Properties dialog box is displayed.
    • Click the Directory Security tab.
    • In the Anonymous access and authentication control section, click Edit.
    • The Authentication Methods dialog box is displayed.
    • Under Authenticated access, select Integrated Windows authentication.
    • Click OK to close the Authentication Methods dialog box.
    • Click OK to close the Properties dialog box.
    • Close the Internet Information Services window.
Tags »   , «

Trackback: Trackback-URL | Feed zum Beitrag: RSS 2.0
Thema: .NET 2.0, UIP

Diesen Beitrag kommentieren.

Kommentar abgeben