Beispiel einer programmierten C#-Einzelprüfung

Anhand eines Beispiels erfahren Sie, wie Sie eine Einzelprüfung in C# programmieren und danach über die Prüfkonfiguration in Innovator einbinden können.

Das Beispiel

Hinweis

Weitere Beispiele finden Sie in den Plug-in-Samples. Die Installation der Plug-in-Samples wird im Thema "Installation der Plug-in-Samples" erklärt.

Im folgenden Beispiel aus dem BPMN-Umfeld soll überprüft werden, ob die Geschäftsobjekte an den Input- bzw. Output-Datenobjekten einer Aufrufaktivität mit den Geschäftsobjekten an den Datenobjekten des aufgerufenen Prozesses übereinstimmen. Im Fehlerfall soll eine selbst definierte Meldung als Warnung in Innovator ausgegeben werden.

Eine solche Nichtübereinstimmung der Geschäftsobjekte kann sich z.B. wie folgt ergeben: Sie haben eine Aufrufaktivität mit einem Output-Datenobjekt angelegt, dem ein Geschäftsobjekt 1 zugeordnet ist. An dem Output-Datenobjekt ist allerdings noch kein Datenobjekt des aufgerufenen Elements eingestellt. In dem aufgerufenen Prozess haben Sie ein Output-Datenobjekt angelegt, dem ein anderes Geschäftsobjekt 2 zugeordnet ist. Sobald Sie die beiden Output-Datenobjekte miteinander verbinden, indem Sie das Datenobjekt des aufgerufenen bzw. aufrufenden Elements einstellen, führt dies zu einer Nichtübereinstimmung, da unterschiedliche Geschäftsobjekte referenziert werden.

Vorgehen

Um eine Prüfung zu erstellen, müssen Sie

  • die Einzelprüfung in C# programmieren und
  • die programmierte C#-Prüfung über die Prüfkonfigurationsdatei $INODIR/inoverify.xml in Innovator einbinden.

Anschließend steht Ihnen die Prüfung in Innovator zur Verfügung und Sie können sie im Prüfassistenten auf einer beliebigen Elementmenge aufrufen. Die Prüfergebnisse sowie die konfigurierte Fehlermeldung erhalten Sie im Toolfenster Prüfergebnisse.

Programmieren der C#-Einzelprüfung

Voraussetzungen

Eine Einzelprüfung sollte so konzipiert sein, dass sie immer genau einer Prüfungsmeldung entspricht.

Zusammenhang

Ziel ist das Erstellen einer C#-Klassenbibliothek, welche die Einzelprüfung enthält.

So gehen Sie vor

  1. Erstellen Sie in Visual Studio ein neues Projekt mit der Projektvorlage "Klassenbibliothek". Wählen Sie als Framework .NET 8.0 aus.

  2. Wählen Sie in den Projekteigenschaften als Ziel-Betriebssystem "Windows" aus.

  3. Erstellen Sie Referenzen auf folgende Innovator-Bibliotheken, die sich im Installationsverzeichnis befinden: MID.Innovator.API.dll, MID.Innovator.Core.Util.dll und MID.Innovator.WorkAreaContent.Verification.dll. Jeweils mit ausgeschalteter lokaler Kopie.

  4. Geben Sie Ihrer Bibliothek, dem Namespace und Ihrer Prüfungsklasse passende Namen: z.B. CSharpSampleVerification oder VerifyCallActivities.

    Hinweis

    Bitte beachten Sie, dass Sie die Klasse als public deklarieren.

  5. Leiten Sie Ihre Prüfungsklasse VerifyCallActivities von der Innovator-Basisklasse CSharpVerification ab.

    Hinweis

    Die Innovator-Basisklasse CSharpVerification ist im Namespace MID.Innovator.WorkAreaContent.Verification.Model definiert, den Sie somit über eine using-Anweisung in Ihre Datei mit aufnehmen müssen.

  6. Definieren Sie in Ihrer Prüfungsklasse eine Methode Verify, welche die Methode Verify der Basisklasse überschreibt.

    Hinweis

    Die Methode Verify erhält als Übergabeparameter die Menge der zu prüfenden Modellelemente.

  7. Implementieren Sie in der Methode Verify Ihren eigenen Prüfalgorithmus auf der Menge der zu prüfenden Elemente.

    Sie können hierfür beispielsweise eine eigene Prüfmethode anlegen, die jedes einzelne Element in der Prüfmenge iterativ überprüft.

  8. Rufen Sie im Fehlerfall die Methode ErrorFound auf, die in der Basisklasse CSharpVerification definiert ist, wobei Sie als Parameter das fehlerhafte Element übergeben.

    Hinweis

    Die Methode ErrorFound gibt ein Objekt der Klasse VerifyInstance zurück, in dem alle Informationen enthalten sind, die für die Fehlerausgabe benötigt werden. Diese Objekte sollten Sie in einer Liste aufsammeln.

  9. Geben Sie als Rückgabe Ihrer Methode Verify die Liste von VerifyInstance-Objekten zurück, die Sie durch Aufruf der Methode ErrorFound erhalten haben.

  10. Übersetzen Sie Ihren Code und kopieren Sie die C#-Klassenbibliothek in das Unterverzeichnis /Plugins des Installationsverzeichnisses.

Für obiges Beispiel könnte die Implementierung der Prüfungsklasse wie folgt aussehen:

Konfigurieren der C#-Einzelprüfung

Voraussetzungen

Sie haben eine programmierte Einzelprüfung als C#-Klassenbibliothek vorliegen.

Zusammenhang

Ziel ist das Einbinden der programmierten Einzelprüfung, so dass diese in Innovator zur Verfügung steht.

So gehen Sie vor

  1. Öffnen Sie die Prüfkonfiguration $INODIR/inoverify.xml mit einem Texteditor oder einem XML-Editor.

    Hinweis

    Sollte diese Datei nicht vorliegen, erstellen Sie sie gemäß den Anweisungen auf der Seite "Eigene Prüfaktionen konfigurieren".

  2. Erstellen Sie eine Einzelprüfung (XML-Element SingleVerification) unter dem XML-Element Singles.

  3. Geben Sie einen lokalisierten Namen für Ihre C#-Einzelprüfung (XML-Element Name) an.

    Hinweis

    Über diesen Namen werden Sie die Einzelprüfung in Innovator identifizieren und aufrufen können.

  4. Geben Sie als Typ der Einzelprüfung (XML-Element Type) CLR an, da es sich um eine in C# implementierte Prüfung handelt.

  5. Geben Sie eine lokalisierte Beschreibung der Einzelprüfung (XML-Element Description) an.

    Hinweis

    Diese Beschreibung werden Sie als Tooltipp der Einzelprüfung auf der Seite des Prüfassistenten zur Auswahl von Einzelprüfungen wiederfinden.

  6. Geben Sie den qualifizierten Namen der implementierenden C#-Klasse an (XML-Element Check) (in unserem Beispiel MID.Innovator.Plugins.Verification.Verifications.VerifyCallActivities).

  7. Geben Sie den der .NET-Klassenbibliothek der implementierenden C#-Klasse an (XML-Element Assembly) (in unserem Beispiel MID.Innovator.Plugins.Verification).

  8. Geben Sie einen lokalisierten Meldungstext an, der im Fehlerfall im Ergebnisfenster mit ausgegeben wird (XML-Element Message).

  9. Geben Sie den Typ der Meldung an, der im Fehlerfall im Ergebnisfenster mit ausgegeben wird (XML-Element MessageKind) (in unserem Beispiel Warning).

  10. Geben Sie die Stereotype an, auf deren Modellelemente die Einzelprüfung anwendbar sein soll (XML-Element Stereotypes mit den untergeordneten XML-Elementen VerifyStereotype), im Einzelnen den Elementtyp des Stereotyps (XML-Element MetaType), das definierende Profil des Stereotyps (XML-Element Profile), den Namen des Stereotyps (XML-Element Stereotype), eine Prüfungsnummer (XML-Element Id) und ob die Einzelprüfung für diesen Stereotyp aktiv ist (XML-Element IsActive).

  11. Geben Sie die Parameter an, die die Prüfung benötigt. (XML-Element Parameters mit den untergeordneten XML-Elementen VerifyParameter). Diese Parameter stehen dann in der Methode zur Verfügung. Sie bestehen aus dem Parameter (XML-Element Name) und dem Wert des Parameters (XML-Element Value).

  12. Speichern und schließen Sie die Prüfkonfigurationsdatei.

Für obiges Beispiel könnte die Konfiguration der implementierten Prüfungsklasse wie folgt aussehen: