Class WorkflowService
- java.lang.Object
-
- org.imixs.workflow.engine.WorkflowService
-
- All Implemented Interfaces:
WorkflowContext
,WorkflowManager
@DeclareRoles({"org.imixs.ACCESSLEVEL.NOACCESS","org.imixs.ACCESSLEVEL.READERACCESS","org.imixs.ACCESSLEVEL.AUTHORACCESS","org.imixs.ACCESSLEVEL.EDITORACCESS","org.imixs.ACCESSLEVEL.MANAGERACCESS"}) @RolesAllowed({"org.imixs.ACCESSLEVEL.NOACCESS","org.imixs.ACCESSLEVEL.READERACCESS","org.imixs.ACCESSLEVEL.AUTHORACCESS","org.imixs.ACCESSLEVEL.EDITORACCESS","org.imixs.ACCESSLEVEL.MANAGERACCESS"}) public class WorkflowService extends Object implements WorkflowManager, WorkflowContext
The WorkflowService is the Java EE Implementation for the Imixs Workflow Core API. This interface acts as a service facade and supports basic methods to create, process and access workitems. The Interface extends the core api interface org.imixs.workflow.WorkflowManager with getter methods to fetch collections of workitems.- Author:
- rsoika
-
-
Field Summary
Fields Modifier and Type Field Description protected jakarta.enterprise.inject.Instance<Adapter>
adapters
static String
DEFAULT_TYPE
static String
INVALID_ITEMVALUE_FORMAT
static String
INVALID_TAG_FORMAT
static String
PARTICIPANTS
protected jakarta.enterprise.event.Event<ProcessingEvent>
processingEvents
static String
READACCESS
static int
SORT_ORDER_CREATED_ASC
static int
SORT_ORDER_CREATED_DESC
static int
SORT_ORDER_MODIFIED_ASC
static int
SORT_ORDER_MODIFIED_DESC
protected jakarta.enterprise.event.Event<TextEvent>
textEvents
static String
UNIQUEIDREF
static String
WRITEACCESS
-
Constructor Summary
Constructors Constructor Description WorkflowService()
-
Method Summary
All Methods Instance Methods Concrete Methods Deprecated Methods Modifier and Type Method Description String
adaptText(String text, ItemCollection documentContext)
The method adaptText can be called to replace predefined xml tags included in a text with custom values.List<String>
adaptTextList(String text, ItemCollection documentContext)
The method adaptTextList can be called to replace a text with custom values.ItemCollection
evalNextTask(ItemCollection documentContext)
The method evaluates the next task for a process instance (workitem) based on the current model definition.ItemCollection
evalWorkflowResult(ItemCollection event, String tag, ItemCollection documentContext)
The method evaluates the WorkflowResult for a given BPMN event and returns a ItemColleciton containing all item values of a specified tag name.ItemCollection
evalWorkflowResult(ItemCollection event, String tag, ItemCollection documentContext, boolean resolveItemValues)
The method evaluates the WorkflowResult for a given BPMN event and returns a ItemColleciton containing all item values of a specified tag name.ItemCollection
evalWorkflowResult(ItemCollection event, ItemCollection documentContext)
Deprecated.ItemCollection
evalWorkflowResult(ItemCollection event, ItemCollection documentContext, boolean resolveItemValues)
Deprecated.DocumentService
getDocumentService()
Returns an instance of the DocumentService EJB.List<ItemCollection>
getEvents(ItemCollection workitem)
This returns a list of workflow events assigned to a given workitem.ModelManager
getModelManager()
This Method returns the modelManager Instance.ReportService
getReportService()
Returns an instance of the ReportService EJB.jakarta.ejb.SessionContext
getSessionContext()
Returns an instance of the EJB session context.String
getUserName()
Obtain the java.security.Principal that identifies the caller and returns the name of this principal.List<String>
getUserNameList()
This method returns a list of user names, roles and application groups the caller belongs to.ItemCollection
getWorkItem(String uniqueid)
This method loads a Workitem with the corresponding uniqueid.List<ItemCollection>
getWorkListByAuthor(String name, String type, int pageSize, int pageIndex, String sortBy, boolean sortReverse)
Returns a collection of workitems for which the specified user has explicit write permission.List<ItemCollection>
getWorkListByCreator(String name, String type, int pageSize, int pageIndex, String sortBy, boolean sortReverse)
Returns a collection of workitems created by a specified user ($Creator).List<ItemCollection>
getWorkListByGroup(String name, String type, int pageSize, int pageIndex, String sortBy, boolean sortReverse)
Returns a list of workitems filtered by the field $workflowgroup the method supports still also the deprecated field "txtworkflowgroup"List<ItemCollection>
getWorkListByOwner(String name, String type, int pageSize, int pageIndex, String sortBy, boolean sortReverse)
Returns a collection of workitems containing a '$owner' item belonging to a specified username.List<ItemCollection>
getWorkListByProcessID(int aid, String type, int pageSize, int pageIndex, String sortBy, boolean sortReverse)
Returns a collection of workitems belonging to a specified $taskID defined by the workflow model.List<ItemCollection>
getWorkListByRef(String aref)
Returns a collection of all workitems belonging to a specified workitem identified by the attribute $UniqueIDRef.List<ItemCollection>
getWorkListByRef(String aref, String type, int pageSize, int pageIndex, String sortBy, boolean sortReverse)
Returns a collection of workitems belonging to a specified workitem identified by the attribute $UniqueIDRef.List<ItemCollection>
getWorkListByWriteAccess(String type, int pageSize, int pageIndex, String sortBy, boolean sortReverse)
Returns a collection of workitems where the current user has a writeAccess.boolean
isUserInRole(String rolename)
Test if the caller has a given security role.ItemCollection
processWorkItem(ItemCollection workitem)
This method processes a workItem by the WorkflowKernel and saves the workitem after the processing was finished successful.ItemCollection
processWorkItem(ItemCollection workitem, int eventID)
This method processes a workItem based on a given event.ItemCollection
processWorkItem(ItemCollection workitem, ItemCollection event)
This method processes a workItem based on a given event.ItemCollection
processWorkItemByNewTransaction(ItemCollection workitem)
This method processes a workitem in a new transaction.protected void
registerAdapters(WorkflowKernel workflowkernel)
protected void
registerPlugins(WorkflowKernel workflowkernel, Model model)
This method register all plugin classes listed in the model profilevoid
removeWorkItem(ItemCollection aworkitem)
The method removes the provide Workitem form the persistence unit managed by the WorkflowManager implementation.protected void
updateMetadata(ItemCollection workitem)
This method updates the workitem metadata.
-
-
-
Field Detail
-
UNIQUEIDREF
public static final String UNIQUEIDREF
- See Also:
- Constant Field Values
-
READACCESS
public static final String READACCESS
- See Also:
- Constant Field Values
-
WRITEACCESS
public static final String WRITEACCESS
- See Also:
- Constant Field Values
-
PARTICIPANTS
public static final String PARTICIPANTS
- See Also:
- Constant Field Values
-
DEFAULT_TYPE
public static final String DEFAULT_TYPE
- See Also:
- Constant Field Values
-
SORT_ORDER_CREATED_DESC
public static final int SORT_ORDER_CREATED_DESC
- See Also:
- Constant Field Values
-
SORT_ORDER_CREATED_ASC
public static final int SORT_ORDER_CREATED_ASC
- See Also:
- Constant Field Values
-
SORT_ORDER_MODIFIED_DESC
public static final int SORT_ORDER_MODIFIED_DESC
- See Also:
- Constant Field Values
-
SORT_ORDER_MODIFIED_ASC
public static final int SORT_ORDER_MODIFIED_ASC
- See Also:
- Constant Field Values
-
INVALID_ITEMVALUE_FORMAT
public static final String INVALID_ITEMVALUE_FORMAT
- See Also:
- Constant Field Values
-
INVALID_TAG_FORMAT
public static final String INVALID_TAG_FORMAT
- See Also:
- Constant Field Values
-
adapters
@Inject @Any protected jakarta.enterprise.inject.Instance<Adapter> adapters
-
processingEvents
@Inject protected jakarta.enterprise.event.Event<ProcessingEvent> processingEvents
-
textEvents
@Inject protected jakarta.enterprise.event.Event<TextEvent> textEvents
-
-
Method Detail
-
getWorkItem
public ItemCollection getWorkItem(String uniqueid)
This method loads a Workitem with the corresponding uniqueid.- Specified by:
getWorkItem
in interfaceWorkflowManager
- Returns:
- WorkItem
-
getWorkListByOwner
public List<ItemCollection> getWorkListByOwner(String name, String type, int pageSize, int pageIndex, String sortBy, boolean sortReverse)
Returns a collection of workitems containing a '$owner' item belonging to a specified username. The '$owner' item can be controlled by the plug-inorg.imixs.workflow.plugins.OwnerPlugin
- Parameters:
name
- = username for itme '$owner' - if null current username will be usedpageSize
- = optional page count (default 20)pageIndex
- = optional start positiontype
- = defines the type property of the workitems to be returnd. can be nullsortBy
- -optional field to sort the resultsortReverse
- - optional sort direction- Returns:
- List of workitems
-
getWorkListByAuthor
public List<ItemCollection> getWorkListByAuthor(String name, String type, int pageSize, int pageIndex, String sortBy, boolean sortReverse)
Returns a collection of workitems for which the specified user has explicit write permission. The name is a username or role contained in the $WriteAccess attribute of the workItem. The method returns only workitems the call has sufficient read access for.- Parameters:
name
- = username or role contained in $writeAccess - if null current username will be usedpageSize
- = optional page count (default 20)pageIndex
- = optional start positiontype
- = defines the type property of the workitems to be returned. can be nullsortBy
- -optional field to sort the resultsortReverse
- - optional sort direction- Returns:
- List of workitems
-
getWorkListByCreator
public List<ItemCollection> getWorkListByCreator(String name, String type, int pageSize, int pageIndex, String sortBy, boolean sortReverse)
Returns a collection of workitems created by a specified user ($Creator). The behaivor is simmilar to the method getWorkList.- Parameters:
name
- = username for property $Creator - if null current username will be usedpageSize
- = optional page count (default 20)pageIndex
- = optional start positiontype
- = defines the type property of the workitems to be returnd. can be nullsortBy
- -optional field to sort the resultsortReverse
- - optional sort direction- Returns:
- List of workitems
-
getWorkListByWriteAccess
public List<ItemCollection> getWorkListByWriteAccess(String type, int pageSize, int pageIndex, String sortBy, boolean sortReverse)
Returns a collection of workitems where the current user has a writeAccess. This means that at least one of the userNames is contained in the $writeaccess property.- Parameters:
pageSize
- = optional page count (default 20)pageIndex
- = optional start positiontype
- = defines the type property of the workitems to be returnd. can be nullsortorder
- = defines sortorder (SORT_ORDER_CREATED_DESC = 0 SORT_ORDER_CREATED_ASC = 1 SORT_ORDER_MODIFIED_DESC = 2 SORT_ORDER_MODIFIED_ASC = 3)sortBy
- -optional field to sort the resultsortReverse
- - optional sort direction- Returns:
- List of workitems
-
getWorkListByGroup
public List<ItemCollection> getWorkListByGroup(String name, String type, int pageSize, int pageIndex, String sortBy, boolean sortReverse)
Returns a list of workitems filtered by the field $workflowgroup the method supports still also the deprecated field "txtworkflowgroup"- Parameters:
name
-type
-pageSize
- = optional page count (default 20)pageIndex
- = optional start positionsortBy
- -optional field to sort the resultsortReverse
- - optional sort direction- Returns:
-
getWorkListByProcessID
public List<ItemCollection> getWorkListByProcessID(int aid, String type, int pageSize, int pageIndex, String sortBy, boolean sortReverse)
Returns a collection of workitems belonging to a specified $taskID defined by the workflow model. The behaivor is simmilar to the method getWorkList.- Parameters:
aID
- = $taskID for the workitems to be returned.pageSize
- = optional page count (default 20)pageIndex
- = optional start positiontype
- = defines the type property of the workitems to be returnd. can be nullsortBy
- -optional field to sort the resultsortReverse
- - optional sort direction- Returns:
- List of workitems
-
getWorkListByRef
public List<ItemCollection> getWorkListByRef(String aref, String type, int pageSize, int pageIndex, String sortBy, boolean sortReverse)
Returns a collection of workitems belonging to a specified workitem identified by the attribute $UniqueIDRef. The behaivor of this Mehtod is simmilar to the method getWorkList.- Parameters:
aref
- A unique reference to another workitem inside a database *pageSize
- = optional page count (default 20)pageIndex
- = optional start positiontype
- = defines the type property of the workitems to be returnd. can be nullsortBy
- -optional field to sort the resultsortReverse
- - optional sort direction- Returns:
- List of workitems
-
getWorkListByRef
public List<ItemCollection> getWorkListByRef(String aref)
Returns a collection of all workitems belonging to a specified workitem identified by the attribute $UniqueIDRef.- Returns:
- List of workitems
-
getEvents
public List<ItemCollection> getEvents(ItemCollection workitem) throws ModelException
This returns a list of workflow events assigned to a given workitem. The method evaluates the events for the current $modelversion and $taskid. The result list is filtered by the properties 'keypublicresult' and 'keyRestrictedVisibility'. If the property keyRestrictedVisibility exits the method test if the current username is listed in one of the namefields. If the current user is in the role 'org.imixs.ACCESSLEVEL.MANAGERACCESS' the property keyRestrictedVisibility will be ignored.- Parameters:
workitem
-- Returns:
- Throws:
ModelException
-
processWorkItem
public ItemCollection processWorkItem(ItemCollection workitem) throws AccessDeniedException, ProcessingErrorException, PluginException, ModelException
This method processes a workItem by the WorkflowKernel and saves the workitem after the processing was finished successful. The workitem have to provide at least the properties '$modelversion', '$taskid' and '$eventid'Before the method starts processing the workitem, the method load the current instance of the given workitem and compares the property $taskID. If it is not equal the method throws an ProcessingErrorException.
After the workitem was processed successful, the method verifies the property $workitemList. If this property holds a list of entities these entities will be saved and the property will be removed automatically.
The method provides a observer pattern for plugins to get called during the processing phase.
- Specified by:
processWorkItem
in interfaceWorkflowManager
- Parameters:
workitem
- - the workItem to be processed- Returns:
- updated version of the processed workItem
- Throws:
AccessDeniedException
- - thrown if the user has insufficient access to update the workItemProcessingErrorException
- - thrown if the workitem could not be processed by the workflowKernelPluginException
- - thrown if processing by a plugin failsModelException
-
processWorkItem
public ItemCollection processWorkItem(ItemCollection workitem, ItemCollection event) throws AccessDeniedException, ProcessingErrorException, PluginException, ModelException
This method processes a workItem based on a given event.- Parameters:
workitem
- - the workItem to be processedevent
- - event object- Returns:
- updated version of the processed workItem
- Throws:
AccessDeniedException
- - thrown if the user has insufficient access to update the workItemProcessingErrorException
- - thrown if the workitem could not be processed by the workflowKernelPluginException
- - thrown if processing by a plugin failsModelException
- See Also:
ItemCollection processWorkItem(ItemCollection workitem)
-
processWorkItem
public ItemCollection processWorkItem(ItemCollection workitem, int eventID) throws AccessDeniedException, ProcessingErrorException, PluginException, ModelException
This method processes a workItem based on a given event.- Parameters:
workitem
- - the workItem to be processedevent
- - event object- Returns:
- updated version of the processed workItem
- Throws:
AccessDeniedException
- - thrown if the user has insufficient access to update the workItemProcessingErrorException
- - thrown if the workitem could not be processed by the workflowKernelPluginException
- - thrown if processing by a plugin failsModelException
- See Also:
ItemCollection processWorkItem(ItemCollection workitem)
-
processWorkItemByNewTransaction
public ItemCollection processWorkItemByNewTransaction(ItemCollection workitem) throws AccessDeniedException, ProcessingErrorException, PluginException, ModelException
This method processes a workitem in a new transaction.
-
removeWorkItem
public void removeWorkItem(ItemCollection aworkitem) throws AccessDeniedException
Description copied from interface:WorkflowManager
The method removes the provide Workitem form the persistence unit managed by the WorkflowManager implementation. The Method throws an InvalidWorkitemException if the provided Workitem is invalid.- Specified by:
removeWorkItem
in interfaceWorkflowManager
- Throws:
AccessDeniedException
-
getModelManager
public ModelManager getModelManager()
This Method returns the modelManager Instance. The current ModelVersion is automatically updated during the Method updateProfileEntity which is called from the processWorktiem method.- Specified by:
getModelManager
in interfaceWorkflowContext
- Returns:
- ModelManager
-
getSessionContext
public jakarta.ejb.SessionContext getSessionContext()
Returns an instance of the EJB session context.- Specified by:
getSessionContext
in interfaceWorkflowContext
- Returns:
-
getDocumentService
public DocumentService getDocumentService()
Returns an instance of the DocumentService EJB.- Returns:
-
getReportService
public ReportService getReportService()
Returns an instance of the ReportService EJB.- Returns:
-
getUserName
public String getUserName()
Obtain the java.security.Principal that identifies the caller and returns the name of this principal.- Returns:
- the user name
-
isUserInRole
public boolean isUserInRole(String rolename)
Test if the caller has a given security role.- Parameters:
rolename
-- Returns:
- true if user is in role
-
getUserNameList
public List<String> getUserNameList()
This method returns a list of user names, roles and application groups the caller belongs to.- Returns:
-
adaptText
public String adaptText(String text, ItemCollection documentContext) throws PluginException
The method adaptText can be called to replace predefined xml tags included in a text with custom values. The method fires a CDI event to inform TextAdapterServices to parse and adapt a given text fragment.- Parameters:
text
-documentContext
-- Returns:
- Throws:
PluginException
-
adaptTextList
public List<String> adaptTextList(String text, ItemCollection documentContext) throws PluginException
The method adaptTextList can be called to replace a text with custom values. The method fires a CDI event to inform TextAdapterServices to parse and adapt a given text fragment. The method expects a textList result.- Parameters:
text
-documentContext
-- Returns:
- Throws:
PluginException
-
evalWorkflowResult
public ItemCollection evalWorkflowResult(ItemCollection event, String tag, ItemCollection documentContext, boolean resolveItemValues) throws PluginException
The method evaluates the WorkflowResult for a given BPMN event and returns a ItemColleciton containing all item values of a specified tag name. Each tag definition of a WorkflowResult contains a name and a optional list of additional attributes. The method generates a item for each content element and attribute value.
e.g.- text
will result in the attributes 'comment' with value 'text' and 'comment.ignore' with the value 'true'Also embedded itemVaues can be resolved (resolveItemValues=true):
<somedata>ABC<itemvalue>$uniqueid</itemvalue></somedata>
This example will result in a new item 'somedata' with the $uniqueid prefixed with 'ABC'
- Parameters:
event
-tag
- - tag to be evaluateddocumentContext
-resolveItemValues
- - if true, itemValue tags will be resolved.- Returns:
- eval itemCollection or null if no tags are contained in the workflow result.
- Throws:
PluginException
- if the xml structure is invalid
-
evalWorkflowResult
public ItemCollection evalWorkflowResult(ItemCollection event, String tag, ItemCollection documentContext) throws PluginException
The method evaluates the WorkflowResult for a given BPMN event and returns a ItemColleciton containing all item values of a specified tag name. Each tag definition of a WorkflowResult contains a name and a optional list of additional attributes. The method generates a item for each content element and attribute value.
e.g.- text
will result in the attributes 'comment' with value 'text' and 'comment.ignore' with the value 'true'Also embedded itemVaues can be resolved (resolveItemValues=true):
<somedata>ABC<itemvalue>$uniqueid</itemvalue></somedata>
This example will result in a new item 'somedata' with the $uniqueid prefixed with 'ABC'
- Parameters:
event
-tag
- - tag to be evaluateddocumentContext
-- Returns:
- Throws:
PluginException
- See Also:
evalWorkflowResult(org.imixs.workflow.ItemCollection,java.lang.String,org.imixs.workflow.ItemCollection,boolean)
-
evalWorkflowResult
@Deprecated public ItemCollection evalWorkflowResult(ItemCollection event, ItemCollection documentContext, boolean resolveItemValues) throws PluginException
Deprecated.- Throws:
PluginException
-
evalWorkflowResult
@Deprecated public ItemCollection evalWorkflowResult(ItemCollection event, ItemCollection documentContext) throws PluginException
Deprecated.- Throws:
PluginException
-
evalNextTask
public ItemCollection evalNextTask(ItemCollection documentContext) throws PluginException, ModelException
The method evaluates the next task for a process instance (workitem) based on the current model definition. A Workitem must at least provide the properties $TASKID and $EVENTID.During the evaluation life-cycle more than one events can be evaluated. This depends on the model definition which can define follow-up-events, split-events and conditional events.
The method did not persist the process instance or execute any plugin or adapter classes.
- Returns:
- Task entity
- Throws:
PluginException
ModelException
-
registerPlugins
protected void registerPlugins(WorkflowKernel workflowkernel, Model model) throws PluginException
This method register all plugin classes listed in the model profile- Throws:
PluginException
-
registerAdapters
protected void registerAdapters(WorkflowKernel workflowkernel)
-
updateMetadata
protected void updateMetadata(ItemCollection workitem)
This method updates the workitem metadata. The following items will be updated:- $creator
- $editor
- $lasteditor
- $participants
The method also migrates deprected items.
- Parameters:
workitem
-
-
-