[Yanel-commits] rev 57339 - in public/yanel/trunk/src: core/java/org/wyona/yanel/core/workflow impl/java/org/wyona/yanel/impl/comments
michi at wyona.com
michi at wyona.com
Wed Mar 16 10:13:03 CET 2011
Author: michi
Date: 2011-03-16 10:13:03 +0100 (Wed, 16 Mar 2011)
New Revision: 57339
Modified:
public/yanel/trunk/src/core/java/org/wyona/yanel/core/workflow/WorkflowHelper.java
public/yanel/trunk/src/impl/java/org/wyona/yanel/impl/comments/CommentManagerV1Impl.java
Log:
set various methods to deprecated in order to make clear that persistence should be hidden
Modified: public/yanel/trunk/src/core/java/org/wyona/yanel/core/workflow/WorkflowHelper.java
===================================================================
--- public/yanel/trunk/src/core/java/org/wyona/yanel/core/workflow/WorkflowHelper.java 2011-03-15 15:51:03 UTC (rev 57338)
+++ public/yanel/trunk/src/core/java/org/wyona/yanel/core/workflow/WorkflowHelper.java 2011-03-16 09:13:03 UTC (rev 57339)
@@ -89,6 +89,47 @@
" for state: " + currentState);
}
}
+
+/* INFO: It's better to hide the persistence and hence use doTransition(Resource, String, String)
+ public static void doTransition(Node node, String transitionID, Workflow workflow) throws WorkflowException {
+ boolean foundTransition = false;
+ String currentState = null;
+ currentState = getWorkflowState(node);
+ if (currentState == null) {
+ currentState = workflow.getInitialState();
+ }
+ Transition[] transitions = workflow.getLeavingTransitions(currentState);
+
+ for (int i = 0; i < transitions.length; i++) {
+ if (transitions[i].getID().equals(transitionID)) {
+
+ // INFO: The isComplied() method is based on workflowable instead node
+ Condition[] conditions = transitions[i].getConditions();
+ for (int j = 0; j < conditions.length; j++) {
+ if (!conditions[j].isComplied(workflowable, workflow, revision)) {
+ throw new WorkflowException("Workflow condition not complied for state '" + currentState + "' and transition '" + transitionID + "': " + conditions[j].getMessage());
+ }
+ }
+
+ String newState = transitions[i].getDestinationState();
+
+ setWorkflowState(node, newState);
+
+ // INFO: The execute() method is based on workflowable instead node
+ Action[] actions = transitions[i].getActions();
+ for (int j = 0; j < actions.length; j++) {
+ actions[j].execute(workflowable, workflow, revision);
+ }
+
+ foundTransition = true;
+ }
+ }
+ if (!foundTransition) {
+ throw new WorkflowException("Invalid workflow transition: " + transitionID +
+ " for state: " + currentState);
+ }
+ }
+*/
/*public static boolean canDoTransition(Resource resource, String transitionID, String revision)
throws WorkflowException {
@@ -373,7 +414,19 @@
*/
public static String getWorkflowState(Node node, String revision) throws WorkflowException {
try {
- Property stateProp = node.getRevision(revision).getProperty(WORKFLOW_STATE_PROPERTY);
+ return getWorkflowState(node.getRevision(revision));
+ } catch (Exception e) {
+ log.error(e, e);
+ throw new WorkflowException(e.getMessage(), e);
+ }
+ }
+
+ /**
+ *
+ */
+ private static String getWorkflowState(Node node) throws WorkflowException {
+ try {
+ Property stateProp = node.getProperty(WORKFLOW_STATE_PROPERTY);
if (stateProp != null) {
return stateProp.getString();
}
@@ -397,6 +450,7 @@
}
/**
+ * @deprecated Use {@link setWorkflowState(Resource, String, String)} instead
* Set workflow state (and date)
*/
public static void setWorkflowState(Node node, String state, String revision) throws WorkflowException {
@@ -411,7 +465,7 @@
/**
* Set workflow state (and date)
*/
- public static void setWorkflowState(Node node, String state) throws WorkflowException {
+ private static void setWorkflowState(Node node, String state) throws WorkflowException {
try {
log.debug("Set workflow state: " + state);
node.setProperty(WORKFLOW_STATE_PROPERTY, state);
@@ -424,7 +478,7 @@
}
/**
- *
+ * @param revision Revision of resource
*/
public static Date getWorkflowDate(Resource resource, String revision) throws WorkflowException {
try {
@@ -436,7 +490,7 @@
}
/**
- *
+ * @deprecated Use {@link getWorkflowDate(Resource, String)} instead
*/
public static Date getWorkflowDate(Node node, String revision) throws WorkflowException {
try {
Modified: public/yanel/trunk/src/impl/java/org/wyona/yanel/impl/comments/CommentManagerV1Impl.java
===================================================================
--- public/yanel/trunk/src/impl/java/org/wyona/yanel/impl/comments/CommentManagerV1Impl.java 2011-03-15 15:51:03 UTC (rev 57338)
+++ public/yanel/trunk/src/impl/java/org/wyona/yanel/impl/comments/CommentManagerV1Impl.java 2011-03-16 09:13:03 UTC (rev 57339)
@@ -93,9 +93,8 @@
Workflow workflow = getWorkflow();
if (workflow != null) {
org.wyona.yarep.core.Node commentsNode = realm.getRepository().getNode(getAbsoluteYarepPathOfComment(path)); // TODO: Use comment node instead comments node
- org.wyona.yanel.core.workflow.WorkflowHelper.setWorkflowState(commentsNode, workflow.getInitialState());
- // TODO: Check if transition ID 'submit' exists!
- //WorkflowHelper.doTransition(newResource, "submit", revision.getRevisionName());
+ //org.wyona.yanel.core.workflow.WorkflowHelper.setWorkflowState(commentsNode, workflow.getInitialState());
+ //org.wyona.yanel.core.workflow.WorkflowHelper.doTransition(commentsNode, "submit-for-review", workflow);
}
}
} else {
@@ -118,9 +117,18 @@
private Workflow getWorkflow() {
//return org.wyona.yanel.core.workflow.Workflow workflow = new org.wyona.yanel.core.workflow.WorkflowBuilder().buildWorkflow(workflowAsIS);
org.wyona.yanel.core.workflow.impl.WorkflowImpl workflow = new org.wyona.yanel.core.workflow.impl.WorkflowImpl();
+
String states[] = {"draft", "review", "approved"};
workflow.setStates(states);
workflow.setInitialState("draft");
+
+ org.wyona.yanel.core.workflow.impl.TransitionImpl submitT = new org.wyona.yanel.core.workflow.impl.TransitionImpl("submit-for-review", "draft", "review");
+ org.wyona.yanel.core.workflow.impl.TransitionImpl approveT = new org.wyona.yanel.core.workflow.impl.TransitionImpl("approve", "review", "approved");
+ org.wyona.yanel.core.workflow.Transition[] transitions = new org.wyona.yanel.core.workflow.Transition[2];
+ transitions[0] = submitT;
+ transitions[1] = approveT;
+ workflow.setTransitions(transitions);
+
return workflow;
}
}
More information about the Yanel-commits
mailing list