Search the FirstSpirit Knowledge Base
Hallo,
folgender Anwendungsfall: der Redakteur tauscht in der Medienverwaltung ein PDF aus und möchte einen Workflow starten, der das PDF freigibt und alle Seiten neu publiziert, die dieses PDF referenziert.
Im SiteArchitekt kein Problem, wie kann ich dies aber im ContentCreator anbieten?
Wir verwenden FirstSpirit 5.2.1002
Mit freundlichem Gruß
Thorben Hischke
Nach einigen Wühlen in der Tiefe der API habe ich folgende Möglichkeit per Plugin-Erweiterung gefunden:
public class StartWorkflowInMediaManagement implements MediaManagementItemsPlugin {
// ...
@Override
public Collection<? extends MediaManagementItem> getItems() {
return Collections.singletonList(new StartWorkflowExecutableInlineEditItemMedia(_context, _workflowUid));
}
private static class StartWorkflowExecutableInlineEditItemMedia implements ExecutableMediaManagementItem {
// ...
@Override
public void execute(MediaManagementContext arg0) {
// TODO Auto-generated method stub
}
@Override
public boolean isEnabled(MediaManagementContext arg0) {
return true;
}
@Override
public boolean isVisible(MediaManagementContext arg0) {
return true;
}
}
}
Es bleibt mir aber ein Rätsel, warum ich das programmatisch per Plugin-Erweiterung entwickeln muss. Von einem CMS hätte ich erwartet, dass ich die entwickelten Workflows per Konfiguration im ContentCreator benutzen kann. Habe ich da noch etwas übersehen?
Mit freundlichem Gruß
Thorben Hischke
Nach einigen Wühlen in der Tiefe der API habe ich folgende Möglichkeit per Plugin-Erweiterung gefunden:
public class StartWorkflowInMediaManagement implements MediaManagementItemsPlugin {
// ...
@Override
public Collection<? extends MediaManagementItem> getItems() {
return Collections.singletonList(new StartWorkflowExecutableInlineEditItemMedia(_context, _workflowUid));
}
private static class StartWorkflowExecutableInlineEditItemMedia implements ExecutableMediaManagementItem {
// ...
@Override
public void execute(MediaManagementContext arg0) {
// TODO Auto-generated method stub
}
@Override
public boolean isEnabled(MediaManagementContext arg0) {
return true;
}
@Override
public boolean isVisible(MediaManagementContext arg0) {
return true;
}
}
}
Es bleibt mir aber ein Rätsel, warum ich das programmatisch per Plugin-Erweiterung entwickeln muss. Von einem CMS hätte ich erwartet, dass ich die entwickelten Workflows per Konfiguration im ContentCreator benutzen kann. Habe ich da noch etwas übersehen?
Mit freundlichem Gruß
Thorben Hischke
Hi Thorben, bist du mit dem Plugin weiter gekommen? Konntest du dein pdf swapping umsetzten?
Hallo Martin,
ja, mit dem Plugin bin ich weiter gekommen. Damit gebe ich dem Redakteur genau dort die Möglichkeit, den entsprechenden Workflow zu starten, wo er mit dem PDF arbeitet ... und zwar in der Medienverwaltung.
Gruß
Thorben
Weis jemand wie man es schafft bei der Lösung von Thorben Hischke den Workflow nicht nur programmatisch durchzuführen, sondern auch die dazugehörigen Fenster angezeigt bekomme? Oder zumindest einen Dialog/RequestOperation anzeigen lassen kann?
Ich bekomme wenn ich die showActionDialog -Methode des WorkflowAgent.WorkflowProcessContext aufrufe immer eine UnsupportedOperationException("workflow in headless mode - no action dialog supported"). Das liegt wohl am Context den ich innerhalb der Medienverwaltung zur Verfügung habe.
Mit Hilfe von diesem Context kann ich außerdem auch kein RequestOperation-Objekt bekommen, das ist durch agent.getOperation(RequestOperation.TYPE) automatisch null.
Gruß
Dennis
Das Problem ist mittlerweile eingekreist und als Bug von e-Spirit identifiziert worden. Folgender Code sollte korrekt funktionieren und einen Workflow antriggern können, inkl. Dialog:
@Override
public void execute(MediaManagementContext mediaManagementContext) {
...
IDProvider element = mediaManagementContext.getElement();
WorkflowAgent agent = mediaManagementContext.requestSpecialist(WorkflowAgent.TYPE);
WorkflowProcessContext process = agent.startWorkflow(_workflow, element);
...
}