Wie 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.
Obwohl Runtimeservice Acquisition in Ordnung aussieht, können Sie execution.setVariable ("addLetter-targetdatesladate", "HELLO WORLD") direkt verwenden. –
@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
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? –