Package org.apache.wiki.workflow
Class DefaultWorkflowManager
- java.lang.Object
- 
- org.apache.wiki.workflow.DefaultWorkflowManager
 
- 
- All Implemented Interfaces:
- java.util.EventListener,- Initializable,- WikiEventListener,- WorkflowManager
 
 public class DefaultWorkflowManager extends java.lang.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.WorkflowManagerPROPERTY_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 SummaryConstructors Constructor Description DefaultWorkflowManager()Constructs a new WorkflowManager, with an empty workflow cache.
 - 
Method SummaryAll Methods Instance Methods Concrete Methods 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)java.security.PrincipalgetApprover(java.lang.String messageKey)Looks up and resolves the actor who approves a Decision for a particular Workflow, based on the Workflow's message key.java.util.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 Enginejava.util.List<Workflow>getOwnerWorkflows(Session session)Returns the current workflows a wiki session owns.java.util.Set<Workflow>getWorkflows()Returns a collection of the currently active workflows.voidinitialize(Engine engine, java.util.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, Context context)booleanrequiresApproval(java.lang.String messageKey)Returnstrueif a workflow matching a particular key contains an approval step.
 
- 
- 
- 
Constructor Detail- 
DefaultWorkflowManagerpublic DefaultWorkflowManager() Constructs a new WorkflowManager, with an empty workflow cache.
 
- 
 - 
Method Detail- 
getWorkflowspublic java.util.Set<Workflow> getWorkflows() Returns a collection of the currently active workflows.- Specified by:
- getWorkflowsin interface- WorkflowManager
- Returns:
- the current workflows
 
 - 
getCompletedWorkflowspublic java.util.List<Workflow> getCompletedWorkflows() Returns a collection of finished workflows; that is, those that have aborted or completed.- Specified by:
- getCompletedWorkflowsin interface- WorkflowManager
- Returns:
- the finished workflows
 
 - 
initializepublic void initialize(Engine engine, java.util.Properties props) 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 interface- Initializable
- Parameters:
- engine- Engine performing the initialization.
- props- Properties for setup.
 
 - 
requiresApprovalpublic boolean requiresApproval(java.lang.String messageKey) Returnstrueif a workflow matching a particular key contains an approval step.- Specified by:
- requiresApprovalin interface- WorkflowManager
- Parameters:
- messageKey- the name of the workflow; corresponds to the value returned by- Workflow.getMessageKey().
- Returns:
- the result
 
 - 
getApproverpublic java.security.Principal getApprover(java.lang.String messageKey) throws WikiException 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 interface- WorkflowManager
- 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
 
 - 
getEngineprotected Engine getEngine() Protected helper method that returns the associated Engine- Returns:
- the wiki engine
 
 - 
getDecisionQueuepublic DecisionQueue getDecisionQueue() Returns the DecisionQueue associated with this WorkflowManager- Specified by:
- getDecisionQueuein interface- WorkflowManager
- Returns:
- the decision queue
 
 - 
getOwnerWorkflowspublic java.util.List<Workflow> getOwnerWorkflows(Session session) 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 interface- WorkflowManager
- Parameters:
- session- the wiki session
- Returns:
- the collection workflows the wiki session owns, which may be empty
 
 - 
actionPerformedpublic void actionPerformed(WikiEvent event) 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 interface- WikiEventListener
- Parameters:
- event- the event passed to this listener
 
 - 
addprotected void add(Workflow workflow) Protected helper method that adds a newly created Workflow to the cache, and sets itsworkflowManagerandIdproperties if not set.- Parameters:
- workflow- the workflow to add
 
 - 
removeprotected void remove(Workflow workflow) 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
 
 - 
removeFromDecisionQueueprotected void removeFromDecisionQueue(Decision decision, Context context) 
 - 
addToDecisionQueueprotected void addToDecisionQueue(Decision decision) 
 
- 
 
-