Package org.apache.wiki.workflow
Class DefaultWorkflowManager
java.lang.Object
org.apache.wiki.workflow.DefaultWorkflowManager
- All Implemented Interfaces:
EventListener,Initializable,WikiEventListener,WorkflowManager
public class DefaultWorkflowManager extends Object implements WorkflowManager
Monitor class that tracks running Workflows. The WorkflowManager also keeps track of the names of users or groups expected to approve particular Workflows.
-
Field Summary
Fields inherited from interface org.apache.wiki.workflow.WorkflowManager
PROPERTY_APPROVER_PREFIX, WF_UP_CREATE_SAVE_APPROVER, WF_UP_CREATE_SAVE_ATTR_SAVED_PROFILE, WF_UP_CREATE_SAVE_DECISION_MESSAGE_KEY, WF_UP_CREATE_SAVE_FACT_PREFS_EMAIL, WF_UP_CREATE_SAVE_FACT_PREFS_FULL_NAME, WF_UP_CREATE_SAVE_FACT_PREFS_LOGIN_NAME, WF_UP_CREATE_SAVE_FACT_SUBMITTER, WF_WP_SAVE_APPROVER, WF_WP_SAVE_DECISION_MESSAGE_KEY, WF_WP_SAVE_FACT_CURRENT_TEXT, WF_WP_SAVE_FACT_DIFF_TEXT, WF_WP_SAVE_FACT_IS_AUTHENTICATED, WF_WP_SAVE_FACT_PAGE_NAME, WF_WP_SAVE_FACT_PROPOSED_TEXT, WF_WP_SAVE_REJECT_MESSAGE_KEY -
Constructor Summary
Constructors Constructor Description DefaultWorkflowManager()Constructs a new WorkflowManager, with an empty workflow cache. -
Method Summary
Modifier and Type Method Description voidactionPerformed(WikiEvent event)Listens forWorkflowEventobjects emitted by Workflows.protected voidadd(Workflow workflow)Protected helper method that adds a newly created Workflow to the cache, and sets itsworkflowManagerandIdproperties if not set.protected voidaddToDecisionQueue(Decision decision)PrincipalgetApprover(String messageKey)Looks up and resolves the actor who approves a Decision for a particular Workflow, based on the Workflow's message key.List<Workflow>getCompletedWorkflows()Returns a collection of finished workflows; that is, those that have aborted or completed.DecisionQueuegetDecisionQueue()Returns the DecisionQueue associated with this WorkflowManagerprotected EnginegetEngine()Protected helper method that returns the associated EngineList<Workflow>getOwnerWorkflows(Session session)Returns the current workflows a wiki session owns.Set<Workflow>getWorkflows()Returns a collection of the currently active workflows.voidinitialize(Engine engine, Properties props)Initializes this Engine component.protected voidremove(Workflow workflow)Protected helper method that removes a specified Workflow from the cache, and moves it to the workflow history list.protected voidremoveFromDecisionQueue(Decision decision)booleanrequiresApproval(String messageKey)Returnstrueif a workflow matching a particular key contains an approval step.
-
Constructor Details
-
DefaultWorkflowManager
public DefaultWorkflowManager()Constructs a new WorkflowManager, with an empty workflow cache.
-
-
Method Details
-
getWorkflows
Returns a collection of the currently active workflows.- Specified by:
getWorkflowsin interfaceWorkflowManager- Returns:
- the current workflows
-
getCompletedWorkflows
Returns a collection of finished workflows; that is, those that have aborted or completed.- Specified by:
getCompletedWorkflowsin interfaceWorkflowManager- Returns:
- the finished workflows
-
initialize
Initializes this Engine component. Note that the engine is not fully initialized at this point, so don't do anything fancy here - use lazy init, if you have to.
Any properties that begin with
WorkflowManager.PROPERTY_APPROVER_PREFIXwill be assumed to be Decisions that require approval. For a given property key, everything after the prefix denotes the Decision's message key. The property value indicates the Principal (Role, GroupPrincipal, WikiPrincipal) that must approve the Decision. For example, if the property key/value pair isjspwiki.approver.workflow.saveWikiPage=Admin, the Decision's message key isworkflow.saveWikiPage. The PrincipalAdminwill be resolved viaAuthorizationManager.resolvePrincipal(String).- Specified by:
initializein interfaceInitializable- Parameters:
engine- Engine performing the initialization.props- Properties for setup.
-
requiresApproval
Returnstrueif a workflow matching a particular key contains an approval step.- Specified by:
requiresApprovalin interfaceWorkflowManager- Parameters:
messageKey- the name of the workflow; corresponds to the value returned byWorkflow.getMessageKey().- Returns:
- the result
-
getApprover
Looks up and resolves the actor who approves a Decision for a particular Workflow, based on the Workflow's message key. If not found, or if Principal is Unresolved, throws WikiException. This particular implementation always returns the GroupPrincipalAdmin- Specified by:
getApproverin interfaceWorkflowManager- Parameters:
messageKey- the Decision's message key- Returns:
- the actor who approves Decisions
- Throws:
WikiException- if the message key was not found, or the Principal value corresponding to the key could not be resolved
-
getEngine
Protected helper method that returns the associated Engine- Returns:
- the wiki engine
-
getDecisionQueue
Returns the DecisionQueue associated with this WorkflowManager- Specified by:
getDecisionQueuein interfaceWorkflowManager- Returns:
- the decision queue
-
getOwnerWorkflows
Returns the current workflows a wiki session owns. These are workflows whoseWorkflow.getOwner()method returns a Principal also possessed by the wiki session (seeSession.getPrincipals()). If the wiki session is not authenticated, this method returns an empty Collection.- Specified by:
getOwnerWorkflowsin interfaceWorkflowManager- Parameters:
session- the wiki session- Returns:
- the collection workflows the wiki session owns, which may be empty
-
actionPerformed
Listens forWorkflowEventobjects emitted by Workflows. In particular, this method listens forWorkflowEvent.CREATED,WorkflowEvent.ABORTED,WorkflowEvent.COMPLETEDandWorkflowEvent.DQ_REMOVALevents. If a workflow is created, it is automatically added to the cache. If one is aborted or completed, it is automatically removed. If a removal from decision queue is issued, the current step from workflow, which is assumed to be aDecision, is removed from theDecisionQueue.- Specified by:
actionPerformedin interfaceWikiEventListener- Parameters:
event- the event passed to this listener
-
add
Protected helper method that adds a newly created Workflow to the cache, and sets itsworkflowManagerandIdproperties if not set.- Parameters:
workflow- the workflow to add
-
remove
Protected helper method that removes a specified Workflow from the cache, and moves it to the workflow history list. This method defensively checks to see if the workflow has not yet been removed.- Parameters:
workflow- the workflow to remove
-
removeFromDecisionQueue
-
addToDecisionQueue
-