Class AbstractJackrabbitWorkflowStore
- java.lang.Object
-
- org.ametys.plugins.workflow.store.AbstractJackrabbitWorkflowStore
-
- All Implemented Interfaces:
com.opensymphony.workflow.spi.WorkflowStore
,AmetysWorkflowStore
- Direct Known Subclasses:
AmetysObjectWorkflowStore
,GenericWorkflowStore
public abstract class AbstractJackrabbitWorkflowStore extends Object implements AmetysWorkflowStore
Abstract workflow store for Jackrabbit
-
-
Field Summary
Fields Modifier and Type Field Description (package private) static String
__ACTION_ID_PROPERTY
Action id property for step node.(package private) static String
__CALLER_PROPERTY
Caller property for step node.(package private) static String
__CURRENT_STEP_NODE
Current step node name.(package private) static String
__DUE_DATE_PROPERTY
Due date property for step node.(package private) static String
__ENTRY_NODE_PREFIX
Entry node name prefix.(package private) static String
__ENTRY_NT
Entry node type.(package private) static String
__FINISH_DATE_PROPERTY
Finish date property for step node.(package private) static String
__HISTORY_STEP_NODE
History step node name.(package private) static String
__ID_PROPERTY
ID for entry and step node.static String
__NAMESPACE
Namespace for node type names, node names and property names.static String
__NAMESPACE_PREFIX
Prefix used for this namespace.(package private) static String
__NEXT_ENTRY_ID_PROPERTY
Next entry id property for root node.(package private) static String
__NEXT_STEP_ID_PROPERTY
Next step id property for entry node.static String
__NM_PREFIX
Prefix with colon for this namespace.(package private) static String
__OWNER_PROPERTY
Owner property for step node.(package private) static String
__PREVIOUS_STEPS_PROPERTY
Previous steps ids property for step node.(package private) static String
__ROOT_NODE
Root node name.static String
__ROOT_NT
Root node type.(package private) static String
__START_DATE_PROPERTY
Start date property for step node.(package private) static String
__STATE_PROPERTY
State property for entry node.(package private) static String
__STATUS_PROPERTY
Status property for step node.(package private) static String
__STEP_ID_PROPERTY
Step id property for step node.(package private) static String
__STEP_NT
Step node type.(package private) static String
__WF_NAME_PROPERTY
Workflow name property for entry node.protected Log
_log
Log instance for logging events, errors, warnigs, etc.protected Repository
_repository
JCR Repsoitory
-
Constructor Summary
Constructors Constructor Description AbstractJackrabbitWorkflowStore(Repository repository)
Create a JackrabbitWorkflowStore.
-
Method Summary
All Methods Static Methods Instance Methods Abstract Methods Concrete Methods Modifier and Type Method Description protected static Calendar
__toCalendar(Date date)
Convert a Date to a Calendar.protected abstract void
_createRootNode()
Create the root node.protected long
_getNextEntryId()
Generate an unique entry id.protected long
_getNextStepId(Node entry)
Generate an unique step id for an entry.protected abstract Node
_getOrCreateParentEntryNode(Node root, long id)
Retrieves the parent node of a workflow entry.protected abstract Node
_getRootNode(Session session)
Get the workflow store root nodeprotected Session
_getSession()
Open a session to the _repository.protected void
_release(Session session)
Release a session.private String
buildFieldExpression(com.opensymphony.workflow.query.FieldExpression expr)
Build a field expression.protected String
buildFieldExpression(com.opensymphony.workflow.query.WorkflowQuery query)
Build a field expression.protected String
buildNestedExpression(com.opensymphony.workflow.query.NestedExpression nestedExpr)
Build a nested expression.void
clearHistory(long entryId)
Removes all history steps of an instance from the database.
All future calls to the history will return an empty List of Step.com.opensymphony.workflow.spi.Step
createCurrentStep(long entryId, int stepId, String owner, Date startDate, Date dueDate, String status, long[] previousIds)
com.opensymphony.workflow.spi.WorkflowEntry
createEntry(String workflowName)
void
deleteInstance(long entryId)
Deletes a workflow instance from the database.
All future calls from the workflow to this instance will failed.List
findCurrentSteps(long entryId)
com.opensymphony.workflow.spi.WorkflowEntry
findEntry(long entryId)
List
findHistorySteps(long entryId)
protected String
getCondition(com.opensymphony.workflow.query.WorkflowQuery query)
Get the condition from the query.Node
getEntryNode(Session session, long entryId)
Retrieve an entry node from its id.protected com.opensymphony.workflow.query.FieldExpression
getFirstFieldExpression(com.opensymphony.workflow.query.Expression expression)
Retrieve the first field expression from an expression.(package private) Node
getHistoryStepNode(Session session, long entryId, long stepId)
Retrieve an history step node from its id for a particular entry.protected String
getPredicate(com.opensymphony.workflow.query.WorkflowExpressionQuery query)
Build a predicate from the query.protected String
getPropertyName(int field)
Retrieve a propertyName from a field id.com.opensymphony.module.propertyset.PropertySet
getPropertySet(long entryId)
protected String
getSortCriteria(com.opensymphony.workflow.query.WorkflowExpressionQuery query)
Get the JCR sort criteria from the query.void
init(Map props)
com.opensymphony.workflow.spi.Step
markFinished(com.opensymphony.workflow.spi.Step step, int actionId, Date finishDate, String status, String caller)
void
moveToHistory(com.opensymphony.workflow.spi.Step step)
List
query(com.opensymphony.workflow.query.WorkflowExpressionQuery query)
List
query(com.opensymphony.workflow.query.WorkflowQuery query)
void
removeEntry(long entryId)
Remove a workflow entryvoid
setEntryState(long entryId, int state)
protected void
storeNewEntry(com.opensymphony.workflow.spi.WorkflowEntry workflowEntry)
Store a new workflow entry into the JCR repositoryprotected String
translateValue(Object value)
Convert and maybe escape a value to support XPath grammar.-
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
-
Methods inherited from interface org.ametys.plugins.workflow.store.AmetysWorkflowStore
shouldClearHistory
-
-
-
-
Field Detail
-
__NAMESPACE
public static final String __NAMESPACE
Namespace for node type names, node names and property names.- See Also:
- Constant Field Values
-
__NAMESPACE_PREFIX
public static final String __NAMESPACE_PREFIX
Prefix used for this namespace.- See Also:
- Constant Field Values
-
__NM_PREFIX
public static final String __NM_PREFIX
Prefix with colon for this namespace.- See Also:
- Constant Field Values
-
__ROOT_NT
public static final String __ROOT_NT
Root node type.- See Also:
- Constant Field Values
-
__ENTRY_NT
static final String __ENTRY_NT
Entry node type.- See Also:
- Constant Field Values
-
__STEP_NT
static final String __STEP_NT
Step node type.- See Also:
- Constant Field Values
-
__ROOT_NODE
static final String __ROOT_NODE
Root node name.- See Also:
- Constant Field Values
-
__ENTRY_NODE_PREFIX
static final String __ENTRY_NODE_PREFIX
Entry node name prefix.- See Also:
- Constant Field Values
-
__CURRENT_STEP_NODE
static final String __CURRENT_STEP_NODE
Current step node name.- See Also:
- Constant Field Values
-
__HISTORY_STEP_NODE
static final String __HISTORY_STEP_NODE
History step node name.- See Also:
- Constant Field Values
-
__NEXT_ENTRY_ID_PROPERTY
static final String __NEXT_ENTRY_ID_PROPERTY
Next entry id property for root node.- See Also:
- Constant Field Values
-
__ID_PROPERTY
static final String __ID_PROPERTY
ID for entry and step node.- See Also:
- Constant Field Values
-
__WF_NAME_PROPERTY
static final String __WF_NAME_PROPERTY
Workflow name property for entry node.- See Also:
- Constant Field Values
-
__STATE_PROPERTY
static final String __STATE_PROPERTY
State property for entry node.- See Also:
- Constant Field Values
-
__NEXT_STEP_ID_PROPERTY
static final String __NEXT_STEP_ID_PROPERTY
Next step id property for entry node.- See Also:
- Constant Field Values
-
__STEP_ID_PROPERTY
static final String __STEP_ID_PROPERTY
Step id property for step node.- See Also:
- Constant Field Values
-
__ACTION_ID_PROPERTY
static final String __ACTION_ID_PROPERTY
Action id property for step node.- See Also:
- Constant Field Values
-
__OWNER_PROPERTY
static final String __OWNER_PROPERTY
Owner property for step node.- See Also:
- Constant Field Values
-
__CALLER_PROPERTY
static final String __CALLER_PROPERTY
Caller property for step node.- See Also:
- Constant Field Values
-
__START_DATE_PROPERTY
static final String __START_DATE_PROPERTY
Start date property for step node.- See Also:
- Constant Field Values
-
__DUE_DATE_PROPERTY
static final String __DUE_DATE_PROPERTY
Due date property for step node.- See Also:
- Constant Field Values
-
__FINISH_DATE_PROPERTY
static final String __FINISH_DATE_PROPERTY
Finish date property for step node.- See Also:
- Constant Field Values
-
__STATUS_PROPERTY
static final String __STATUS_PROPERTY
Status property for step node.- See Also:
- Constant Field Values
-
__PREVIOUS_STEPS_PROPERTY
static final String __PREVIOUS_STEPS_PROPERTY
Previous steps ids property for step node.- See Also:
- Constant Field Values
-
_repository
protected Repository _repository
JCR Repsoitory
-
-
Constructor Detail
-
AbstractJackrabbitWorkflowStore
public AbstractJackrabbitWorkflowStore(Repository repository)
Create a JackrabbitWorkflowStore.- Parameters:
repository
- the JCR Repository to use.
-
-
Method Detail
-
_getSession
protected Session _getSession() throws RepositoryException
Open a session to the _repository.- Returns:
- the session opened.
- Throws:
RepositoryException
- if an error occurs.
-
_release
protected void _release(Session session)
Release a session.Default implementation calls logout on the session.
- Parameters:
session
- the session to release.
-
__toCalendar
protected static Calendar __toCalendar(Date date)
Convert a Date to a Calendar.- Parameters:
date
- The date to convert.- Returns:
- The date converted as a Calendar.
-
init
public void init(Map props) throws com.opensymphony.workflow.StoreException
- Specified by:
init
in interfacecom.opensymphony.workflow.spi.WorkflowStore
- Throws:
com.opensymphony.workflow.StoreException
-
_createRootNode
protected abstract void _createRootNode() throws RepositoryException
Create the root node.- Throws:
RepositoryException
- if an error occurs.
-
_getRootNode
protected abstract Node _getRootNode(Session session) throws RepositoryException
Get the workflow store root node- Parameters:
session
- the session to use- Returns:
- The workflow store root node
- Throws:
RepositoryException
- if an error occurs.
-
setEntryState
public void setEntryState(long entryId, int state) throws com.opensymphony.workflow.StoreException
- Specified by:
setEntryState
in interfacecom.opensymphony.workflow.spi.WorkflowStore
- Throws:
com.opensymphony.workflow.StoreException
-
getPropertySet
public com.opensymphony.module.propertyset.PropertySet getPropertySet(long entryId) throws com.opensymphony.workflow.StoreException
- Specified by:
getPropertySet
in interfacecom.opensymphony.workflow.spi.WorkflowStore
- Throws:
com.opensymphony.workflow.StoreException
-
createCurrentStep
public com.opensymphony.workflow.spi.Step createCurrentStep(long entryId, int stepId, String owner, Date startDate, Date dueDate, String status, long[] previousIds) throws com.opensymphony.workflow.StoreException
- Specified by:
createCurrentStep
in interfacecom.opensymphony.workflow.spi.WorkflowStore
- Throws:
com.opensymphony.workflow.StoreException
-
createEntry
public com.opensymphony.workflow.spi.WorkflowEntry createEntry(String workflowName) throws com.opensymphony.workflow.StoreException
- Specified by:
createEntry
in interfacecom.opensymphony.workflow.spi.WorkflowStore
- Throws:
com.opensymphony.workflow.StoreException
-
storeNewEntry
protected void storeNewEntry(com.opensymphony.workflow.spi.WorkflowEntry workflowEntry) throws com.opensymphony.workflow.StoreException
Store a new workflow entry into the JCR repository- Parameters:
workflowEntry
- The new entry- Throws:
com.opensymphony.workflow.StoreException
- on error
-
removeEntry
public void removeEntry(long entryId) throws com.opensymphony.workflow.StoreException
Remove a workflow entry- Parameters:
entryId
- The id of workflow entry- Throws:
com.opensymphony.workflow.StoreException
- if an error occurred
-
_getOrCreateParentEntryNode
protected abstract Node _getOrCreateParentEntryNode(Node root, long id) throws RepositoryException
Retrieves the parent node of a workflow entry. Creates non existing ancestor nodes when necessary.- Parameters:
root
- The workflow store root nodeid
- The workflow entry id- Returns:
- The parent node
- Throws:
RepositoryException
- on repository error
-
getEntryNode
public Node getEntryNode(Session session, long entryId) throws RepositoryException
Retrieve an entry node from its id.- Parameters:
session
- the session to use.entryId
- the id of the entry.- Returns:
- the entry node.
- Throws:
RepositoryException
- if there is no entry for this id.
-
getHistoryStepNode
Node getHistoryStepNode(Session session, long entryId, long stepId) throws RepositoryException
Retrieve an history step node from its id for a particular entry.- Parameters:
session
- The session to use.entryId
- The id of the entry.stepId
- The id of the step.- Returns:
- The step node.
- Throws:
RepositoryException
- if no step matches or multiple steps match.
-
_getNextEntryId
protected long _getNextEntryId() throws RepositoryException
Generate an unique entry id.- Returns:
- A new entry id.
- Throws:
RepositoryException
- if an error occurs.
-
_getNextStepId
protected long _getNextStepId(Node entry) throws RepositoryException
Generate an unique step id for an entry.- Parameters:
entry
- The entry.- Returns:
- A new step id.
- Throws:
RepositoryException
- if an error occurs.
-
findCurrentSteps
public List findCurrentSteps(long entryId) throws com.opensymphony.workflow.StoreException
- Specified by:
findCurrentSteps
in interfacecom.opensymphony.workflow.spi.WorkflowStore
- Throws:
com.opensymphony.workflow.StoreException
-
findEntry
public com.opensymphony.workflow.spi.WorkflowEntry findEntry(long entryId) throws com.opensymphony.workflow.StoreException
- Specified by:
findEntry
in interfacecom.opensymphony.workflow.spi.WorkflowStore
- Throws:
com.opensymphony.workflow.StoreException
-
findHistorySteps
public List findHistorySteps(long entryId) throws com.opensymphony.workflow.StoreException
- Specified by:
findHistorySteps
in interfacecom.opensymphony.workflow.spi.WorkflowStore
- Throws:
com.opensymphony.workflow.StoreException
-
markFinished
public com.opensymphony.workflow.spi.Step markFinished(com.opensymphony.workflow.spi.Step step, int actionId, Date finishDate, String status, String caller) throws com.opensymphony.workflow.StoreException
- Specified by:
markFinished
in interfacecom.opensymphony.workflow.spi.WorkflowStore
- Throws:
com.opensymphony.workflow.StoreException
-
moveToHistory
public void moveToHistory(com.opensymphony.workflow.spi.Step step) throws com.opensymphony.workflow.StoreException
- Specified by:
moveToHistory
in interfacecom.opensymphony.workflow.spi.WorkflowStore
- Throws:
com.opensymphony.workflow.StoreException
-
query
public List query(com.opensymphony.workflow.query.WorkflowQuery query) throws com.opensymphony.workflow.StoreException
- Specified by:
query
in interfacecom.opensymphony.workflow.spi.WorkflowStore
- Throws:
com.opensymphony.workflow.StoreException
-
clearHistory
public void clearHistory(long entryId) throws com.opensymphony.workflow.StoreException
Description copied from interface:AmetysWorkflowStore
Removes all history steps of an instance from the database.
All future calls to the history will return an empty List of Step.- Specified by:
clearHistory
in interfaceAmetysWorkflowStore
- Parameters:
entryId
- the id of a workflow instance.- Throws:
com.opensymphony.workflow.StoreException
- if an error occurs.
-
deleteInstance
public void deleteInstance(long entryId) throws com.opensymphony.workflow.StoreException
Description copied from interface:AmetysWorkflowStore
Deletes a workflow instance from the database.
All future calls from the workflow to this instance will failed.- Specified by:
deleteInstance
in interfaceAmetysWorkflowStore
- Parameters:
entryId
- The id of a workflow instance.- Throws:
com.opensymphony.workflow.StoreException
- if an error occurs.
-
getCondition
protected String getCondition(com.opensymphony.workflow.query.WorkflowQuery query) throws com.opensymphony.workflow.StoreException
Get the condition from the query.- Parameters:
query
- The query.- Returns:
- The resulting condition.
- Throws:
com.opensymphony.workflow.StoreException
- if the query is not valid.
-
buildFieldExpression
protected String buildFieldExpression(com.opensymphony.workflow.query.WorkflowQuery query) throws com.opensymphony.workflow.StoreException
Build a field expression.- Parameters:
query
- The query.- Returns:
- The resulting field expression.
- Throws:
com.opensymphony.workflow.StoreException
- if the query is not valid.
-
query
public List query(com.opensymphony.workflow.query.WorkflowExpressionQuery query) throws com.opensymphony.workflow.StoreException
- Specified by:
query
in interfacecom.opensymphony.workflow.spi.WorkflowStore
- Throws:
com.opensymphony.workflow.StoreException
-
getSortCriteria
protected String getSortCriteria(com.opensymphony.workflow.query.WorkflowExpressionQuery query) throws com.opensymphony.workflow.StoreException
Get the JCR sort criteria from the query.- Parameters:
query
- The query.- Returns:
- The sort criteria.
- Throws:
com.opensymphony.workflow.StoreException
- if the criteria is not valid.
-
getFirstFieldExpression
protected com.opensymphony.workflow.query.FieldExpression getFirstFieldExpression(com.opensymphony.workflow.query.Expression expression)
Retrieve the first field expression from an expression.- Parameters:
expression
- the expression to inspect.- Returns:
- the first field expression.
-
getPredicate
protected String getPredicate(com.opensymphony.workflow.query.WorkflowExpressionQuery query) throws com.opensymphony.workflow.StoreException
Build a predicate from the query.- Parameters:
query
- The query.- Returns:
- The predicate.
- Throws:
com.opensymphony.workflow.StoreException
- if the query is not valid.
-
buildNestedExpression
protected String buildNestedExpression(com.opensymphony.workflow.query.NestedExpression nestedExpr) throws com.opensymphony.workflow.StoreException
Build a nested expression.- Parameters:
nestedExpr
- The nested expression.- Returns:
- The resulting condition.
- Throws:
com.opensymphony.workflow.StoreException
- if the expression is not valid.
-
buildFieldExpression
private String buildFieldExpression(com.opensymphony.workflow.query.FieldExpression expr) throws com.opensymphony.workflow.StoreException
Build a field expression.- Parameters:
expr
- The field expression.- Returns:
- The resulting condition.
- Throws:
com.opensymphony.workflow.StoreException
- if the expression is not valid.
-
translateValue
protected String translateValue(Object value) throws com.opensymphony.workflow.StoreException
Convert and maybe escape a value to support XPath grammar.- Parameters:
value
- The value to translate.- Returns:
- The translated value.
- Throws:
com.opensymphony.workflow.StoreException
- if the value cannot be translated.
-
getPropertyName
protected String getPropertyName(int field) throws com.opensymphony.workflow.StoreException
Retrieve a propertyName from a field id.- Parameters:
field
- The field id.- Returns:
- The corresponding property name.
- Throws:
com.opensymphony.workflow.StoreException
- if the field is not valid.- See Also:
FieldExpression
-
-