jst
New Responder

DB-Module // DB-Layer zweier Schemata wechseln

Hallo zusammen,

wir verwenden in zusammenhang mit CorporateDatabase und CorporateContent das DB-Module zum wechseln des DB-Layers für ein Schema. Wir haben jetzt aber zwei Schemata, bei denen auf den gleichen Layer gewechselt werden muss. Unsere Idee war es jetzt, dass man ja die Methode für den Switch einfach zweimal hintereinander aufrufen kann:

//!Beanshell

import com.espirit.firstspirit.packagepool.ChangeDatabaseLayer;

ChangeDatabaseLayer.changeLayerInformation(context,"templates","SCHEMA1","FS_MASTER");

ChangeDatabaseLayer.changeLayerInformation(context,"templates","SCHEMA2","FS_MASTER");

Als Problem gestaltet sich hier nur, dass changeLayerInformation die Transition des Workflows automatisch weiter schaltet und somit den Workflow beendet bevor der zweite Methoden aufruf gestartet wurde.

Gibt's ein Best-Practise, wie hier vor zugehen ist? Kann man Workflows verketten?

Viele Grüße,

Jörn

0 Kudos
1 Reply
jst
New Responder

Hallo zusammen,

die Lösung habe ich nun bereits selbst entdeckt 🙂

Das weiterschalten der Transition kann dadurch verhindert werden, dass man dem Script vorgegaukelt, dass es vom Client ausgeführt wird. D.h. man gibt keine WorkflowScriptContext hinein, sondern einen GuiScriptContext.

Dann muss man sich natürlich sich natürlich selbst darüm kümmern, dass der Arbeitsablauf beendet wird.

//!Beanshell

import de.espirit.firstspirit.access.GuiScriptContext;

import com.espirit.firstspirit.packagepool.ChangeDatabaseLayer;

ChangeDatabaseLayer.changeLayerInformation((GuiScriptContext) context,"templates","SCHEMA1","FS_MASTER");

ChangeDatabaseLayer.changeLayerInformation((GuiScriptContext) context,"templates","SCHEMA2","FS_MASTER");

context.doTransition("transitionToEnd");

Auf die Idee bin ich gekommen, da das Script auch ohne einen Arbeitsablauf ausgeführt werden kann. In diesem Falle würde dann der changeLayerInformation ein GuiScriptContext übergeben.

Viele Grüße,

Jörn

0 Kudos