- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
Arbeitsablauf WebClient - Workflow stoppt nach Formulareingabe
Hallo zusammen,
ich habe eine Frage bzgl. eines Arbeitsbalaufs "generate Partly" im WebClient.
Mein Arbeitsablauf verwendet ein Formular, welches im WebClient auch angezeigt werden soll. Hier kann der User eine Seite/Folder auswรคhlen, welcher dann in ein Generierungsskript รผbertragen werden soll.
Im JavaClient gibt es hier keine Probleme, jedoch im WebClient.
Es scheint, als wรผrde der Arbeitsablauf noch am Startelement des Ablaufs hรคngen bleiben. Das Formular (also Teil meines Scripts) wird jedoch korrekt angezeigt.
Gibt es hier eine besondere Einstellung, welche ich wรคhlen muss?
Hier der Code:
import de.espirit.firstspirit.access.store.templatestore.WorkflowScriptContext;
import de.espirit.firstspirit.access.store.IDProvider.UidType;
import de.espirit.firstspirit.access.store.sitestore.PageRef;
import de.espirit.firstspirit.access.store.sitestore.SiteStoreFolder;
import com.idmedia.fs.publisher.Publisher;
wsc = (WorkflowScriptContext) context;
storeElement = wsc.getWorkflowable();
pData = wsc.showForm();
if (pData != null)
{
try
{
pElem = pData.get(null, "st_ref");
if (pElem != null)
storeElement = pElem.get().get(); // FormData.TargetReference.IDProvider
}
catch(Exception x)
{
storeElement = null;
}
}
OperationAgent operationAgent = wsc.requireSpecialist(OperationAgent.TYPE);
RequestOperation pRequestOperation = operationAgent.getOperation(RequestOperation.TYPE);
pRequestOperation.setKind(RequestOperation.Kind.INFO);
pRequestOperation.setTitle("Generate Partly");
pRequestOperation.perform("do transition done");
context.doTransition("Final");
Viele Grรผรe,
Phillip.
- Labels:
-
Developers
Accepted Solutions
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
okay ein letzter versuch meinerseits:
connection = wFSContext.getConnection().getRemoteConnection(configuration);
final Project remoteProject = connection.getProjectByName(projectName);
wie wird der schedule entry geholt? AdminService รผber die connection?
Wenn das nicht hilft muss ich leider passen, dann mรผsste man sich das im Detail ansehen.
Viele Grรผรe
Tobias
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
kurzer Nachtrag:
Die Rechte sind definiert fรผr die einzelnen Schritte; Berechtigung: everyone; Start automatisch รผber Rechte.
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
Hallo,
das nichts passiert deutet ja auf eine Exception hin. Scripte in Workflows sollten immer mit einem Try{}-catch(Exception e) {context.goToErrorState("Fehler", e); umschlossen werden. Im WF-Modell sollte eine Error Status eingebaut werden. Dann sollte man vorher die die Fehlerinformationen loggen oder aber vom ErrorState ausgehend eine Aktivitรคt starten, die aus der WF Session die vorhanden Fehlerinfomationen ausliest. In diesem Falle wรผrde ich zu ersterem tendieren zu debug zwecken. Fรผr den Einsatz bei Redakteueren wรคre letzteres empfehlenswert, da sie den Fehlerstatus sehen und dann noch handeln kรถnnen, z.B: zuweisung an jemanden, der dann eine Mail mit den Fehlerinformationen bekommt.
Viele Grรผรe
Tobias
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
Hallo,
ich habe dies nun einmal umgsetzt, aber der Arbeitsablauf bleibt leider dennoch wieder beim Startelement stehen; ich kann mittels
WorkflowScriptContext.showForm() lediglich Inhalte speichern, nicht aber ausfรผhren.
Selbst wenn ich nach dem Anzeigen des Forms mittels context.doTransition(....) zum Ende gehe wird der Arbeitsablauf immer auf dem Startelement stehen bleiben.
Woran kann das liegen? Es scheint schlicht, als wรผrde es nach showForm() im WebClient nicht weitergehen.
Viele Grรผรe,
Phillip.
PS: Hier nun aber einmal der angepasste Code:
import de.espirit.firstspirit.access.store.templatestore.WorkflowScriptContext;
import de.espirit.firstspirit.access.store.IDProvider.UidType;
import de.espirit.firstspirit.access.store.sitestore.PageRef;
import de.espirit.firstspirit.access.store.sitestore.SiteStoreFolder;
import com.idmedia.fs.publisher.Publisher;
wsc = (WorkflowScriptContext) context;
storeElement = null;
pData = null;
bError = false;
try
{
storeElement = wsc.getWorkflowable();
pData = wsc.showForm();
}
catch(Exception e)
{
bError = true;
pData = null;
storeElement = null;
}
if (pData != null && bError == false)
{
try
{
pElem = pData.get(null, "st_ref");
if (pElem != null)
storeElement = pElem.get().get(); // FormData.TargetReference.IDProvider
}
catch(Exception x)
{
storeElement = null;
}
}
if (storeElement != null)
{
Publisher pPublish = new Publisher(context);
pPublish.publish("generate partly [DE]", storeElement);
if (storeElement instanceof SiteStoreFolder)
pPublish.publishRemoteReferences((SiteStoreFolder)storeElement, "generate partly", "remoteMedia");
else if (storeElement instanceof PageRef)
pPublish.publishRemoteReferences((PageRef)storeElement, "generate partly", "remoteMedia" );
}
try
{
if (bError == false)
context.doTransition("Final");
else
context.doTransition("Error");
}
catch(Exception x)
{
context.goToErrorState("Error", e);
}
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
Hm das try catch mit dem gotoErrorState() muss anz aussen rum, die inneren catches sollten weg oder spezifiziert werden, sonst kรถnnen ausserordentliche Exceptions ja nicht im Error Status enden.
Ein Error Status hat keine keine eingehenden Transtionen sondern nur ausgehende...
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
Ich habe das nun so umgestellt aber es รคndert sich nichts am Verhalten.
Ist dies ein gewollter Effekt von showForm()? Oder gibt einen anderen (richtige) Weg?
Viele Grรผรe,
Phillip Austerfield.
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
Nein das ist natรผrlich kein gewollter Effekt Bitte mal so probieren (ungetestet):
import de.espirit.firstspirit.access.store.templatestore.WorkflowScriptContext;
import de.espirit.firstspirit.access.store.IDProvider.UidType;
import de.espirit.firstspirit.access.store.sitestore.PageRef;
import de.espirit.firstspirit.access.store.sitestore.SiteStoreFolder;
import com.idmedia.fs.publisher.Publisher;
wsc = (WorkflowScriptContext) context;
storeElement = null;
pData = null;
bError = false;
try
{
storeElement = wsc.getWorkflowable();
pData = wsc.showForm();
if (pData != null )
{
pElem = pData.get(null, "st_ref");
if (pElem != null)
storeElement = pElem.get().get(); // FormData.TargetReference.IDProvider
}
if (storeElement != null)
{
Publisher pPublish = new Publisher(context);
pPublish.publish("generate partly [DE]", storeElement);
if (storeElement instanceof SiteStoreFolder)
pPublish.publishRemoteReferences((SiteStoreFolder)storeElement, "generate partly", "remoteMedia");
else if (storeElement instanceof PageRef)
pPublish.publishRemoteReferences((PageRef)storeElement, "generate partly", "remoteMedia" );
} |
context.doTransition("Final");
}
catch(Exception e)
{
context.logError(e.getMessage(), e);
context.goToErrorState("Error", e);
}
was macht den der Publischer? Wenn der den Thread blockiert wird die Transtion evtl. erst verspรคtet geschaltet.
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
so, jetzt ist es klar.
Das Problem lag leider wirklich im Publisher.
Wir verwenden ein remote Media Projekt und ich starte รผber den Publisher nicht nur die Generierung im eigenen Projekt sondern fรผge auch alle referenzierten remote Medien in den generate Partly Auftrag des Remote Projektes und fรผhre diesen Task aus.
Die Exception, die geworfen wird ist nun
Target exception: de.espirit.firstspirit.client.io.SessionAlreadyBoundException: Session already bound to project 'Master [EN|DE|FR|IT] PROD'! You have to call unbindSession() first.
Ist dies รผberhaupt รผber den WebClient mรถglich?
Viele Grรผรe,
Phillip.
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
Der Fehler kommt mir bekannt vor (habe so ziemlich das selbe gebaut)
Welche Connection wird benutzt? Fรผr Aktionen im RemoteProjekt sollte auch die RemoteConnection benutzt werden.
Viele Grรผรe
Tobias
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
Hm, ich verรคndere die Connection nicht, sondern greife รผber den UserService auf das RemoteProject zu:
WorkflowScriptContext m_pContext
UserService pUserService = m_pContext.getUserService().getRemoteUserService(sSymName);
Project pProject = pUserService.getProject();
Und dann kann ich รผber pProject auf die Publizierungsauftrรคge zugreifen.
Wie sรคhe denn die alternative aus? Gibt es dazu eine Doku?
Viele Grรผรe,
Phillip.

