2016-10-18 2 views
0

enter image description hereWie kann ich einen Feldwert gesetzt anderen Feldwert zur Laufzeit in Activiti

Ich habe zwei Feld in meiner Activiti Form basiert. Ich habe zwei Felder Dated und Date Received, die beide Datumswerte nehmen. Ich versuche herauszufinden, welcher Activiti Service meiner Aufgabe am besten entspricht.

Meine Aufgabe ist dies: Das Feld Dated wird den Wert Date Received Feld übernehmen, wenn die Date Received mit einem Datum gefüllt ist. So z.B. Wenn Date Received ein Datum 12/03/1990 hat, nimmt das Feld Dated zur Laufzeit auch diesen Wert an.

Ich habe versucht, die folgende Logik zu implementieren, aber ich weiß nicht, ob es der richtige Ansatz ist, dies zu erreichen.

@Component("helloWorldBean")  
public class HelloWorldBean implements JavaDelegate{ 

     @Override 
     public void execute(DelegateExecution execution) throws Exception { 

      RuntimeService runtime = execution.getEngineServices().getRuntimeService(); 
      runtime.setVariable(execution.getId(), "addLetter-targetdatesladate", "HELLO WORLD"); 
     } 
} 

Wäre dies der richtige Ansatz für den Zugriff auf den Laufzeitdienst? Ich habe auch das Activiti Benutzerhandbuch im Abschnitt für dynamic field Injection überprüft, der here ist.

+1

Obwohl Runtimeservice Acquisition in Ordnung aussieht, können Sie execution.setVariable ("addLetter-targetdatesladate", "HELLO WORLD") direkt verwenden. –

+0

@AlexanderAnanik, danke ich werde das versuchen. Führt die Ausführung auch dann aus, wenn jemand einen Wert in ein Feld eingibt? Oder findet die Ausführung nur am Anfang/Ende eines Prozesses statt? – Arty

+0

Das Eingeben von Werten in ein Feld ist Teil von userTask und die Ausführung von userTask wird unter einer der Prozessausführungen ausgeführt. In der Zwischenzeit setzt setVariable die Prozesslevelvariable und nicht die lokale Variable der Ausführung/Task. Im Allgemeinen können Sie für jeden asynchronen Teil des Prozesses eine andere Ausführung erhalten, aber häufig wird die Ausführung für synchrone Teile wieder aktiviert. Soll die Task-Variable anstelle der Prozessvariablen gesetzt werden? –

Antwort

0

Entschuldigung für den eklatanten Stecker hier, aber das Brazos UI-Framework von BP3 behandelt genau dieses Szenario. Prozess 9 oder Task) Variablen werden automatisch im Kontext des Prozesses aktualisiert, da sie auf einer Seite/Form aktualisiert werden. Und Aktualisierungen können verkettet werden, so dass eine Aktualisierung einer Variablen automatisch die Aktualisierung einer anderen Variablen innerhalb des Prozesses selbst (nicht nur auf dem Formular) steuert.

Auf diese Weise können mehrere Benutzer dieselbe Gruppe von Prozess- (oder Aufgaben-) Variablen abonnieren und sofort von anderen erstellte Aktualisierungen sehen.

Wahrscheinlich wird diese Antwort gezogen werden, aber es klingt wie dies Ihren Anwendungsfall sehr gut erfüllen würde.

Brazos Developer Edition ist kostenlos bei www.bp-3.com zum Download

0

Dies ist ein Job für javascript statt java zu sein scheint. Legen Sie den Wert dependent field fest, indem Sie den Wert aus dem Feld dependee (d. H. Wenn Benutzer ein Feld auswählen, das andere Feld sollte ausgefüllt sein) auf Wertänderungsereignis verwenden.

Verwandte Themen