Section Handling


Allgemein

Welcher Benutzer bestimmte Teile (sogenannte Abschnitte) innerhalb des Smartforms sehen darf, wird durch das Abschnittshandling festgelegt. Diese Einschränkungen können entweder in einem ganzen Prozess oder auf einer bestimmten Ebene im Laufe des Prozesses gelten. Die folgenden Berechtigungen können erteilt oder widerrufen werden:

  • Schreibberechtigung

  • Leseberechtigung

Die Parameter für das Section Handling, mit dem die Rechte vergeben werden, werden beim Startereignis des Prozessmodells im Bereich 'Section Definition' definiert.


Vorbereitung des Smartforms

Der Teil, der von der Section Handling betroffen sein soll, wird z.B. mit DIV in der Smartform eingeschlossen und markiert somit ein abgeschlossenes Teil.

Das DIV sollte unbedingt das Attribut class="section" erhalten und der Name der ID kann individuell definiert werden. Ein Element, das das Attribut class = "section" hat, kann keine anderen Klassen haben. 

 

Im folgenden Beispiel sind zwei DIV-Bereiche zu sehen:

  • DIV mit ID="section1" enthält:

    • Bezeichnung 'Abschnitt1'

    • Eingabe 'Abschnitt1'

  • DIV mit ID="section2" enthält:

    • Bezeichnung 'Abschnitt2'

    • Eingabe 'Abschnitt2'

Der Inhalt innerhalb eines DIV ist irrelevant und kann optional sein.

<div class="section" id="section1"> <label for="section1Input">Section1</label> <input id="section1Input" name="section1Input" type="text"></input> </div> <div class="section" id="section2"> <label for="section2Input">Section2</label> <input id="section2Input" name="section2Input" type="text"></input> </div>

Wenn sich der Abschnitt in einer Tabelle () befindet, <table>sollte ein tBody(tr,td) anstelle eines DIV verwendet werden, um den Abschnitt zu definieren.


Erstellen einer Abschnittsbehandlung

In den folgenden Abschnitten wird ausführlich beschrieben, wie Lese- und Schreibberechtigungen implementiert werden. 

Parameter

Die Section Handling ist in XML (Extensible Markup Language) geschrieben. Die allgemeine Struktur ist wie folgt:

<section-node-mapping> <node-mapping name="Name_of_a_node_from_the_process"> <section name="ID_of_the_Section_from_the_smartform"> <read assignment="*"/> <write assignment="*"/> </section> </node-mapping> </section-node-mapping>

 

Detaillierte Beschreibung der einzelnen Parameter, die für die Implementierung eines Abschnittshandlings verwendet werden:

Parameter

Beschreibung

Parameter

Beschreibung

<section-node-mapping>

Das section-node-mapping-Element ist die Hauptkomponente der Section Handlings, in denen die Regeln der Einschränkung definiert sind.

<node-mapping>

Hier kann optional der Attributname angegeben werden. Dadurch ist es möglich, die Einschränkungen so zu konfigurieren, dass sie nur auf einer bestimmten Ebene innerhalb des Prozesses gelten, z.B. Benutzer A darf den Textbereich sehen, wenn das Smartformular während des ersten Knotens geöffnet wird, aber nicht, wenn sich der Prozess auf Knoten B befindet.
Wenn der Attributname an dieser Stelle nicht angegeben wird, erstrecken sich die Einschränkungen auf den gesamten Prozess. Zusätzlich <node-mapping> können mehrere innerhalb des Elements angegeben werden <section-node-mapping> .

<section>

Dieses Element muss den Attributnamen enthalten, der die ID des gewünschten Abschnitts des Smartforms angibt. Innerhalb des Section-Elements können nun die Rechte verteilt werden, die für den angegebenen Abschnitt gelten.

<read>

Über das read-Element kann definiert werden, wer den Inhalt innerhalb eines Abschnitts sehen kann. Die Personen werden über das Attribut Zuordnung ermittelt.

<write>

Über das write-Element kann definiert werden, wer den Inhalt innerhalb eines Abschnitts bearbeiten kann (z.B. in einem Textbereich schreiben). Die Personen werden über das Attribut Zuordnung ermittelt.

Zuweisung

Für die Zuordnungen innerhalb der Lese- und Schreibelemente stehen folgende Optionen zur Verfügung:

Zielgruppe

Notation

Zielgruppe

Notation

Einzelner Benutzer

"Benutzer(Benutzername)"

Swimlanes

"swimlane(swimlanename)"

Gruppen

"Gruppe(Gruppenname)"

Platzhalter (für keinen Benutzer)

""

Platzhalter (für alle Benutzer)

"*"

Negation (dieser Benutzer kann nicht...)

"! Benutzer(Benutzername)"

 

Mehrfachauswahl kann durch Semikolons realisiert werden, z.B.: "group(Sales);group(Controlling);user(johndoe)"

Verriegelnd

Die Sperrung kann auch für die Zuweisungen festgelegt werden und wird als Sperre für die Bearbeitung verwendet.

Verriegelung mit Stiftsymbol

Für die Implementierung der Sperrung muss der Parameter lockable="true" deklariert werden. Die Sperrung kann auf dem Node-Mapping oder dem Abschnitt selbst erfolgen. Das Sperrattribut des Abschnitts überwiegt immer das Attribut von Knotenzuordnungen.

<section-node-mapping> <node-mapping lockable="true"> <section name="section1"> <read assignment="*"/> <write assignment="*"/> </section> <section name="section2" lockable="false"> <read assignment="*"/> <write assignment="*"/> </section> </node-mapping> </section-node-mapping>

 

Wenn nun das Smartformular geöffnet ist, ist der Bereich standardmäßig gesperrt, aber über dem gesperrten 'Abschnitt1' befindet sich ein Stiftsymbol:

Über einen Klick auf das Symbol kann das gesperrte Array entsperrt und somit bearbeitet werden.

Das Array wird nach dem Klicken für alle anderen Benutzer gesperrt, d.h. wenn ein anderer Benutzer das Smartformular öffnet, ist es nicht möglich, den gesperrten Abschnitt zu entsperren und zu bearbeiten, während das Array vom ersten Benutzer entsperrt wird. Dadurch soll verhindert werden, dass Eingabedaten versehentlich von einem anderen Benutzer überschrieben werden. Das Feld kann nur von anderen Benutzern entsperrt werden, wenn der Benutzer, der die aktuelle Bearbeitungsberechtigung besitzt, das Smartformular speichert und schließt.

Stiftsymbole entfernen

Wenn lockable auf false gesetzt ist, erscheint ein Stiftsymbol vor einem Abschnitt, solange sich der Prozess nicht an dem Knoten befindet, der in der zugehörigen Knotenzuordnung angegeben wurde. Wenn sich der Prozess dann in der angegebenen Phase befindet, wird das Stiftsymbol entfernt. Wenn nun alle Stiftsymbole entfernt werden sollen, muss ein globales Node Mapping angegeben werden, in dem alle Abschnitte einmal definiert werden und eine Zuordnung erhalten. Wenn sich an der Funktionsweise des Smartforms nichts ändert, reicht es aus, jedem Abschnitt in der globalen Knotenzuordnung einen Platzhalter zu erteilen.


Beispiele

Die folgende Abbildung zeigt den Anfangszustand des Smartforms ohne Section Handling (alles ist sichtbar und editierbar):

Der obere Teil befindet sich im ersten Abschnitt und der untere Teil im zweiten Abschnitt. In den Beispielen sind alle für einen Benutzer als eingeschränkt ausgelegt, aber es ist auch möglich, alle folgenden Beispiele mit den im Abschnitt erläuterten Aufgaben durchzuführen Zuweisung. Die folgenden Szenarien können nun mit Hilfe der Section Handling generiert werden.

Abschnitt nur für bestimmte Benutzer sichtbar und editierbar

Jetzt soll der obere Teil nur für einen bestimmten Benutzer sichtbar und editierbar sein. Der dafür verwendete Parameter Section Handling könnte wie folgt aussehen:

 

Das Smartformular würde wie der Anfangszustand für den Benutzer John Doe aussehen, aber alle anderen können nur in 'Section2' lesen und schreiben.

Abschnitt nur für bestimmte Benutzer bearbeitbar

Nun soll der obere Teil sichtbar sein, aber nur für den Benutzer John Doe editierbar sein. Der dafür verwendete Parameter Section Handling könnte wie folgt aussehen:

 

Die 'Section1' ist nun für alle sichtbar, aber niemand kann in dieses Eingabefeld schreiben, außer dem Benutzer John Doe.

 

Abschnittsbeschränkung auf begrenztem Bereich innerhalb des Prozesses

Die Einschränkungen in den vorherigen Beispielen waren global und gelten für den gesamten Prozess. Nun ist es möglich, die Einschränkung an bestimmten Stellen im Prozess geltend zu machen. Das erste Beispiel, bei dem nur der zweite Abschnitt sichtbar ist, soll nun dahingehend erweitert werden, dass die Einschränkung nur gilt, wenn der Fortschritt des Prozesses an einem bestimmten Knoten erfolgt. Dies wird durch den folgenden Prozess veranschaulicht:

Das gewünschte Ziel ist, dass, solange sich der Prozess am Knoten 'Create personal file' befindet, nur der Benutzer John Doe den oberen Teil des Smartforms sehen darf. Sobald der Prozess am Knoten "Arbeitsplatz und ersten Arbeitstag organisieren" ist, darf jeder den oberen Teil sehen, kann aber nicht bearbeiten. Daher muss für jeden Knoten ein Abschnittsparameter angegeben werden. Die Parameter zur Erreichung des Ziels sind die folgenden:

 

Während des gesamten Prozesses kann der Benutzer John Doe das gesamte Smartformular anzeigen und bearbeiten, da es keine Einschränkungen gibt.

In der Aufgabe 'Persönliche Datei erstellen' wird jedem anderen Benutzer nur der 'Abschnitt2' des Smartforms angezeigt.

 

Wenn diese Aufgabe erledigt ist und der Prozess zur Aufgabe "Arbeitsplatz und ersten Arbeitstag organisieren" fortfährt, kann der Benutzer John Doe immer noch alles sehen. Für alle anderen ist der obere Teil der Smartform nicht bearbeitbar, aber sichtbar.

 

Abschnitt Handhabung beim Instanzstart

Wenn Teile beim Instanzstart eingeschränkt werden sollen, muss ein Node-Mapping mit dem Namen des Startereignisses eingefügt werden. Wenn kein Name für den Start angegeben ist, erhält der Start den Namen "StartEvent_1" standardmäßig und das Ende des Namens "EndEvent_1".

Wie verhält sich die Abschnittsbehandlung in der Smartformularsuche?

In der Smartform-Suche werden nur die Leseausdrücke verwendet, die für den gesamten Prozess gültig sind.

Wenn der Abschnitt allgemein zu sehen ist, kann er durchsucht werden und umgekehrt.