Search the FirstSpirit Knowledge Base
Hallo bei einem 4-Augen-WF macht es Sinn, im nachfolgenden (automatischen öffnenden) Dialog etas einzugeben:
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?
Hallo,
ich versuche es mal mein Anliegen zu schildern. Wir haben folgenden Arbeitsablauf:
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.
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)?
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;
}
Super, nun funktioniert alles wie gewünscht!
Vielen Dank!