aVogt
Returning Creator

Pflichteingaben im Workflowdialog

Jump to solution

Hallo bei einem 4-Augen-WF macht es Sinn, im nachfolgenden (automatischen öffnenden) Dialog etas einzugeben:

wf_dialog.jpg

Nun sind manchmal die Redakteure im Stress und klicken auf Anfordern ohne etwas einzugeben. Kann man irgendwo einstellen, dass der Kommentar z.B. eine Pflichteingabe erfordert?

andere Möglichkeit:

Im nächten Schritt (zusätzlichen Schritt), könnte ich in einem Script die Felder abfragen. Wenn die nicht eingegeben sind, könnte ich den Dialog wieder anzeigen lassen?

0 Kudos
13 Replies
aVogt
Returning Creator

Hallo,

ich versuche es mal mein Anliegen zu schildern. Wir haben folgenden Arbeitsablauf:

arbeitsablauf.jpg

Mir geht es um die erste Aktivität. Hier soll der Nutzer unbedingt einen Kommentar eingeben. Das klappt nun dank Ihrer Mithilfe.

In dem Dialog (siehe Bild aus dem ersten Eintrag) gibt es zwei Buttons "anfordern" und "abbrechen". Wenn ich das erste mal "abbrechen" klicke, wird der Dialog beendet und der Arbeitsablauf bleibt in der Aktivität stehen - genau wie gewünscht.

Klicke ich "anfordern" und habe keinen Kommentar eingegeben, wird ein Kommentar ausgegeben, dass ein Kommentar eingegeben werden muss und der Arbeitsablaufdialog wird wieder angezeigt. Wenn ich nun auf "abbrechen" klicke, läuft der Arbeitsablauf weiter (es werden die nächsten beiden Aktionen ausgeführt und der Arbeitsablauf kommt in "Freigabe prüfen" zum stehen). Der Arbeitsablauf soll aber auch in der Aktion stehen bleiben.

Hier das Script:

   transition = context.showActionDialog();
    if(transition == null) {
        return;
    }
    comment = context.getTransitionParameters().getComment();
    while (comment == null || comment.length() == 0) {
    JOptionPane.showMessageDialog(null,"Bitte geben Sie einen Kommentar an!.");

        transition = context.showActionDialog();
        comment = context.getTransitionParameters().getComment();
        if(transition == null) {
            break;
        }
    }
    if(transition == null) {
        return;
    }

Das erste

   if(transition == null) {
         return;
     }

funktioniert (das erste mal "abbrechen" klicken). Die while-Schleife fragt solange den Kommentar ab, bis er nicht mehr leer ist. Wenn ich dann innerhalb der while-Schleife bin, bricht das transition==null die Abfrage ab. das transition == null nach der Schleife, stoppt den Arbeitsablauf aber nicht, wie das vor der while-Schleife. Ich sehe da keinen Unterschied.

Nun hatte ich eine weitere Transition von der ersten Aktion erstellt, die bei "abbrechen" gegangen werden soll. Diese wird mir dann aber in dem Arbeitsablaufdialog angezeigt. Somit habe ich zwei mal "abbrechen" als button in dem Dialog stehen.Wenn man in dem Dialog Transition nicht anzeigen lassen könnte, wäre das auch ein Weg.

Ich möchte also, dass der Arbeitsablauf wenn "abbrechen" geklickt wird in der Aktivität verbleibt.

0 Kudos
aVogt
Returning Creator

Hallo,

ich habe etwas weiter "gefrorscht".

Wenn ich einen Button in dem Eingabedialog drücke bekomme ich diesen mit:

     transition = context.showActionialog();

Das wäre bei Abbrechen null und bei einem anderen Button den Namen der Trasition.

Mittels context.getTransiton() bekomme ich laut Api "Return result transtion of the script excution"

Bei Abbrechen liefert context.getTransiton() =>null

Bei einem anderen Button bekomme ich den Namen der Transition.

Allerdings scheint bei Abbrechen nicht wirklich etwas gesetzt zu werden!! Ich bekomme ich immer noch den Namen der Trasition von dem Button, den ich vorher gedrückt habe, obwohl ich gerade Abbrechen gedrück habe (und das mir vorher null lieferte).

Bsp:
context.getTransiton() => gTr
transition = Tr

1)
Dialog => Button "Abbrechen"
    gTr = null
    Tr = null

2)   
Dialog => Button "anfordern"
    gTr = anfordern
    Tr = anfordern

da der Kommentar nicht eingegeben wurde rufe ich den Dialog noch einmal auf
Dialog => Button "anfordern"
    gTr = aufrufen
    Tr = null

Eigentlich sollte nach meinem Verständnis auch gTr null liefern. Ich kann zwar transition=null setzen, bringt mir aber auch nichts.
Nachdem ein "nicht abbrechen" Button einmal gedrückt wurde, scheine ich keine Möglichkeit zu haben, den Arbeitsablauf abzubrechen.

Ist meine Vermutung richtig und so gewollt?
Habe ich irgendeine Chance den Arbeitsablauf abzubrechen (ohne zusätzliche Trasition)?

0 Kudos
gockel
Crownpeak employee

Hallo,

für das von Ihnen beschriebene Problem wurde intern nun ein Ticket eingestellt (#85327).

Als Workaround könnten Sie ihr Skript so umstellen. (Letztes if)

transition = context.showActionDialog();
if(transition == null) {
    return;
}
comment = context.getTransitionParameters().getComment();
while (comment == null || comment.length() == 0) {
    JOptionPane.showMessageDialog(null,"Bitte geben Sie einen Kommentar an!.");

    transition = context.showActionDialog();
    comment = context.getTransitionParameters().getComment();
    if(transition == null) {
            break;
    }
}
if(transition == null) {
    // workaround
    context.getTransitionParameters().setTransition(null);
    return;
}

0 Kudos
aVogt
Returning Creator

Super, nun funktioniert alles wie gewünscht!

Vielen Dank!

0 Kudos