You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@lenya.apache.org by an...@apache.org on 2005/08/30 18:20:49 UTC
svn commit: r264805 - in /lenya/trunk/src: java/org/apache/lenya/
java/org/apache/lenya/cms/ac/workflow/
java/org/apache/lenya/cms/cocoon/acting/
java/org/apache/lenya/cms/cocoon/components/modules/input/
java/org/apache/lenya/cms/cocoon/flow/ java/org...
Author: andreas
Date: Tue Aug 30 09:20:15 2005
New Revision: 264805
URL: http://svn.apache.org/viewcvs?rev=264805&view=rev
Log:
Removed workflow situation. The situation information is now implicitely provided by the workflowable object. This allows to get rid of WorkflowManager.getSituation(), which required it to be Contextualizable (which fails with pooling).
Modified:
lenya/trunk/src/java/org/apache/lenya/cms/ac/workflow/WorkflowAuthorizer.java
lenya/trunk/src/java/org/apache/lenya/cms/cocoon/acting/WorkflowInvokerAction.java
lenya/trunk/src/java/org/apache/lenya/cms/cocoon/components/modules/input/WorkflowModule.java
lenya/trunk/src/java/org/apache/lenya/cms/cocoon/flow/FlowHelper.java
lenya/trunk/src/java/org/apache/lenya/cms/cocoon/flow/FlowHelperImpl.java
lenya/trunk/src/java/org/apache/lenya/cms/cocoon/transformation/WorkflowMenuTransformer.java
lenya/trunk/src/java/org/apache/lenya/cms/editors/EditDocument.java
lenya/trunk/src/java/org/apache/lenya/cms/editors/forms/FormsEditor.java
lenya/trunk/src/java/org/apache/lenya/cms/editors/forms/OneFormEditor.java
lenya/trunk/src/java/org/apache/lenya/cms/site/usecases/MoveSubsite.java
lenya/trunk/src/java/org/apache/lenya/cms/site/usecases/Overview.java
lenya/trunk/src/java/org/apache/lenya/cms/site/usecases/SiteOverview.java
lenya/trunk/src/java/org/apache/lenya/cms/task/WorkflowInvoker.java
lenya/trunk/src/java/org/apache/lenya/cms/workflow/DocumentWorkflowable.java
lenya/trunk/src/java/org/apache/lenya/cms/workflow/RoleCondition.java
lenya/trunk/src/java/org/apache/lenya/cms/workflow/WorkflowUtil.java
lenya/trunk/src/java/org/apache/lenya/cms/workflow/usecases/History.java
lenya/trunk/src/java/org/apache/lenya/cms/workflow/usecases/InvokeWorkflow.java
lenya/trunk/src/java/org/apache/lenya/lenya.roles
lenya/trunk/src/java/org/apache/lenya/workflow/Condition.java
lenya/trunk/src/java/org/apache/lenya/workflow/WorkflowEngine.java
lenya/trunk/src/java/org/apache/lenya/workflow/WorkflowManager.java
lenya/trunk/src/java/org/apache/lenya/workflow/Workflowable.java
lenya/trunk/src/java/org/apache/lenya/workflow/impl/BooleanVariableCondition.java
lenya/trunk/src/java/org/apache/lenya/workflow/impl/WorkflowEngineImpl.java
lenya/trunk/src/java/org/apache/lenya/workflow/impl/WorkflowManagerImpl.java
lenya/trunk/src/webapp/lenya/pubs/blog/java/src/org/apache/lenya/cms/workflow/usecases/Publish.java
lenya/trunk/src/webapp/lenya/pubs/default/java/src/org/apache/lenya/defaultpub/cms/usecases/Deactivate.java
lenya/trunk/src/webapp/lenya/pubs/default/java/src/org/apache/lenya/defaultpub/cms/usecases/Publish.java
Modified: lenya/trunk/src/java/org/apache/lenya/cms/ac/workflow/WorkflowAuthorizer.java
URL: http://svn.apache.org/viewcvs/lenya/trunk/src/java/org/apache/lenya/cms/ac/workflow/WorkflowAuthorizer.java?rev=264805&r1=264804&r2=264805&view=diff
==============================================================================
--- lenya/trunk/src/java/org/apache/lenya/cms/ac/workflow/WorkflowAuthorizer.java (original)
+++ lenya/trunk/src/java/org/apache/lenya/cms/ac/workflow/WorkflowAuthorizer.java Tue Aug 30 09:20:15 2005
@@ -80,10 +80,16 @@
try {
resolver = (SourceResolver) this.manager.lookup(SourceResolver.ROLE);
Session session = RepositoryUtil.getSession(request, getLogger());
- DocumentIdentityMap map = new DocumentIdentityMap(session, this.manager, getLogger());
+ DocumentIdentityMap map = new DocumentIdentityMap(session,
+ this.manager,
+ getLogger());
if (map.isDocument(webappUrl)) {
Document document = map.getFromURL(webappUrl);
- authorized = WorkflowUtil.canInvoke(this.manager, getLogger(), document, event);
+ authorized = WorkflowUtil.canInvoke(this.manager,
+ session,
+ getLogger(),
+ document,
+ event);
}
} catch (final Exception e) {
throw new AccessControlException(e);
Modified: lenya/trunk/src/java/org/apache/lenya/cms/cocoon/acting/WorkflowInvokerAction.java
URL: http://svn.apache.org/viewcvs/lenya/trunk/src/java/org/apache/lenya/cms/cocoon/acting/WorkflowInvokerAction.java?rev=264805&r1=264804&r2=264805&view=diff
==============================================================================
--- lenya/trunk/src/java/org/apache/lenya/cms/cocoon/acting/WorkflowInvokerAction.java (original)
+++ lenya/trunk/src/java/org/apache/lenya/cms/cocoon/acting/WorkflowInvokerAction.java Tue Aug 30 09:20:15 2005
@@ -101,7 +101,7 @@
if (getLogger().isDebugEnabled()) {
getLogger().debug(" Invoking workflow event");
}
- WorkflowUtil.invoke(this.manager, getLogger(), document, eventName);
+ WorkflowUtil.invoke(this.manager, session, getLogger(), document, eventName);
return Collections.EMPTY_MAP;
}
Modified: lenya/trunk/src/java/org/apache/lenya/cms/cocoon/components/modules/input/WorkflowModule.java
URL: http://svn.apache.org/viewcvs/lenya/trunk/src/java/org/apache/lenya/cms/cocoon/components/modules/input/WorkflowModule.java?rev=264805&r1=264804&r2=264805&view=diff
==============================================================================
--- lenya/trunk/src/java/org/apache/lenya/cms/cocoon/components/modules/input/WorkflowModule.java (original)
+++ lenya/trunk/src/java/org/apache/lenya/cms/cocoon/components/modules/input/WorkflowModule.java Tue Aug 30 09:20:15 2005
@@ -24,8 +24,11 @@
import org.apache.avalon.framework.configuration.Configuration;
import org.apache.avalon.framework.configuration.ConfigurationException;
+import org.apache.cocoon.environment.ObjectModelHelper;
import org.apache.lenya.cms.publication.Document;
import org.apache.lenya.cms.publication.PageEnvelope;
+import org.apache.lenya.cms.repository.RepositoryUtil;
+import org.apache.lenya.cms.repository.Session;
import org.apache.lenya.cms.workflow.DocumentWorkflowable;
import org.apache.lenya.workflow.Version;
import org.apache.lenya.workflow.Workflow;
@@ -69,7 +72,11 @@
Document document = envelope.getDocument();
if (document != null && document.exists()) {
wfManager = (WorkflowManager) this.manager.lookup(WorkflowManager.ROLE);
- DocumentWorkflowable workflowable = new DocumentWorkflowable(document,
+ Session session = RepositoryUtil.getSession(ObjectModelHelper.getRequest(objectModel),
+ getLogger());
+ DocumentWorkflowable workflowable = new DocumentWorkflowable(this.manager,
+ session,
+ document,
getLogger());
if (wfManager.hasWorkflow(workflowable)) {
@@ -94,7 +101,8 @@
}
}
} else if (name.equals(HISTORY_PATH)) {
- final String path = document.getPublication().getPathMapper()
+ final String path = document.getPublication()
+ .getPathMapper()
.getPath(document.getId(), document.getLanguage());
final String uri = "content/workflow/history/" + path;
final File pubDir = document.getPublication().getDirectory();
Modified: lenya/trunk/src/java/org/apache/lenya/cms/cocoon/flow/FlowHelper.java
URL: http://svn.apache.org/viewcvs/lenya/trunk/src/java/org/apache/lenya/cms/cocoon/flow/FlowHelper.java?rev=264805&r1=264804&r2=264805&view=diff
==============================================================================
--- lenya/trunk/src/java/org/apache/lenya/cms/cocoon/flow/FlowHelper.java (original)
+++ lenya/trunk/src/java/org/apache/lenya/cms/cocoon/flow/FlowHelper.java Tue Aug 30 09:20:15 2005
@@ -27,7 +27,6 @@
import org.apache.lenya.cms.publication.util.DocumentHelper;
import org.apache.lenya.cms.rc.FileReservedCheckInException;
import org.apache.lenya.cms.rc.RevisionController;
-import org.apache.lenya.workflow.Situation;
import org.apache.lenya.workflow.WorkflowException;
/**
@@ -40,14 +39,6 @@
* The Avalon Role.
*/
String ROLE = FlowHelper.class.getName();
-
- /**
- * Returns the current workflow situation.
- * @param cocoon The FOM_Cocoon object.
- * @return A situation.
- * @throws AccessControlException when something went wrong.
- */
- Situation getSituation(FOM_Cocoon cocoon) throws AccessControlException;
/**
* Returns the current page envelope.
Modified: lenya/trunk/src/java/org/apache/lenya/cms/cocoon/flow/FlowHelperImpl.java
URL: http://svn.apache.org/viewcvs/lenya/trunk/src/java/org/apache/lenya/cms/cocoon/flow/FlowHelperImpl.java?rev=264805&r1=264804&r2=264805&view=diff
==============================================================================
--- lenya/trunk/src/java/org/apache/lenya/cms/cocoon/flow/FlowHelperImpl.java (original)
+++ lenya/trunk/src/java/org/apache/lenya/cms/cocoon/flow/FlowHelperImpl.java Tue Aug 30 09:20:15 2005
@@ -48,9 +48,7 @@
import org.apache.lenya.cms.repository.RepositoryUtil;
import org.apache.lenya.cms.repository.Session;
import org.apache.lenya.cms.workflow.WorkflowUtil;
-import org.apache.lenya.workflow.Situation;
import org.apache.lenya.workflow.WorkflowException;
-import org.apache.lenya.workflow.WorkflowManager;
/**
* Flowscript utility class. The FOM_Cocoon object is not passed in the constructor to avoid errors.
@@ -66,23 +64,6 @@
}
/**
- * @see org.apache.lenya.cms.cocoon.flow.FlowHelper#getSituation(org.apache.cocoon.components.flow.javascript.fom.FOM_Cocoon)
- */
- public Situation getSituation(FOM_Cocoon cocoon) throws AccessControlException {
- Situation situation;
- WorkflowManager wfManager = null;
- try {
- wfManager = (WorkflowManager) this.manager.lookup(WorkflowManager.ROLE);
- situation = wfManager.getSituation();
- } catch (ServiceException e) {
- throw new RuntimeException(e);
- } finally {
- this.manager.release(wfManager);
- }
- return situation;
- }
-
- /**
* @see org.apache.lenya.cms.cocoon.flow.FlowHelper#getPageEnvelope(org.apache.cocoon.components.flow.javascript.fom.FOM_Cocoon)
*/
public PageEnvelope getPageEnvelope(FOM_Cocoon cocoon) throws PageEnvelopeException {
@@ -166,7 +147,9 @@
public void triggerWorkflow(FOM_Cocoon cocoon, String event) throws WorkflowException,
PageEnvelopeException, AccessControlException {
Document document = getPageEnvelope(cocoon).getDocument();
- WorkflowUtil.invoke(this.manager, getLogger(), document, event);
+ Request request = getRequest(cocoon);
+ Session session = RepositoryUtil.getSession(request, getLogger());
+ WorkflowUtil.invoke(this.manager, session, getLogger(), document, event);
}
/**
Modified: lenya/trunk/src/java/org/apache/lenya/cms/cocoon/transformation/WorkflowMenuTransformer.java
URL: http://svn.apache.org/viewcvs/lenya/trunk/src/java/org/apache/lenya/cms/cocoon/transformation/WorkflowMenuTransformer.java?rev=264805&r1=264804&r2=264805&view=diff
==============================================================================
--- lenya/trunk/src/java/org/apache/lenya/cms/cocoon/transformation/WorkflowMenuTransformer.java (original)
+++ lenya/trunk/src/java/org/apache/lenya/cms/cocoon/transformation/WorkflowMenuTransformer.java Tue Aug 30 09:20:15 2005
@@ -142,7 +142,10 @@
}
if (hasWorkflow()) {
- DocumentWorkflowable workflowable = new DocumentWorkflowable(document, getLogger());
+ DocumentWorkflowable workflowable = new DocumentWorkflowable(this.manager,
+ session,
+ document,
+ getLogger());
Workflow workflow = workflowManager.getWorkflowSchema(workflowable);
String[] events = workflow.getEvents();
for (int i = 0; i < events.length; i++) {
Modified: lenya/trunk/src/java/org/apache/lenya/cms/editors/EditDocument.java
URL: http://svn.apache.org/viewcvs/lenya/trunk/src/java/org/apache/lenya/cms/editors/EditDocument.java?rev=264805&r1=264804&r2=264805&view=diff
==============================================================================
--- lenya/trunk/src/java/org/apache/lenya/cms/editors/EditDocument.java (original)
+++ lenya/trunk/src/java/org/apache/lenya/cms/editors/EditDocument.java Tue Aug 30 09:20:15 2005
@@ -43,10 +43,15 @@
SourceResolver resolver = null;
try {
resolver = (SourceResolver) this.manager.lookup(SourceResolver.ROLE);
- SourceUtil.copy(resolver, getParameterAsString(SOURCE_URI), getSourceDocument()
- .getSourceURI());
+ SourceUtil.copy(resolver,
+ getParameterAsString(SOURCE_URI),
+ getSourceDocument().getSourceURI());
- WorkflowUtil.invoke(this.manager, getLogger(), getSourceDocument(), "edit");
+ WorkflowUtil.invoke(this.manager,
+ getSession(),
+ getLogger(),
+ getSourceDocument(),
+ "edit");
} finally {
if (resolver != null) {
@@ -60,7 +65,8 @@
*/
protected Node[] getNodesToLock() throws UsecaseException {
if (getLogger().isDebugEnabled()) {
- getLogger().debug("EditDocument::getObjectsToLock() called on source document [" + getSourceDocument().getId() + "]");
+ getLogger().debug("EditDocument::getObjectsToLock() called on source document ["
+ + getSourceDocument().getId() + "]");
}
Node[] objects = { getSourceDocument().getRepositoryNode() };
Modified: lenya/trunk/src/java/org/apache/lenya/cms/editors/forms/FormsEditor.java
URL: http://svn.apache.org/viewcvs/lenya/trunk/src/java/org/apache/lenya/cms/editors/forms/FormsEditor.java?rev=264805&r1=264804&r2=264805&view=diff
==============================================================================
--- lenya/trunk/src/java/org/apache/lenya/cms/editors/forms/FormsEditor.java (original)
+++ lenya/trunk/src/java/org/apache/lenya/cms/editors/forms/FormsEditor.java Tue Aug 30 09:20:15 2005
@@ -92,7 +92,7 @@
this.tagID = _tagID;
}
}
-
+
protected static final String WORKFLOW_INVOKED = "private.workflowInvoked";
/**
@@ -108,7 +108,11 @@
*/
protected void doCheckPreconditions() throws Exception {
super.doCheckPreconditions();
- if (!WorkflowUtil.canInvoke(this.manager, getLogger(), getSourceDocument(), getEvent())) {
+ if (!WorkflowUtil.canInvoke(this.manager,
+ getSession(),
+ getLogger(),
+ getSourceDocument(),
+ getEvent())) {
addErrorMessage("error-workflow-document", new String[] { getEvent(),
getSourceDocument().getId() });
}
@@ -148,12 +152,16 @@
}
save(resolver, xmlSource, schemaSource, unnumberTagsXslSource, numberTagsXslSource);
-
+
if (!getParameterAsBoolean(WORKFLOW_INVOKED, false)) {
- WorkflowUtil.invoke(this.manager, getLogger(), getSourceDocument(), getEvent());
+ WorkflowUtil.invoke(this.manager,
+ getSession(),
+ getLogger(),
+ getSourceDocument(),
+ getEvent());
setParameter(WORKFLOW_INVOKED, Boolean.valueOf(true));
}
-
+
} catch (final Exception e) {
throw new UsecaseException(e);
} finally {
Modified: lenya/trunk/src/java/org/apache/lenya/cms/editors/forms/OneFormEditor.java
URL: http://svn.apache.org/viewcvs/lenya/trunk/src/java/org/apache/lenya/cms/editors/forms/OneFormEditor.java?rev=264805&r1=264804&r2=264805&view=diff
==============================================================================
--- lenya/trunk/src/java/org/apache/lenya/cms/editors/forms/OneFormEditor.java (original)
+++ lenya/trunk/src/java/org/apache/lenya/cms/editors/forms/OneFormEditor.java Tue Aug 30 09:20:15 2005
@@ -59,7 +59,11 @@
*/
protected void doCheckPreconditions() throws Exception {
super.doCheckPreconditions();
- if (!WorkflowUtil.canInvoke(this.manager, getLogger(), getSourceDocument(), getEvent())) {
+ if (!WorkflowUtil.canInvoke(this.manager,
+ getSession(),
+ getLogger(),
+ getSourceDocument(),
+ getEvent())) {
addErrorMessage("error-workflow-document", new String[] { getEvent(),
getSourceDocument().getId() });
}
@@ -120,7 +124,11 @@
}
if (!hasErrors()) {
- WorkflowUtil.invoke(this.manager, getLogger(), getSourceDocument(), getEvent());
+ WorkflowUtil.invoke(this.manager,
+ getSession(),
+ getLogger(),
+ getSourceDocument(),
+ getEvent());
}
}
Modified: lenya/trunk/src/java/org/apache/lenya/cms/site/usecases/MoveSubsite.java
URL: http://svn.apache.org/viewcvs/lenya/trunk/src/java/org/apache/lenya/cms/site/usecases/MoveSubsite.java?rev=264805&r1=264804&r2=264805&view=diff
==============================================================================
--- lenya/trunk/src/java/org/apache/lenya/cms/site/usecases/MoveSubsite.java (original)
+++ lenya/trunk/src/java/org/apache/lenya/cms/site/usecases/MoveSubsite.java Tue Aug 30 09:20:15 2005
@@ -86,7 +86,7 @@
addErrorMessage("delete-doc-live", new String[] { liveVersion.getId() });
}
}
- if (!WorkflowUtil.canInvoke(this.manager, getLogger(), set, getEvent())) {
+ if (!WorkflowUtil.canInvoke(this.manager, getSession(), getLogger(), set, getEvent())) {
addErrorMessage("The workflow event cannot be invoked on all documents.");
}
}
@@ -168,7 +168,7 @@
SiteManager siteManager = null;
try {
- WorkflowUtil.invoke(this.manager, getLogger(), sources, getEvent(), true);
+ WorkflowUtil.invoke(this.manager, getSession(), getLogger(), sources, getEvent(), true);
documentManager = (DocumentManager) this.manager.lookup(DocumentManager.ROLE);
Modified: lenya/trunk/src/java/org/apache/lenya/cms/site/usecases/Overview.java
URL: http://svn.apache.org/viewcvs/lenya/trunk/src/java/org/apache/lenya/cms/site/usecases/Overview.java?rev=264805&r1=264804&r2=264805&view=diff
==============================================================================
--- lenya/trunk/src/java/org/apache/lenya/cms/site/usecases/Overview.java (original)
+++ lenya/trunk/src/java/org/apache/lenya/cms/site/usecases/Overview.java Tue Aug 30 09:20:15 2005
@@ -55,15 +55,17 @@
// read parameters from Dublin Core meta-data
MetaData dc = getSourceDocument().getMetaDataManager().getDublinCoreMetaData();
setParameter(DublinCore.ELEMENT_TITLE, dc.getFirstValue(DublinCore.ELEMENT_TITLE));
- setParameter(DublinCore.ELEMENT_DESCRIPTION, dc
- .getFirstValue(DublinCore.ELEMENT_DESCRIPTION));
+ setParameter(DublinCore.ELEMENT_DESCRIPTION,
+ dc.getFirstValue(DublinCore.ELEMENT_DESCRIPTION));
// read parameters from document attributes
setParameter("languages", getSourceDocument().getLanguages());
setParameter("lastmodified", getSourceDocument().getLastModified());
setParameter("resourcetype", getSourceDocument().getResourceType());
- DocumentWorkflowable workflowable = new DocumentWorkflowable(getSourceDocument(),
+ DocumentWorkflowable workflowable = new DocumentWorkflowable(this.manager,
+ getSession(),
+ getSourceDocument(),
getLogger());
resolver = (WorkflowManager) this.manager.lookup(WorkflowManager.ROLE);
if (resolver.hasWorkflow(workflowable)) {
Modified: lenya/trunk/src/java/org/apache/lenya/cms/site/usecases/SiteOverview.java
URL: http://svn.apache.org/viewcvs/lenya/trunk/src/java/org/apache/lenya/cms/site/usecases/SiteOverview.java?rev=264805&r1=264804&r2=264805&view=diff
==============================================================================
--- lenya/trunk/src/java/org/apache/lenya/cms/site/usecases/SiteOverview.java (original)
+++ lenya/trunk/src/java/org/apache/lenya/cms/site/usecases/SiteOverview.java Tue Aug 30 09:20:15 2005
@@ -54,7 +54,7 @@
protected static final String DOCUMENTS = "documents";
protected static final String FILTER_WORKFLOW_STATE_VALUES = "filterWorkflowStateValues";
protected static final String FILTER_RESOURCE_TYPE_VALUES = "filterResourceTypeValues";
-
+
protected static final String KEY_DOCUMENT_ID = "keyDocumentId";
protected static final String KEY_RESOURCE_TYPE = "keyResourceType";
protected static final String KEY_WORKFLOW_STATE = "keyWorkflowState";
@@ -62,22 +62,20 @@
protected static final String KEY_LAST_MODIFIED = "keyLastModified";
protected static final String KEY_URL = "keyUrl";
protected static final String PARAMETER_KEYS = "keys";
-
- protected static final String[] KEYS = {
- KEY_DOCUMENT_ID, KEY_LANGUAGE, KEY_RESOURCE_TYPE, KEY_WORKFLOW_STATE, KEY_LAST_MODIFIED
- };
-
+
+ protected static final String[] KEYS = { KEY_DOCUMENT_ID, KEY_LANGUAGE, KEY_RESOURCE_TYPE,
+ KEY_WORKFLOW_STATE, KEY_LAST_MODIFIED };
+
protected static final String FILTER_RESOURCE_TYPE = "filterResourceType";
protected static final String FILTER_WORKFLOW_STATE = "filterWorkflowState";
protected static final String FILTER_LANGUAGE = "filterLanguage";
protected static final String PARAMETER_FILTERS = "filters";
-
- protected static final String[] FILTERS = {
- FILTER_LANGUAGE, FILTER_RESOURCE_TYPE, FILTER_WORKFLOW_STATE
- };
-
+
+ protected static final String[] FILTERS = { FILTER_LANGUAGE, FILTER_RESOURCE_TYPE,
+ FILTER_WORKFLOW_STATE };
+
protected static final String VALUE_ALL = "- all -";
-
+
protected static final String SORT = "sort";
/**
@@ -87,48 +85,51 @@
super.initParameters();
try {
Document[] documents = getDocuments();
-
+
List entries = new ArrayList();
for (int i = 0; i < documents.length; i++) {
-
+
Entry entry = new Entry();
entry.setValue(KEY_DOCUMENT_ID, documents[i].getId());
entry.setValue(KEY_RESOURCE_TYPE, documents[i].getResourceType().getName());
entry.setValue(KEY_LANGUAGE, documents[i].getLanguage());
entry.setValue(KEY_URL, documents[i].getCanonicalWebappURL());
-
+
DateFormat format = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
String lastModified = format.format(documents[i].getLastModified());
entry.setValue(KEY_LAST_MODIFIED, lastModified);
-
-
- if (WorkflowUtil.hasWorkflow(this.manager, getLogger(), documents[i])) {
- DocumentWorkflowable workflowable = new DocumentWorkflowable(documents[i], getLogger());
+
+ if (WorkflowUtil.hasWorkflow(this.manager, getSession(), getLogger(), documents[i])) {
+ DocumentWorkflowable workflowable = new DocumentWorkflowable(this.manager,
+ getSession(),
+ documents[i],
+ getLogger());
Version latestVersion = workflowable.getLatestVersion();
String state;
if (latestVersion != null) {
state = latestVersion.getState();
- }
- else {
- Workflow workflow = WorkflowUtil.getWorkflowSchema(this.manager, getLogger(), documents[i]);
+ } else {
+ Workflow workflow = WorkflowUtil.getWorkflowSchema(this.manager,
+ getSession(),
+ getLogger(),
+ documents[i]);
state = workflow.getInitialState();
}
entry.setValue(KEY_WORKFLOW_STATE, state);
- }
- else {
+ } else {
entry.setValue(KEY_WORKFLOW_STATE, "");
}
-
+
entries.add(entry);
}
-
+
for (int i = 0; i < FILTERS.length; i++) {
SortedSet filterValues = new TreeSet();
filterValues.add(VALUE_ALL);
-
+
String key = "key" + FILTERS[i].substring("filter".length());
-
- for (Iterator docs = entries.iterator(); docs.hasNext(); ) {
+
+ for (Iterator docs = entries.iterator(); docs.hasNext();) {
Entry entry = (Entry) docs.next();
filterValues.add(entry.getValue(key));
}
@@ -136,12 +137,12 @@
setParameter(FILTERS[i], VALUE_ALL);
}
setParameter(PARAMETER_FILTERS, Arrays.asList(FILTERS));
-
+
setParameter(ALL_DOCUMENTS, new ArrayList(entries));
setParameter(DOCUMENTS, entries);
-
+
setParameter(PARAMETER_KEYS, Arrays.asList(KEYS));
-
+
} catch (Exception e) {
throw new RuntimeException(e);
}
@@ -192,10 +193,10 @@
*/
public void advance() throws UsecaseException {
super.advance();
-
+
List allDocuments = (List) getParameter(ALL_DOCUMENTS);
List filteredDocuments = new ArrayList(allDocuments);
-
+
for (int i = 0; i < FILTERS.length; i++) {
String key = "key" + FILTERS[i].substring("filter".length());
String filterValue = getParameterAsString(FILTERS[i]);
@@ -208,23 +209,23 @@
}
}
}
-
+
String sort = getParameterAsString(SORT);
if (sort != null) {
Comparator comparator = new EntryComparator(sort);
Collections.sort(filteredDocuments, comparator);
}
-
+
setParameter(DOCUMENTS, filteredDocuments);
}
-
+
/**
* Comparator for entries.
*/
public static class EntryComparator implements Comparator {
-
+
private String key;
-
+
/**
* @param key The key to compare.
*/
@@ -238,20 +239,20 @@
public int compare(Object arg0, Object arg1) {
Entry e1 = (Entry) arg0;
Entry e2 = (Entry) arg1;
-
+
String value1 = e1.getValue(this.key);
String value2 = e2.getValue(this.key);
-
+
return value1.compareTo(value2);
}
-
+
}
/**
* Stores document-related information.
*/
public static class Entry {
-
+
private Map values = new HashMap();
/**
@@ -259,7 +260,7 @@
*/
public Entry() {
}
-
+
/**
* @param key The key.
* @param value The value.
@@ -267,7 +268,7 @@
public void setValue(String key, String value) {
this.values.put(key, value);
}
-
+
/**
* @param key The key.
* @return The value.
@@ -275,7 +276,6 @@
public String getValue(String key) {
return (String) this.values.get(key);
}
-
}
Modified: lenya/trunk/src/java/org/apache/lenya/cms/task/WorkflowInvoker.java
URL: http://svn.apache.org/viewcvs/lenya/trunk/src/java/org/apache/lenya/cms/task/WorkflowInvoker.java?rev=264805&r1=264804&r2=264805&view=diff
==============================================================================
--- lenya/trunk/src/java/org/apache/lenya/cms/task/WorkflowInvoker.java (original)
+++ lenya/trunk/src/java/org/apache/lenya/cms/task/WorkflowInvoker.java Tue Aug 30 09:20:15 2005
@@ -212,7 +212,9 @@
public void invokeTransition() throws ExecutionException {
try {
- WorkflowUtil.invoke(this.manager, new ConsoleLogger(), this.document, getEventName());
+ org.apache.avalon.framework.logger.Logger logger = new ConsoleLogger();
+ Session session = new Session(new IdentityMapImpl(logger), null, logger);
+ WorkflowUtil.invoke(this.manager, session, new ConsoleLogger(), this.document, getEventName());
} catch (Exception e) {
throw new ExecutionException(e);
}
Modified: lenya/trunk/src/java/org/apache/lenya/cms/workflow/DocumentWorkflowable.java
URL: http://svn.apache.org/viewcvs/lenya/trunk/src/java/org/apache/lenya/cms/workflow/DocumentWorkflowable.java?rev=264805&r1=264804&r2=264805&view=diff
==============================================================================
--- lenya/trunk/src/java/org/apache/lenya/cms/workflow/DocumentWorkflowable.java (original)
+++ lenya/trunk/src/java/org/apache/lenya/cms/workflow/DocumentWorkflowable.java Tue Aug 30 09:20:15 2005
@@ -25,12 +25,14 @@
import org.apache.avalon.framework.container.ContainerUtil;
import org.apache.avalon.framework.logger.AbstractLogEnabled;
import org.apache.avalon.framework.logger.Logger;
+import org.apache.avalon.framework.service.ServiceManager;
+import org.apache.lenya.ac.Identity;
import org.apache.lenya.cms.metadata.LenyaMetaData;
import org.apache.lenya.cms.metadata.MetaData;
import org.apache.lenya.cms.publication.Document;
import org.apache.lenya.cms.publication.DocumentException;
import org.apache.lenya.cms.publication.ResourceType;
-import org.apache.lenya.workflow.Situation;
+import org.apache.lenya.cms.repository.Session;
import org.apache.lenya.workflow.Version;
import org.apache.lenya.workflow.Workflow;
import org.apache.lenya.workflow.Workflowable;
@@ -44,16 +46,38 @@
/**
* Ctor.
+ * @param manager The service manager.
+ * @param session The repository session.
* @param document The document.
* @param logger The logger.
*/
- public DocumentWorkflowable(Document document, Logger logger) {
+ public DocumentWorkflowable(ServiceManager manager, Session session, Document document, Logger logger) {
this.document = document;
+ this.session = session;
+ this.manager = manager;
ContainerUtil.enableLogging(this, logger);
}
- private Document document;
+ private Session session;
+
+ private ServiceManager manager;
+ /**
+ * @return The service manager.
+ */
+ public ServiceManager getServiceManager() {
+ return this.manager;
+ }
+
+ /**
+ * @return The repository session.
+ */
+ public Session getSession() {
+ return session;
+ }
+
+ private Document document;
+
protected Document getDocument() {
return this.document;
}
@@ -117,9 +141,9 @@
/**
* @see org.apache.lenya.workflow.Workflowable#newVersion(org.apache.lenya.workflow.Workflow,
- * org.apache.lenya.workflow.Version, org.apache.lenya.workflow.Situation)
+ * org.apache.lenya.workflow.Version)
*/
- public void newVersion(Workflow workflow, Version version, Situation situation) {
+ public void newVersion(Workflow workflow, Version version) {
Version[] newVersions = new Version[getVersions().length + 1];
for (int i = 0; i < getVersions().length; i++) {
newVersions[i] = getVersions()[i];
@@ -128,7 +152,7 @@
int number = newVersions.length - 1;
newVersions[number] = version;
- String string = number + " " + encodeVersion(workflow, version, (LenyaSituation) situation);
+ String string = number + " " + encodeVersion(workflow, version);
try {
MetaData meta = this.document.getMetaDataManager().getLenyaMetaData();
meta.addValue(LenyaMetaData.ELEMENT_WORKFLOW_VERSION, string);
@@ -138,13 +162,14 @@
}
}
- protected String encodeVersion(Workflow workflow, Version version, LenyaSituation situation) {
+ protected String encodeVersion(Workflow workflow, Version version) {
String string = "event:" + version.getEvent();
string += " state:" + version.getState();
- string += " user:" + situation.getUserId();
- string += " machine:" + situation.getMachineIp();
+ Identity identity = getSession().getUnitOfWork().getIdentity();
+ string += " user:" + identity.getUser().getId();
+ string += " machine:" + identity.getMachine().getIp();
SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd_HH:mm:ss");
string += " date:" + format.format(new Date());
@@ -190,14 +215,13 @@
* @see org.apache.lenya.workflow.Workflowable#getWorkflowSchemaURI()
*/
public String getWorkflowSchemaURI() {
- String uri = null;
- String schema = getWorkflowSchema();
- if (schema != null) {
- uri = this.document.getPublication().getSourceURI() + "/config/workflow/"
- + schema;
+ String uri = null;
+ String schema = getWorkflowSchema();
+ if (schema != null) {
+ uri = this.document.getPublication().getSourceURI() + "/config/workflow/" + schema;
uri = uri.substring("lenya://".length());
uri = "context://" + uri;
- }
+ }
return uri;
}
Modified: lenya/trunk/src/java/org/apache/lenya/cms/workflow/RoleCondition.java
URL: http://svn.apache.org/viewcvs/lenya/trunk/src/java/org/apache/lenya/cms/workflow/RoleCondition.java?rev=264805&r1=264804&r2=264805&view=diff
==============================================================================
--- lenya/trunk/src/java/org/apache/lenya/cms/workflow/RoleCondition.java (original)
+++ lenya/trunk/src/java/org/apache/lenya/cms/workflow/RoleCondition.java Tue Aug 30 09:20:15 2005
@@ -30,7 +30,6 @@
import org.apache.lenya.ac.PolicyManager;
import org.apache.lenya.ac.Role;
import org.apache.lenya.ac.impl.DefaultAccessController;
-import org.apache.lenya.workflow.Situation;
import org.apache.lenya.workflow.Workflow;
import org.apache.lenya.workflow.WorkflowException;
import org.apache.lenya.workflow.Workflowable;
@@ -60,14 +59,12 @@
/**
* Returns if the condition is complied in a certain situation. The condition is complied when
* the current user has the role that is required by the RoleCondition.
- * @see org.apache.lenya.workflow.impl.AbstractCondition#isComplied(Workflow, Situation,
- * Workflowable)
+ * @see org.apache.lenya.workflow.impl.AbstractCondition#isComplied(Workflow, Workflowable)
*/
- public boolean isComplied(Workflow workflow, Situation situation, Workflowable instance) {
+ public boolean isComplied(Workflow workflow, Workflowable instance) {
DocumentWorkflowable workflowable = (DocumentWorkflowable) instance;
- LenyaSituation lenyaSituation = (LenyaSituation) situation;
- ServiceManager manager = lenyaSituation.getServiceManager();
+ ServiceManager manager = workflowable.getServiceManager();
String url = workflowable.getDocument().getCanonicalWebappURL();
ServiceSelector selector = null;
@@ -85,7 +82,7 @@
Policy policy = policyManager.getPolicy(defaultAccessController.getAccreditableManager(),
url);
- Role[] roles = policy.getRoles(lenyaSituation.getIdentity());
+ Role[] roles = policy.getRoles(workflowable.getSession().getUnitOfWork().getIdentity());
boolean complied = false;
for (int i = 0; i < roles.length; i++) {
Modified: lenya/trunk/src/java/org/apache/lenya/cms/workflow/WorkflowUtil.java
URL: http://svn.apache.org/viewcvs/lenya/trunk/src/java/org/apache/lenya/cms/workflow/WorkflowUtil.java?rev=264805&r1=264804&r2=264805&view=diff
==============================================================================
--- lenya/trunk/src/java/org/apache/lenya/cms/workflow/WorkflowUtil.java (original)
+++ lenya/trunk/src/java/org/apache/lenya/cms/workflow/WorkflowUtil.java Tue Aug 30 09:20:15 2005
@@ -21,6 +21,7 @@
import org.apache.avalon.framework.service.ServiceManager;
import org.apache.lenya.cms.publication.Document;
import org.apache.lenya.cms.publication.util.DocumentSet;
+import org.apache.lenya.cms.repository.Session;
import org.apache.lenya.workflow.Workflow;
import org.apache.lenya.workflow.WorkflowException;
import org.apache.lenya.workflow.WorkflowManager;
@@ -37,17 +38,18 @@
* Invokes a workflow event on a document. This is the same as
* <code>invoke(Document, String, true)</code>.
* @param manager The service manager.
+ * @param session The repository session.
* @param logger The logger.
* @param document The document.
* @param event The name of the event.
* @throws WorkflowException if the event could not be invoked in the current situation.
*/
- public static void invoke(ServiceManager manager, Logger logger, Document document, String event)
- throws WorkflowException {
+ public static void invoke(ServiceManager manager, Session session, Logger logger,
+ Document document, String event) throws WorkflowException {
WorkflowManager wfManager = null;
try {
wfManager = (WorkflowManager) manager.lookup(WorkflowManager.ROLE);
- Workflowable workflowable = new DocumentWorkflowable(document, logger);
+ Workflowable workflowable = new DocumentWorkflowable(manager, session, document, logger);
wfManager.invoke(workflowable, event);
} catch (ServiceException e) {
throw new WorkflowException(e);
@@ -62,6 +64,7 @@
/**
* Invokes a workflow event on a document.
* @param manager The service manager.
+ * @param session The repository session.
* @param logger The logger.
* @param document The document.
* @param event The name of the event.
@@ -70,15 +73,12 @@
* set to <code>false</code>, non-supporting documents are ignored.
* @throws WorkflowException if the event could not be invoked in the current situation.
*/
- public static void invoke(ServiceManager manager,
- Logger logger,
- Document document,
- String event,
- boolean force) throws WorkflowException {
+ public static void invoke(ServiceManager manager, Session session, Logger logger,
+ Document document, String event, boolean force) throws WorkflowException {
WorkflowManager wfManager = null;
try {
wfManager = (WorkflowManager) manager.lookup(WorkflowManager.ROLE);
- Workflowable workflowable = new DocumentWorkflowable(document, logger);
+ Workflowable workflowable = new DocumentWorkflowable(manager, session, document, logger);
wfManager.invoke(workflowable, event, force);
} catch (ServiceException e) {
throw new WorkflowException(e);
@@ -93,6 +93,7 @@
/**
* Invokes a workflow event on a document set.
* @param manager The service manager.
+ * @param session The repository session.
* @param logger The logger.
* @param documentSet The document.
* @param event The event.
@@ -102,18 +103,18 @@
* @throws WorkflowException if <code>force</code> is set to <code>true</code> and a
* document does not support the workflow event.
*/
- public static void invoke(ServiceManager manager,
- Logger logger,
- DocumentSet documentSet,
- String event,
- boolean force) throws WorkflowException {
+ public static void invoke(ServiceManager manager, Session session, Logger logger,
+ DocumentSet documentSet, String event, boolean force) throws WorkflowException {
WorkflowManager wfManager = null;
try {
wfManager = (WorkflowManager) manager.lookup(WorkflowManager.ROLE);
Document[] documents = documentSet.getDocuments();
for (int i = 0; i < documents.length; i++) {
- Workflowable workflowable = new DocumentWorkflowable(documents[i], logger);
+ Workflowable workflowable = new DocumentWorkflowable(manager,
+ session,
+ documents[i],
+ logger);
wfManager.invoke(workflowable, event, force);
}
@@ -130,18 +131,19 @@
/**
* Checks if an event can be invoked on a document.
* @param manager The service manager.
+ * @param session The repository session.
* @param logger The logger.
* @param document The document.
* @param event The event.
* @return A boolean value.
* @throws WorkflowException
*/
- public static boolean canInvoke(ServiceManager manager, Logger logger, Document document, String event)
- throws WorkflowException {
+ public static boolean canInvoke(ServiceManager manager, Session session, Logger logger,
+ Document document, String event) throws WorkflowException {
WorkflowManager wfManager = null;
try {
wfManager = (WorkflowManager) manager.lookup(WorkflowManager.ROLE);
- Workflowable workflowable = new DocumentWorkflowable(document, logger);
+ Workflowable workflowable = new DocumentWorkflowable(manager, session, document, logger);
return wfManager.canInvoke(workflowable, event);
} catch (ServiceException e) {
throw new WorkflowException(e);
@@ -156,14 +158,15 @@
/**
* Checks if an event can be invoked on all documents in a set.
* @param manager The service manager.
+ * @param session The repository session.
* @param logger The logger.
* @param documents The documents.
* @param event The event.
* @return if an error occurs.
* @throws WorkflowException
*/
- public static boolean canInvoke(ServiceManager manager, Logger logger, DocumentSet documents, String event)
- throws WorkflowException {
+ public static boolean canInvoke(ServiceManager manager, Session session, Logger logger,
+ DocumentSet documents, String event) throws WorkflowException {
WorkflowManager wfManager = null;
try {
wfManager = (WorkflowManager) manager.lookup(WorkflowManager.ROLE);
@@ -171,7 +174,10 @@
boolean canInvoke = true;
Document[] documentArray = documents.getDocuments();
for (int i = 0; i < documentArray.length; i++) {
- Workflowable workflowable = new DocumentWorkflowable(documentArray[i], logger);
+ Workflowable workflowable = new DocumentWorkflowable(manager,
+ session,
+ documentArray[i],
+ logger);
canInvoke = canInvoke && wfManager.canInvoke(workflowable, event);
}
return canInvoke;
@@ -184,21 +190,22 @@
}
}
}
-
+
/**
* Returns if a document has a workflow.
* @param manager The service manager.
+ * @param session The repository session.
* @param logger The logger.
* @param document The document.
* @return A boolean value.
* @throws WorkflowException if an error occurs.
*/
- public static boolean hasWorkflow(ServiceManager manager, Logger logger, Document document)
- throws WorkflowException {
+ public static boolean hasWorkflow(ServiceManager manager, Session session, Logger logger,
+ Document document) throws WorkflowException {
WorkflowManager wfManager = null;
try {
wfManager = (WorkflowManager) manager.lookup(WorkflowManager.ROLE);
- Workflowable workflowable = new DocumentWorkflowable(document, logger);
+ Workflowable workflowable = new DocumentWorkflowable(manager, session, document, logger);
return wfManager.hasWorkflow(workflowable);
} catch (ServiceException e) {
throw new WorkflowException(e);
@@ -212,21 +219,21 @@
/**
* Returns the workflow schema of a document.
* @param manager The service manager.
+ * @param session The repository session.
* @param logger The logger.
* @param document The document.
* @return A workflow schema.
* @throws WorkflowException if an error occurs.
*/
- public static Workflow getWorkflowSchema(ServiceManager manager, Logger logger, Document document)
- throws WorkflowException {
+ public static Workflow getWorkflowSchema(ServiceManager manager, Session session,
+ Logger logger, Document document) throws WorkflowException {
WorkflowManager wfManager = null;
try {
wfManager = (WorkflowManager) manager.lookup(WorkflowManager.ROLE);
- Workflowable workflowable = new DocumentWorkflowable(document, logger);
+ Workflowable workflowable = new DocumentWorkflowable(manager, session, document, logger);
if (wfManager.hasWorkflow(workflowable)) {
return wfManager.getWorkflowSchema(workflowable);
- }
- else {
+ } else {
throw new WorkflowException("The document [" + document + "] has no workflow!");
}
} catch (ServiceException e) {
Modified: lenya/trunk/src/java/org/apache/lenya/cms/workflow/usecases/History.java
URL: http://svn.apache.org/viewcvs/lenya/trunk/src/java/org/apache/lenya/cms/workflow/usecases/History.java?rev=264805&r1=264804&r2=264805&view=diff
==============================================================================
--- lenya/trunk/src/java/org/apache/lenya/cms/workflow/usecases/History.java (original)
+++ lenya/trunk/src/java/org/apache/lenya/cms/workflow/usecases/History.java Tue Aug 30 09:20:15 2005
@@ -34,7 +34,9 @@
protected void initParameters() {
super.initParameters();
- DocumentWorkflowable workflowable = new DocumentWorkflowable(getSourceDocument(),
+ DocumentWorkflowable workflowable = new DocumentWorkflowable(this.manager,
+ getSession(),
+ getSourceDocument(),
getLogger());
Version[] versions = workflowable.getVersions();
setParameter("versions", versions);
Modified: lenya/trunk/src/java/org/apache/lenya/cms/workflow/usecases/InvokeWorkflow.java
URL: http://svn.apache.org/viewcvs/lenya/trunk/src/java/org/apache/lenya/cms/workflow/usecases/InvokeWorkflow.java?rev=264805&r1=264804&r2=264805&view=diff
==============================================================================
--- lenya/trunk/src/java/org/apache/lenya/cms/workflow/usecases/InvokeWorkflow.java (original)
+++ lenya/trunk/src/java/org/apache/lenya/cms/workflow/usecases/InvokeWorkflow.java Tue Aug 30 09:20:15 2005
@@ -28,19 +28,19 @@
* Invoke a workflow event on the current document. The event is obtained from the configuration in
* <code>cocoon.xconf</code>:<code>
* <pre>
- *
- *
*
*
- * <component-instance name="default/workflow.submit"
- * logger="lenya.usecases.workflow"
- * class="org.apache.lenya.cms.workflow.usecases.InvokeWorkflow">
- * <event id="submit"/>
- * </component-instance>
+ *
+ *
+ * <component-instance name="default/workflow.submit"
+ * logger="lenya.usecases.workflow"
+ * class="org.apache.lenya.cms.workflow.usecases.InvokeWorkflow">
+ * <event id="submit"/>
+ * </component-instance>
+ *
+ *
*
*
- *
- *
* </pre>
* </code>
*
@@ -67,7 +67,11 @@
return;
}
- if (!WorkflowUtil.canInvoke(this.manager, getLogger(), getSourceDocument(), getEvent())) {
+ if (!WorkflowUtil.canInvoke(this.manager,
+ getSession(),
+ getLogger(),
+ getSourceDocument(),
+ getEvent())) {
addErrorMessage("error-workflow-document", new String[] { getEvent(),
getSourceDocument().getId() });
}
@@ -86,7 +90,11 @@
*/
protected void doExecute() throws Exception {
super.doExecute();
- WorkflowUtil.invoke(this.manager, getLogger(), getSourceDocument(), getEvent());
+ WorkflowUtil.invoke(this.manager,
+ getSession(),
+ getLogger(),
+ getSourceDocument(),
+ getEvent());
}
protected static final String ELEMENT_EVENT = "event";
Modified: lenya/trunk/src/java/org/apache/lenya/lenya.roles
URL: http://svn.apache.org/viewcvs/lenya/trunk/src/java/org/apache/lenya/lenya.roles?rev=264805&r1=264804&r2=264805&view=diff
==============================================================================
--- lenya/trunk/src/java/org/apache/lenya/lenya.roles (original)
+++ lenya/trunk/src/java/org/apache/lenya/lenya.roles Tue Aug 30 09:20:15 2005
@@ -124,7 +124,7 @@
<role name="org.apache.lenya.workflow.WorkflowManager"
shorthand="workflow-manager"
- default-class="org.apache.lenya.cms.workflow.LenyaWorkflowManager"/>
+ default-class="org.apache.lenya.workflow.impl.WorkflowManagerImpl"/>
<role name="org.apache.lenya.cms.site.usecases.LinkRewriter"
shorthand="link-rewriter"
Modified: lenya/trunk/src/java/org/apache/lenya/workflow/Condition.java
URL: http://svn.apache.org/viewcvs/lenya/trunk/src/java/org/apache/lenya/workflow/Condition.java?rev=264805&r1=264804&r2=264805&view=diff
==============================================================================
--- lenya/trunk/src/java/org/apache/lenya/workflow/Condition.java (original)
+++ lenya/trunk/src/java/org/apache/lenya/workflow/Condition.java Tue Aug 30 09:20:15 2005
@@ -33,12 +33,11 @@
/**
* Returns if the condition is complied in a certain situation.
* @param workflow The workflow to use.
- * @param situation The situation to check.
* @param workflowable The workflowable to check the condition on.
* @return if the condition is complied.
* @throws WorkflowException when the expression could not be evaluated.
*/
- boolean isComplied(Workflow workflow, Situation situation, Workflowable workflowable) throws WorkflowException;
+ boolean isComplied(Workflow workflow, Workflowable workflowable) throws WorkflowException;
/** Sets the expression for this condition.
* @param expression The expression.
Modified: lenya/trunk/src/java/org/apache/lenya/workflow/WorkflowEngine.java
URL: http://svn.apache.org/viewcvs/lenya/trunk/src/java/org/apache/lenya/workflow/WorkflowEngine.java?rev=264805&r1=264804&r2=264805&view=diff
==============================================================================
--- lenya/trunk/src/java/org/apache/lenya/workflow/WorkflowEngine.java (original)
+++ lenya/trunk/src/java/org/apache/lenya/workflow/WorkflowEngine.java Tue Aug 30 09:20:15 2005
@@ -19,7 +19,7 @@
/**
* Workflow engine.
*
- * @version $Id:$
+ * @version $Id$
*/
public interface WorkflowEngine {
@@ -27,23 +27,21 @@
* Checks if an event can be invoked.
* @param workflowable The workflowable.
* @param workflow The workflow schema.
- * @param situation The situation.
* @param event The event.
* @return A boolean value.
* @throws WorkflowException if an error occurs.
*/
- boolean canInvoke(Workflowable workflowable, Workflow workflow, Situation situation, String event)
+ boolean canInvoke(Workflowable workflowable, Workflow workflow, String event)
throws WorkflowException;
/**
* Invokes an event.
* @param workflowable The workflowable.
* @param workflow The workflow.
- * @param situation The situation.
* @param event The event.
* @throws WorkflowException if an error occurs.
*/
- void invoke(Workflowable workflowable, Workflow workflow, Situation situation, String event)
+ void invoke(Workflowable workflowable, Workflow workflow, String event)
throws WorkflowException;
}
Modified: lenya/trunk/src/java/org/apache/lenya/workflow/WorkflowManager.java
URL: http://svn.apache.org/viewcvs/lenya/trunk/src/java/org/apache/lenya/workflow/WorkflowManager.java?rev=264805&r1=264804&r2=264805&view=diff
==============================================================================
--- lenya/trunk/src/java/org/apache/lenya/workflow/WorkflowManager.java (original)
+++ lenya/trunk/src/java/org/apache/lenya/workflow/WorkflowManager.java Tue Aug 30 09:20:15 2005
@@ -76,10 +76,4 @@
*/
Workflow getWorkflowSchema(Workflowable workflowable) throws WorkflowException;
- /**
- * Resolves the current workflow situation.
- * @return A situation object.
- */
- Situation getSituation();
-
}
Modified: lenya/trunk/src/java/org/apache/lenya/workflow/Workflowable.java
URL: http://svn.apache.org/viewcvs/lenya/trunk/src/java/org/apache/lenya/workflow/Workflowable.java?rev=264805&r1=264804&r2=264805&view=diff
==============================================================================
--- lenya/trunk/src/java/org/apache/lenya/workflow/Workflowable.java (original)
+++ lenya/trunk/src/java/org/apache/lenya/workflow/Workflowable.java Tue Aug 30 09:20:15 2005
@@ -37,9 +37,8 @@
* Adds a new version.
* @param workflow The workflow.
* @param version The version.
- * @param situation The situation in which the version was added.
*/
- void newVersion(Workflow workflow, Version version, Situation situation);
+ void newVersion(Workflow workflow, Version version);
/**
* @return The URI to resolve the schema configuration from.
Modified: lenya/trunk/src/java/org/apache/lenya/workflow/impl/BooleanVariableCondition.java
URL: http://svn.apache.org/viewcvs/lenya/trunk/src/java/org/apache/lenya/workflow/impl/BooleanVariableCondition.java?rev=264805&r1=264804&r2=264805&view=diff
==============================================================================
--- lenya/trunk/src/java/org/apache/lenya/workflow/impl/BooleanVariableCondition.java (original)
+++ lenya/trunk/src/java/org/apache/lenya/workflow/impl/BooleanVariableCondition.java Tue Aug 30 09:20:15 2005
@@ -19,7 +19,6 @@
package org.apache.lenya.workflow.impl;
-import org.apache.lenya.workflow.Situation;
import org.apache.lenya.workflow.Version;
import org.apache.lenya.workflow.Workflow;
import org.apache.lenya.workflow.WorkflowException;
@@ -71,19 +70,18 @@
/**
* @see org.apache.lenya.workflow.Condition#isComplied(org.apache.lenya.workflow.Workflow,
- * org.apache.lenya.workflow.Situation,
* org.apache.lenya.workflow.Workflowable)
*/
-public boolean isComplied(Workflow workflow, Situation situation, Workflowable workflowable) throws WorkflowException {
+ public boolean isComplied(Workflow workflow, Workflowable workflowable)
+ throws WorkflowException {
Version latestVersion = workflowable.getLatestVersion();
boolean value = false;
if (latestVersion == null) {
value = workflow.getInitialValue(getVariableName());
- }
- else {
+ } else {
value = latestVersion.getValue(getVariableName());
}
-
+
if (getLogger().isDebugEnabled()) {
getLogger().debug("Checking boolean variable condition");
getLogger().debug(" Condition value: [" + getValue() + "]");
Modified: lenya/trunk/src/java/org/apache/lenya/workflow/impl/WorkflowEngineImpl.java
URL: http://svn.apache.org/viewcvs/lenya/trunk/src/java/org/apache/lenya/workflow/impl/WorkflowEngineImpl.java?rev=264805&r1=264804&r2=264805&view=diff
==============================================================================
--- lenya/trunk/src/java/org/apache/lenya/workflow/impl/WorkflowEngineImpl.java (original)
+++ lenya/trunk/src/java/org/apache/lenya/workflow/impl/WorkflowEngineImpl.java Tue Aug 30 09:20:15 2005
@@ -21,7 +21,6 @@
import org.apache.lenya.workflow.Action;
import org.apache.lenya.workflow.Condition;
-import org.apache.lenya.workflow.Situation;
import org.apache.lenya.workflow.Transition;
import org.apache.lenya.workflow.Version;
import org.apache.lenya.workflow.Workflow;
@@ -32,29 +31,29 @@
/**
* Workflow engine implementation.
*
- * @version $Id:$
+ * @version $Id$
*/
public class WorkflowEngineImpl implements WorkflowEngine {
/**
* @see org.apache.lenya.workflow.WorkflowEngine#canInvoke(org.apache.lenya.workflow.Workflowable,
- * org.apache.lenya.workflow.Workflow, Situation, java.lang.String)
+ * org.apache.lenya.workflow.Workflow, java.lang.String)
*/
- public boolean canInvoke(Workflowable workflowable, Workflow workflow, Situation situation,
- String event) throws WorkflowException {
- List firingTransitions = getFiringTransitions(workflowable, workflow, situation, event);
+ public boolean canInvoke(Workflowable workflowable, Workflow workflow, String event)
+ throws WorkflowException {
+ List firingTransitions = getFiringTransitions(workflowable, workflow, event);
return firingTransitions.size() == 1;
}
/**
* @see org.apache.lenya.workflow.WorkflowEngine#invoke(org.apache.lenya.workflow.Workflowable,
- * org.apache.lenya.workflow.Workflow, Situation, java.lang.String)
+ * org.apache.lenya.workflow.Workflow, java.lang.String)
*/
- public void invoke(Workflowable workflowable, Workflow workflow, Situation situation,
- String event) throws WorkflowException {
+ public void invoke(Workflowable workflowable, Workflow workflow, String event)
+ throws WorkflowException {
Transition firingTransition = null;
- List firingTransitions = getFiringTransitions(workflowable, workflow, situation, event);
+ List firingTransitions = getFiringTransitions(workflowable, workflow, event);
if (firingTransitions.size() == 0) {
throw new WorkflowException("No transition can fire!");
@@ -73,7 +72,7 @@
actions[i].execute(newVersion);
}
- workflowable.newVersion(workflow, newVersion, situation);
+ workflowable.newVersion(workflow, newVersion);
}
/**
@@ -107,29 +106,27 @@
* Returns the transitions that would fire in a certain situation.
* @param workflowable The workflowable.
* @param workflow The workflow.
- * @param situation The situation.
* @param event The event.
* @return A list of transitions.
* @throws WorkflowException if an error occurs.
*/
- protected List getFiringTransitions(Workflowable workflowable, Workflow workflow,
- Situation situation, String event) throws WorkflowException {
+ protected List getFiringTransitions(Workflowable workflowable, Workflow workflow, String event)
+ throws WorkflowException {
Version lastVersion = workflowable.getLatestVersion();
-
+
String currentState;
if (lastVersion == null) {
currentState = workflow.getInitialState();
- }
- else {
+ } else {
currentState = lastVersion.getState();
}
-
+
Transition[] transitions = workflow.getLeavingTransitions(currentState);
List firingTransitions = new ArrayList();
for (int i = 0; i < transitions.length; i++) {
if (transitions[i].getEvent().equals(event)
- && canFire(transitions[i], workflow, situation, workflowable)) {
+ && canFire(transitions[i], workflow, workflowable)) {
firingTransitions.add(transitions[i]);
}
}
@@ -140,19 +137,18 @@
* Checks if a transition can fire.
* @param transition The transition.
* @param workflow The workflow.
- * @param situation The situation.
* @param workflowable The workflowable.
* @return A boolean value.
* @throws WorkflowException if an error occurs.
*/
- public boolean canFire(Transition transition, Workflow workflow, Situation situation,
- Workflowable workflowable) throws WorkflowException {
+ public boolean canFire(Transition transition, Workflow workflow, Workflowable workflowable)
+ throws WorkflowException {
Condition[] _conditions = transition.getConditions();
boolean canFire = true;
int i = 0;
while (canFire && i < _conditions.length) {
- canFire = canFire && _conditions[i].isComplied(workflow, situation, workflowable);
+ canFire = canFire && _conditions[i].isComplied(workflow, workflowable);
i++;
}
Modified: lenya/trunk/src/java/org/apache/lenya/workflow/impl/WorkflowManagerImpl.java
URL: http://svn.apache.org/viewcvs/lenya/trunk/src/java/org/apache/lenya/workflow/impl/WorkflowManagerImpl.java?rev=264805&r1=264804&r2=264805&view=diff
==============================================================================
--- lenya/trunk/src/java/org/apache/lenya/workflow/impl/WorkflowManagerImpl.java (original)
+++ lenya/trunk/src/java/org/apache/lenya/workflow/impl/WorkflowManagerImpl.java Tue Aug 30 09:20:15 2005
@@ -25,7 +25,6 @@
import org.apache.avalon.framework.service.ServiceManager;
import org.apache.avalon.framework.service.Serviceable;
import org.apache.lenya.cms.cocoon.source.SourceUtil;
-import org.apache.lenya.workflow.Situation;
import org.apache.lenya.workflow.Workflow;
import org.apache.lenya.workflow.WorkflowEngine;
import org.apache.lenya.workflow.WorkflowException;
@@ -51,15 +50,13 @@
throws WorkflowException {
if (hasWorkflow(workflowable)) {
WorkflowEngine engine = new WorkflowEngineImpl();
- Situation situation = getSituation();
Workflow workflow = getWorkflowSchema(workflowable);
- if (force && !engine.canInvoke(workflowable, workflow, situation, event)) {
+ if (force && !engine.canInvoke(workflowable, workflow, event)) {
throw new WorkflowException("The event [" + event
- + "] cannot be invoked on the document [" + workflowable
- + "]Â in the situation [" + situation + "]");
+ + "] cannot be invoked on the document [" + workflowable + "]");
}
- engine.invoke(workflowable, workflow, situation, event);
+ engine.invoke(workflowable, workflow, event);
}
}
@@ -81,8 +78,7 @@
if (hasWorkflow(workflowable)) {
Workflow workflow = getWorkflowSchema(workflowable);
WorkflowEngine engine = new WorkflowEngineImpl();
- Situation situation = getSituation();
- canInvoke = engine.canInvoke(workflowable, workflow, situation, event);
+ canInvoke = engine.canInvoke(workflowable, workflow, event);
}
} catch (Exception e) {
throw new RuntimeException(e);
@@ -129,13 +125,6 @@
*/
public boolean hasWorkflow(Workflowable workflowable) {
return workflowable.getWorkflowSchemaURI() != null;
- }
-
- /**
- * @see org.apache.lenya.workflow.WorkflowManager#getSituation()
- */
- public Situation getSituation() {
- return new SituationImpl();
}
}
Modified: lenya/trunk/src/webapp/lenya/pubs/blog/java/src/org/apache/lenya/cms/workflow/usecases/Publish.java
URL: http://svn.apache.org/viewcvs/lenya/trunk/src/webapp/lenya/pubs/blog/java/src/org/apache/lenya/cms/workflow/usecases/Publish.java?rev=264805&r1=264804&r2=264805&view=diff
==============================================================================
--- lenya/trunk/src/webapp/lenya/pubs/blog/java/src/org/apache/lenya/cms/workflow/usecases/Publish.java (original)
+++ lenya/trunk/src/webapp/lenya/pubs/blog/java/src/org/apache/lenya/cms/workflow/usecases/Publish.java Tue Aug 30 09:20:15 2005
@@ -45,17 +45,16 @@
try {
List nodes = new ArrayList();
DocumentSet set = new DocumentSet();
-
+
Document doc = getSourceDocument();
set.addAll(SiteUtil.getSubSite(this.manager, doc));
-
+
Document liveDoc = doc.getIdentityMap().getAreaVersion(doc, Publication.LIVE_AREA);
- if(liveDoc.exists())
+ if (liveDoc.exists())
set.addAll(SiteUtil.getSubSite(this.manager, liveDoc));
else
set.add(liveDoc);
-
-
+
Document[] documents = set.getDocuments();
for (int i = 0; i < documents.length; i++) {
nodes.add(documents[i].getRepositoryNode());
@@ -87,7 +86,11 @@
return;
}
- if (!WorkflowUtil.canInvoke(this.manager, getLogger(), getSourceDocument(), event)) {
+ if (!WorkflowUtil.canInvoke(this.manager,
+ getSession(),
+ getLogger(),
+ getSourceDocument(),
+ event)) {
addErrorMessage("error-workflow-document", new String[] { getEvent(),
getSourceDocument().getId() });
}
@@ -104,7 +107,11 @@
Document authoringDocument = getSourceDocument();
documentManager = (DocumentManager) this.manager.lookup(DocumentManager.ROLE);
documentManager.copyToArea(authoringDocument, Publication.LIVE_AREA);
- WorkflowUtil.invoke(this.manager, getLogger(), authoringDocument, getEvent());
+ WorkflowUtil.invoke(this.manager,
+ getSession(),
+ getLogger(),
+ authoringDocument,
+ getEvent());
} catch (Exception e) {
throw new RuntimeException(e);
} finally {
Modified: lenya/trunk/src/webapp/lenya/pubs/default/java/src/org/apache/lenya/defaultpub/cms/usecases/Deactivate.java
URL: http://svn.apache.org/viewcvs/lenya/trunk/src/webapp/lenya/pubs/default/java/src/org/apache/lenya/defaultpub/cms/usecases/Deactivate.java?rev=264805&r1=264804&r2=264805&view=diff
==============================================================================
--- lenya/trunk/src/webapp/lenya/pubs/default/java/src/org/apache/lenya/defaultpub/cms/usecases/Deactivate.java (original)
+++ lenya/trunk/src/webapp/lenya/pubs/default/java/src/org/apache/lenya/defaultpub/cms/usecases/Deactivate.java Tue Aug 30 09:20:15 2005
@@ -60,7 +60,11 @@
String event = getEvent();
boolean allowSingle = true;
- if (!WorkflowUtil.canInvoke(this.manager, getLogger(), getSourceDocument(), event)) {
+ if (!WorkflowUtil.canInvoke(this.manager,
+ getSession(),
+ getLogger(),
+ getSourceDocument(),
+ event)) {
allowSingle = false;
addInfoMessage("The single document cannot be deactivated because the workflow event cannot be invoked.");
}
@@ -135,7 +139,11 @@
documentManager = (DocumentManager) this.manager.lookup(DocumentManager.ROLE);
documentManager.delete(liveDocument);
- WorkflowUtil.invoke(this.manager, getLogger(), authoringDocument, getEvent());
+ WorkflowUtil.invoke(this.manager,
+ getSession(),
+ getLogger(),
+ authoringDocument,
+ getEvent());
success = true;
} catch (Exception e) {
throw new RuntimeException(e);
@@ -223,7 +231,11 @@
for (int i = 0; i < languages.length; i++) {
Document version = document.getIdentityMap().getLanguageVersion(document, languages[i]);
if (version.exists()
- && WorkflowUtil.canInvoke(this.manager, getLogger(), version, getEvent())) {
+ && WorkflowUtil.canInvoke(this.manager,
+ getSession(),
+ getLogger(),
+ version,
+ getEvent())) {
deactivate(version);
}
}
Modified: lenya/trunk/src/webapp/lenya/pubs/default/java/src/org/apache/lenya/defaultpub/cms/usecases/Publish.java
URL: http://svn.apache.org/viewcvs/lenya/trunk/src/webapp/lenya/pubs/default/java/src/org/apache/lenya/defaultpub/cms/usecases/Publish.java?rev=264805&r1=264804&r2=264805&view=diff
==============================================================================
--- lenya/trunk/src/webapp/lenya/pubs/default/java/src/org/apache/lenya/defaultpub/cms/usecases/Publish.java (original)
+++ lenya/trunk/src/webapp/lenya/pubs/default/java/src/org/apache/lenya/defaultpub/cms/usecases/Publish.java Tue Aug 30 09:20:15 2005
@@ -122,7 +122,11 @@
return;
}
- if (!WorkflowUtil.canInvoke(this.manager, getLogger(), getSourceDocument(), event)) {
+ if (!WorkflowUtil.canInvoke(this.manager,
+ getSession(),
+ getLogger(),
+ getSourceDocument(),
+ event)) {
setParameter(ALLOW_SINGLE_DOCUMENT, Boolean.toString(false));
addInfoMessage("The single document cannot be published because the workflow event cannot be invoked.");
} else {
@@ -227,7 +231,11 @@
try {
documentManager = (DocumentManager) this.manager.lookup(DocumentManager.ROLE);
documentManager.copyToArea(authoringDocument, Publication.LIVE_AREA);
- WorkflowUtil.invoke(this.manager, getLogger(), authoringDocument, getEvent());
+ WorkflowUtil.invoke(this.manager,
+ getSession(),
+ getLogger(),
+ authoringDocument,
+ getEvent());
} catch (Exception e) {
throw new RuntimeException(e);
} finally {
@@ -323,7 +331,11 @@
Document version = document.getIdentityMap().getLanguageVersion(document,
languages[i]);
if (version.exists()) {
- if (WorkflowUtil.canInvoke(this.manager, getLogger(), version, getEvent())) {
+ if (WorkflowUtil.canInvoke(this.manager,
+ getSession(),
+ getLogger(),
+ version,
+ getEvent())) {
publish(version);
}
}
---------------------------------------------------------------------
To unsubscribe, e-mail: commits-unsubscribe@lenya.apache.org
For additional commands, e-mail: commits-help@lenya.apache.org