Package com.evolveum.midpoint.task.api
Interface Task
-
- All Superinterfaces:
DebugDumpable
,StatisticsCollector
- All Known Subinterfaces:
RunningTask
- All Known Implementing Classes:
NullTaskImpl
public interface Task extends DebugDumpable, StatisticsCollector
Task instance - a logical unit of work that is either done synchronously, asynchronously, it is deferred, scheduled, etc. The classes that implement this interface hold a "java" task state. They represent the in-memory task data structure. The instances must be able to serialize the state to the repository object (TaskType) when needed. The task implementation should be simple Java objects (POJOs). They are created also for a synchronous tasks, which means they are created frequently. We want a low overhead for task management until the task is made persistent. API for modifying task properties works like this: - A getter (get) reads data from the in-memory representation of a task. - A setter (set ) writes data to the in-memory representation, and prepares a PropertyDelta to be written into repository later (of course, only for persistent tasks). PropertyDeltas should be then written by calling flushPendingModifications method. In case you want to write property change into the repository immediately, you have to use set Immediate method. In that case, the property change does not go into the list of pending modifications, but it is instantly written into the repository (so the method uses OperationResult as parameter, and can throw relevant exceptions as well). - Author:
- Radovan Semancik, Pavol Mederly
-
-
Field Summary
Fields Modifier and Type Field Description static String
DOT_INTERFACE
-
Fields inherited from interface com.evolveum.midpoint.util.DebugDumpable
INDENT_STRING
-
-
Method Summary
All Methods Instance Methods Abstract Methods Default Methods Modifier and Type Method Description void
addArchetypeInformation(String archetypeOid)
Adds an archetype for the task.void
addArchetypeInformationIfMissing(String archetypeOid)
AsaddArchetypeInformation(String)
but executed only if there's no archetype currently set.void
addDependent(String taskIdentifier)
Add a task as this task's dependent, i.e.void
addExtensionProperty(PrismProperty<?> property)
Adds value(s) to a given extension property.void
addExtensionReference(PrismReference reference)
Adds value(s) to a given extension reference.void
addTracingRequest(TracingRootType point)
void
close(OperationResult taskResult, boolean saveState, OperationResult parentResult)
Task
createSubtask()
Creates a transient subtask.void
deleteDependent(String taskIdentifier)
Deletes a task from the list of dependents of this task.void
deleteExtensionProperty(PrismProperty<?> property)
Removes specified VALUES of this extension property (not all of its values).void
finishHandler(OperationResult parentResult)
Removes current handler from the handlers stack.void
flushPendingModifications(OperationResult parentResult)
Saves modifications done against the in-memory version of the task into the repository.OperationStatsType
getAggregatedLiveOperationStats()
Gets information from the current task and - for running task - its transient subtasks (aka worker threads).Collection<? extends AssignmentType>
getAssignments()
NEVER modify objects returned in multithreaded environments!TaskBinding
getBinding()
Returns task binding.@NotNull Collection<String>
getCachingProfiles()
String
getCategory()
Task category is a user-oriented term, hinting on what 'kind' of task is the one being considered (system task, workflow, live sync, ...).String
getChannel()
Returns change channel URI.@NotNull PrismObject<TaskType>
getClonedTaskObject()
Returns cloned task object.Long
getCompletionTimestamp()
Returns the completion timestamp - time when the task was closed (or null if it is not closed).List<String>
getDependents()
Lists all explicit dependents' identifiers.String
getDescription()
Returns task description.TaskExecutionConstraintsType
getExecutionConstraints()
TaskExecutionEnvironmentType
getExecutionEnvironment()
String
getExecutionGroup()
TaskExecutionStatus
getExecutionStatus()
Returns execution status.@Nullable Long
getExpectedTotal()
Returns expected total progress.PrismContainer<? extends ExtensionType>
getExtensionClone()
<T extends Containerable>
TgetExtensionContainerRealValueOrClone(ItemName containerName)
Returns specified single-valued container real value from the extension To ensure thread safety, in the case of running tasks the returned value is a clone of the live one.<IV extends PrismValue,ID extends ItemDefinition>
Item<IV,ID>getExtensionItemOrClone(ItemName itemName)
Returns specified item (property, reference or container) from the extension.PrismContainer<? extends ExtensionType>
getExtensionOrClone()
Returns task extension.<T> PrismProperty<T>
getExtensionPropertyOrClone(ItemName propertyName)
Returns specified property from the extension<T> T
getExtensionPropertyRealValue(ItemName propertyName)
Returns specified single-valued property real value from the extensionPrismReference
getExtensionReferenceOrClone(ItemName name)
Returns specified reference from the extension.String
getGroup()
@NotNull Collection<String>
getGroups()
@NotNull Map<String,Integer>
getGroupsWithLimits()
String
getHandlerUri()
Returns handler URI.TaskKindType
getKind()
Long
getLastRunFinishTimestamp()
Returns the time when the task last run was finished (or null if the task was not finished yet).Long
getLastRunStartTimestamp()
Returns the time when the task last run was started (or null if the task was never started).LensContextType
getModelOperationContext()
PolyStringType
getName()
Returns human-readable name of the task.Long
getNextRunStartTime(OperationResult parentResult)
Returns the time when the task should start again.String
getNode()
Returns the node the task is currently executing at, based on repository information.String
getNodeAsObserved()
<T extends ObjectType>
PrismObject<T>getObject(Class<T> type, OperationResult parentResult)
Returns object that the task is associated with.String
getObjectOid()
Returns OID of the object that the task is associated with.ObjectReferenceType
getObjectRefOrClone()
Returns reference to the object that the task is associated with.String
getOid()
Returns task OID.String
getOperationResultHandlingStrategyName()
@NotNull PrismContainer<? extends ExtensionType>
getOrCreateExtension()
UriStack
getOtherHandlersUriStack()
Returns the stack of other handlers URIs.PrismObject<? extends FocusType>
getOwner()
Returns user that owns this task.ObjectReferenceType
getOwnerRef()
String
getParent()
Returns the identifier of the task's parent (or null of there is no parent task).Task
getParentTask(OperationResult result)
Returns the parent task, if any.Collection<Task>
getPathToRootTask(OperationResult parentResult)
Collection<ItemDelta<?,?>>
getPendingModifications()
Returns a list of pending modifications for this task.TaskPersistenceStatus
getPersistenceStatus()
Returns task persistence status.PolicyRuleType
getPolicyRule()
Gets the policy rule defined for the task (for running task the returned value is a clone).long
getProgress()
Returns task progress, as reported by task handler.TaskRecurrence
getRecurrenceStatus()
Returns task recurrence status.PrismObject<UserType>
getRequestee()
Gets the requestee OID - typically an identification of account owner (for notifications).OperationResult
getResult()
Returns a top-level OperationResult stored in the task.OperationResultStatusType
getResultStatus()
Returns the status of top-level OperationResult stored in the task.ScheduleType
getSchedule()
Returns the schedule.Integer
getScheduleInterval()
ObjectReferenceType
getSelfReference()
TaskExecutionStatusType
getStateBeforeSuspend()
OperationStatsType
getStoredOperationStats()
String
getTaskIdentifier()
Returns task (lightweight) identifier.String
getTaskTreeId(OperationResult result)
ThreadStopActionType
getThreadStopAction()
Returns thread stop action (what happens when the task thread is stopped e.g.TracingProfileType
getTracingProfile()
@NotNull Collection<TracingRootType>
getTracingRequestedFor()
Collection<? extends TriggerType>
getTriggers()
NEVER modify objects returned in multithreaded environments!TaskUnpauseActionType
getUnpauseAction()
@NotNull PrismObject<TaskType>
getUpdatedOrClonedTaskObject()
Returns backing task prism object.@NotNull PrismObject<TaskType>
getUpdatedTaskObject()
Returns backing task prism object, provided that task is not running.String
getVersion()
TaskWaitingReason
getWaitingReason()
Returns the task waiting reason for a WAITING task.TaskWorkManagementType
getWorkManagement()
TaskWorkStateType
getWorkState()
default boolean
hasAssignments()
boolean
hasExtension()
boolean
hasScheduleInterval()
boolean
isAsynchronous()
Returns true if the task is asynchronous.boolean
isClosed()
Returns true if the task is closed.boolean
isLooselyBound()
Returns true if the task is loosely bound.boolean
isPartitionedMaster()
boolean
isPersistent()
Returns true if task is persistent (i.e.boolean
isRecurring()
Checks whether the task is a cyclic (recurrent) one.boolean
isResilient()
Resilient tasks are those that survive node shutdown.boolean
isScavenger()
boolean
isSingle()
Checks whether the task is single-run.boolean
isTightlyBound()
Returns true if the task is tightly bound.boolean
isTransient()
Returns true if task is transient (i.e.List<Task>
listDependents(OperationResult result)
Lists all explicit dependents, i.e.List<Task>
listPrerequisiteTasks(OperationResult parentResult)
List all prerequisite tasks for the current tasks, i.e.@NotNull List<Task>
listSubtasks(boolean persistentOnly, OperationResult parentResult)
default @NotNull List<Task>
listSubtasks(OperationResult parentResult)
Lists the (direct) subtasks of a given task.List<Task>
listSubtasksDeeply(boolean persistentOnly, OperationResult result)
default List<Task>
listSubtasksDeeply(OperationResult result)
List all the subtasks of a given task, i.e.void
makeRecurring(ScheduleType schedule)
Makes a task recurring, with a given schedule.void
makeRecurringCron(String cronLikeSpecification)
Makes a task recurring, running according to a cron-like schedule.void
makeRecurringSimple(int interval)
Makes a task recurring, running in a fixed time intervals.void
makeRunnable()
Status-changing method.void
makeSingle()
Makes a task single-run, with no particular schedule.void
makeSingle(ScheduleType schedule)
Makes a task single-run, with a given schedule.void
makeWaiting()
Status-changing method.void
makeWaiting(TaskWaitingReason reason)
Changes exec status to WAITING, with a given waiting reason.void
makeWaiting(TaskWaitingReason reason, TaskUnpauseActionType unpauseAction)
void
modify(ItemDelta<?,?> delta)
Changes in-memory representation immediately and schedules a corresponding batched modification.void
modify(Collection<ItemDelta<?,?>> deltas)
void
modifyAndFlush(ItemDelta<?,?> delta, OperationResult parentResult)
Changes in-memory and in-repo representations immediately.void
modifyExtension(ItemDelta itemDelta)
Modifies task extension using given delta.void
pushHandlerUri(String uri, ScheduleType schedule, TaskBinding binding)
Same as above, with no extension deltas.void
pushHandlerUri(String uri, ScheduleType schedule, TaskBinding binding, ItemDelta<?,?> delta)
Same as above, with one extension delta (not a collection of them).void
pushHandlerUri(String uri, ScheduleType schedule, TaskBinding binding, Collection<ItemDelta<?,?>> extensionDeltas)
Pushes a new handler URI onto the stack of handlers.void
refresh(OperationResult parentResult)
Re-reads the task state from the persistent storage.void
removeTracingRequests()
void
setBinding(TaskBinding value)
Sets the binding for this task.void
setBindingImmediate(TaskBinding value, OperationResult parentResult)
Sets the binding (immediately through to the repo).void
setCategory(String category)
Sets the task category.void
setChannel(String channelUri)
Sets change channel URI.void
setChannelImmediate(String channelUri, OperationResult parentResult)
Sets change channel URI.void
setDescription(String value)
Sets task description.void
setDescriptionImmediate(String value, OperationResult parentResult)
Sets task description, immediately storing it into the repo.void
setExecutionConstraints(TaskExecutionConstraintsType value)
void
setExecutionEnvironment(TaskExecutionEnvironmentType value)
void
setExecutionEnvironmentTransient(TaskExecutionEnvironmentType value)
void
setExpectedTotal(Long value)
Stores expected total progress of the task, storing it persistently if needed.void
setExpectedTotalImmediate(Long value, OperationResult parentResult)
"Immediate" version of the above method.<C extends Containerable>
voidsetExtensionContainer(PrismContainer<C> item)
Sets a container in the extension - replaces existing value(s), if any, by the one(s) provided.<T extends Containerable>
voidsetExtensionContainerValue(QName containerName, T value)
Sets a container value in the extension - replaces existing value(s), if any, by the one provided.void
setExtensionItem(Item item)
Puts generic item into extension.void
setExtensionProperty(PrismProperty<?> property)
Sets a property in the extension - replaces existing value(s), if any, by the one(s) provided.void
setExtensionPropertyImmediate(PrismProperty<?> property, OperationResult parentResult)
"Immediate" version of the above method.<T> void
setExtensionPropertyValue(QName propertyName, T value)
Sets (i.e., replaces) the value of the given property in task extension.<T> void
setExtensionPropertyValueTransient(QName propertyName, T value)
Sets (i.e., replaces) the value of the given property in task extension - without writing to repo.void
setExtensionReference(PrismReference reference)
Sets a reference in the extension - replaces existing value(s), if any, by the one(s) provided.void
setHandlerUri(String value)
Sets handler URI.void
setHandlerUriImmediate(String value, OperationResult parentResult)
Sets handler URI, also immediately in the repository.void
setInitialExecutionStatus(TaskExecutionStatus value)
Sets task execution status.void
setModelOperationContext(LensContextType modelOperationContext)
void
setName(PolyStringType value)
Sets the human-readable name of the task.void
setName(String value)
Sets the human-readable name of the task.void
setNameImmediate(PolyStringType value, OperationResult parentResult)
Sets the human-readable name of the task, immediately into repository.void
setObjectRef(ObjectReferenceType objectRef)
Sets the object reference.void
setObjectRef(String oid, QName type)
Sets the object reference.void
setObjectRefImmediate(ObjectReferenceType value, OperationResult parentResult)
"Immediate" version of the previous method.void
setObjectTransient(PrismObject object)
Sets the "task object" in the in-memory task representation (i.e.void
setOwner(PrismObject<? extends FocusType> owner)
Sets the task owner.void
setProgress(Long value)
Record progress of the task, storing it persistently if needed.void
setProgressImmediate(Long progress, OperationResult parentResult)
"Immediate" version of the above method.void
setProgressTransient(Long value)
void
setRequesteeTransient(PrismObject<UserType> user)
void
setResult(OperationResult result)
Sets the top-level OperationResult stored in the task.void
setResultImmediate(OperationResult result, OperationResult parentResult)
"Immediate" version of above method.void
setResultTransient(OperationResult result)
void
setThreadStopAction(ThreadStopActionType value)
Sets the thread stop action for this task.void
setTracingProfile(TracingProfileType tracingProfile)
void
startWaitingForTasksImmediate(OperationResult result)
Starts "passive" waiting for other tasks.-
Methods inherited from interface com.evolveum.midpoint.util.DebugDumpable
debugDump, debugDump, debugDumpLazily, debugDumpLazily
-
Methods inherited from interface com.evolveum.midpoint.schema.statistics.StatisticsCollector
getLastFailures, markObjectActionExecutedBoundary, recordIterativeOperationEnd, recordIterativeOperationEnd, recordIterativeOperationStart, recordIterativeOperationStart, recordMappingOperation, recordNotificationOperation, recordObjectActionExecuted, recordObjectActionExecuted, recordObjectActionExecuted, recordProvisioningOperation, recordState, recordSynchronizationOperationEnd, recordSynchronizationOperationEnd, resetActionsExecutedInformation, resetEnvironmentalPerformanceInformation, resetIterativeTaskInformation, resetSynchronizationInformation
-
-
-
-
Field Detail
-
DOT_INTERFACE
static final String DOT_INTERFACE
-
-
Method Detail
-
getTaskIdentifier
String getTaskIdentifier()
Returns task (lightweight) identifier. This is an unique identification of any task, regardless whether it is persistent or transient (cf. OID). Therefore this can be used to identify all tasks, e.g. for the purposes of auditing and logging. Task identifier is assigned automatically when the task is created. It is immutable.- Returns:
- task (lightweight) identifier
-
getOid
String getOid()
Returns task OID. Only persistent tasks have OID. This returns null if the task is not persistent.- Returns:
- task OID
-
getOwner
PrismObject<? extends FocusType> getOwner()
Returns user that owns this task. It usually means the user that started the task or a system used that is used to execute the task. The owner will be used to determine access rights of the task, will be used for auditing, etc.- Returns:
- task owner
-
setOwner
void setOwner(PrismObject<? extends FocusType> owner)
Sets the task owner. BEWARE: sets the owner only for in-memory information. So do not call this method for persistent tasks! (until fixed)
-
getName
PolyStringType getName()
Returns human-readable name of the task.
-
setName
void setName(PolyStringType value)
Sets the human-readable name of the task.
-
setName
void setName(String value)
Sets the human-readable name of the task.
-
setNameImmediate
void setNameImmediate(PolyStringType value, OperationResult parentResult) throws ObjectNotFoundException, SchemaException, ObjectAlreadyExistsException
Sets the human-readable name of the task, immediately into repository.
-
getDescription
String getDescription()
Returns task description.
-
setDescription
void setDescription(String value)
Sets task description.
-
setDescriptionImmediate
void setDescriptionImmediate(String value, OperationResult parentResult) throws ObjectNotFoundException, SchemaException
Sets task description, immediately storing it into the repo.
-
getPolicyRule
PolicyRuleType getPolicyRule()
Gets the policy rule defined for the task (for running task the returned value is a clone).
-
getExecutionStatus
TaskExecutionStatus getExecutionStatus()
Returns execution status.- Returns:
- execution status.
- See Also:
TaskExecutionStatus
-
makeWaiting
void makeWaiting()
Status-changing method. It changes task's execution status to WAITING. Currently use only on transient tasks, on suspended tasks or from within task handler.
-
makeWaiting
void makeWaiting(TaskWaitingReason reason)
Changes exec status to WAITING, with a given waiting reason. Currently use only on transient tasks or from within task handler.
-
makeWaiting
void makeWaiting(TaskWaitingReason reason, TaskUnpauseActionType unpauseAction)
-
makeRunnable
void makeRunnable()
Status-changing method. It changes task's execution status to RUNNABLE. Currently use ONLY on transient tasks.
-
setInitialExecutionStatus
void setInitialExecutionStatus(TaskExecutionStatus value)
Sets task execution status. Can be used only for transient tasks (for safety reasons). However, it is better to use specific state-changing methods (makeWaiting, makeRunnable, ...).- Parameters:
value
- new task execution status.- See Also:
TaskExecutionStatus
-
isClosed
boolean isClosed()
Returns true if the task is closed.
-
getCompletionTimestamp
Long getCompletionTimestamp()
Returns the completion timestamp - time when the task was closed (or null if it is not closed).
-
getWaitingReason
TaskWaitingReason getWaitingReason()
Returns the task waiting reason for a WAITING task.
-
getNode
String getNode()
Returns the node the task is currently executing at, based on repository information. This is present in all cases, however, it might be out-of-date, e.g. when node crashes.
-
getNodeAsObserved
String getNodeAsObserved()
-
getPersistenceStatus
TaskPersistenceStatus getPersistenceStatus()
Returns task persistence status.- Returns:
- task persistence status.
- See Also:
TaskPersistenceStatus
-
isTransient
boolean isTransient()
Returns true if task is transient (i.e. not stored in repository).
-
isPersistent
boolean isPersistent()
Returns true if task is persistent (i.e. stored in repository).
-
isAsynchronous
boolean isAsynchronous()
Returns true if the task is asynchronous. The asynchronous task is not executing in foreground. Therefore any thread that is not explicitly allocated for the task can be discarded. E.g. if a GUI thread detects that the task is asynchronous it knows that there is no point in waiting for the task result. It can just display appropriate message to the user (e.g. "please come back later") and return control back to the web container. Usually, asynchronous means the same as persistent. However, there can are lightweight tasks that are asynchronous but not stored in repository.- Returns:
- true if the task is asynchronous.
-
getRecurrenceStatus
TaskRecurrence getRecurrenceStatus()
Returns task recurrence status.- Returns:
- task recurrence status
-
isSingle
boolean isSingle()
Checks whether the task is single-run.
-
isRecurring
boolean isRecurring()
Checks whether the task is a cyclic (recurrent) one.
-
makeRecurring
void makeRecurring(ScheduleType schedule)
Makes a task recurring, with a given schedule.
-
makeRecurringSimple
void makeRecurringSimple(int interval)
Makes a task recurring, running in a fixed time intervals.- Parameters:
interval
- interval to run the task (in seconds)
-
makeRecurringCron
void makeRecurringCron(String cronLikeSpecification)
Makes a task recurring, running according to a cron-like schedule.- Parameters:
cronLikeSpecification
- schedule specification
-
makeSingle
void makeSingle()
Makes a task single-run, with no particular schedule.
-
makeSingle
void makeSingle(ScheduleType schedule)
Makes a task single-run, with a given schedule.
-
getExecutionConstraints
TaskExecutionConstraintsType getExecutionConstraints()
-
setExecutionConstraints
void setExecutionConstraints(TaskExecutionConstraintsType value)
-
getGroup
String getGroup()
-
getGroups
@NotNull @NotNull Collection<String> getGroups()
-
getSchedule
ScheduleType getSchedule()
Returns the schedule.
-
getScheduleInterval
Integer getScheduleInterval()
-
hasScheduleInterval
boolean hasScheduleInterval()
-
getLastRunStartTimestamp
Long getLastRunStartTimestamp()
Returns the time when the task last run was started (or null if the task was never started).
-
getLastRunFinishTimestamp
Long getLastRunFinishTimestamp()
Returns the time when the task last run was finished (or null if the task was not finished yet).
-
getNextRunStartTime
Long getNextRunStartTime(OperationResult parentResult)
Returns the time when the task should start again.
-
getThreadStopAction
ThreadStopActionType getThreadStopAction()
Returns thread stop action (what happens when the task thread is stopped e.g. because of node going down).
-
setThreadStopAction
void setThreadStopAction(ThreadStopActionType value)
Sets the thread stop action for this task.
-
isResilient
boolean isResilient()
Resilient tasks are those that survive node shutdown. I.e. their ThreadStopAction is either 'restart' or 'reschedule'.
-
getBinding
TaskBinding getBinding()
Returns task binding.
-
isTightlyBound
boolean isTightlyBound()
Returns true if the task is tightly bound.
-
isLooselyBound
boolean isLooselyBound()
Returns true if the task is loosely bound.
-
setBinding
void setBinding(TaskBinding value)
Sets the binding for this task.
-
setBindingImmediate
void setBindingImmediate(TaskBinding value, OperationResult parentResult) throws ObjectNotFoundException, SchemaException
Sets the binding (immediately through to the repo).
-
getHandlerUri
String getHandlerUri()
Returns handler URI. Handler URI indirectly specifies which class is responsible to handle the task. The handler will execute reaction to a task lifecycle events such as executing the task, task heartbeat, etc.- Returns:
- handler URI
-
setHandlerUri
void setHandlerUri(String value)
Sets handler URI. Handler URI indirectly specifies which class is responsible to handle the task. The handler will execute reaction to a task lifecycle events such as executing the task, task heartbeat, etc.- Parameters:
value
- new handler URI
-
setHandlerUriImmediate
void setHandlerUriImmediate(String value, OperationResult parentResult) throws ObjectNotFoundException, SchemaException
Sets handler URI, also immediately in the repository.
-
getOtherHandlersUriStack
UriStack getOtherHandlersUriStack()
Returns the stack of other handlers URIs. The idea is that a task may have a chain of handlers, forming a stack. After a handler at the top of the stack finishes its processing, TaskManager will remove it from the stack and invoke the then-current handler. After that finishes, the next handler will be called, and so on, until the stack is empty.
-
pushHandlerUri
void pushHandlerUri(String uri, ScheduleType schedule, TaskBinding binding, Collection<ItemDelta<?,?>> extensionDeltas)
Pushes a new handler URI onto the stack of handlers. This means that the provided handler URI becomes the current one. Current one becomes the first one on the stack of other handlers, etc. So the newly added handler will be started FIRST. Care must be taken not to interfere with the execution of a task handler. It is recommended to call this method when it is sure that no handler is executing. Alongwith URI, other information are set, namely schedule, binding, and parameters that will be put into task extension when the handler URI will be invoked.- Parameters:
uri
- Handler URI to be put onto the stack.schedule
- Schedule to be used to run the handler.binding
- Binding to be used to run the handler.extensionDeltas
- The feature is EXPERIMENTAL, do not use if not absolutely necessary.
-
pushHandlerUri
void pushHandlerUri(String uri, ScheduleType schedule, TaskBinding binding, ItemDelta<?,?> delta)
Same as above, with one extension delta (not a collection of them).- Parameters:
delta
- EXPERIMENTAL, do not use if not absolutely necessary.
-
pushHandlerUri
void pushHandlerUri(String uri, ScheduleType schedule, TaskBinding binding)
Same as above, with no extension deltas.
-
finishHandler
void finishHandler(OperationResult parentResult) throws ObjectNotFoundException, SchemaException
Removes current handler from the handlers stack. Closes task if that was the last handler. USE WITH CARE. Normally, this is used implicitly in the task execution routine and there's no need for you to call this from your code.
-
getCategory
String getCategory()
Task category is a user-oriented term, hinting on what 'kind' of task is the one being considered (system task, workflow, live sync, ...). In most cases, category can be derived from the task handler. Category can be set directly; but if not set directly, it is set automatically on first task execution, determined based on task handler URI. List of categories is in the TaskCategory class.
-
setCategory
void setCategory(String category)
Sets the task category.
-
addArchetypeInformation
@Experimental void addArchetypeInformation(String archetypeOid)
Adds an archetype for the task. Assumes that the task will NOT undergo full model processing, so this method will do everything by itself: creates an assignment, roleMembershipRef and archetypeRef. Throws an exception if an archetype is already assigned. This is temporary/experimental implementation. It was not tested for persistent tasks (although it should work also for them).
-
addArchetypeInformationIfMissing
@Experimental void addArchetypeInformationIfMissing(String archetypeOid)
AsaddArchetypeInformation(String)
but executed only if there's no archetype currently set.
-
getExtensionOrClone
PrismContainer<? extends ExtensionType> getExtensionOrClone()
Returns task extension. The extension is a part of task that can store arbitrary data. It usually holds data specific to a task type, internal task state, business state or similar data that are out of scope of this interface definition. To maintain thread safety, for RunningTask this method returns extension clone. (So don't use the return value to modify the task extension if not sure whether the task is running.)- Returns:
- task extension
-
getOrCreateExtension
@NotNull @NotNull PrismContainer<? extends ExtensionType> getOrCreateExtension() throws SchemaException
- Throws:
SchemaException
-
getExtensionClone
PrismContainer<? extends ExtensionType> getExtensionClone()
-
hasExtension
boolean hasExtension()
-
getExtensionPropertyOrClone
<T> PrismProperty<T> getExtensionPropertyOrClone(ItemName propertyName)
Returns specified property from the extension- Returns:
- null if extension or property does not exist.
-
getExtensionPropertyRealValue
<T> T getExtensionPropertyRealValue(ItemName propertyName)
Returns specified single-valued property real value from the extension- Returns:
- null if extension or property does not exist.
-
getExtensionContainerRealValueOrClone
<T extends Containerable> T getExtensionContainerRealValueOrClone(ItemName containerName)
Returns specified single-valued container real value from the extension To ensure thread safety, in the case of running tasks the returned value is a clone of the live one.- Returns:
- null if extension or container does not exist.
-
getExtensionReferenceOrClone
PrismReference getExtensionReferenceOrClone(ItemName name)
Returns specified reference from the extension.- Returns:
- null if extension or reference does not exist.
-
getExtensionItemOrClone
<IV extends PrismValue,ID extends ItemDefinition> Item<IV,ID> getExtensionItemOrClone(ItemName itemName)
Returns specified item (property, reference or container) from the extension.- Returns:
- null if extension or item does not exist To maintain thread safety, for running tasks returns a clone of the original item.
-
setExtensionProperty
void setExtensionProperty(PrismProperty<?> property) throws SchemaException
Sets a property in the extension - replaces existing value(s), if any, by the one(s) provided.- Throws:
SchemaException
-
setExtensionPropertyImmediate
void setExtensionPropertyImmediate(PrismProperty<?> property, OperationResult parentResult) throws ObjectNotFoundException, SchemaException
"Immediate" version of the above method.
-
setExtensionPropertyValue
<T> void setExtensionPropertyValue(QName propertyName, T value) throws SchemaException
Sets (i.e., replaces) the value of the given property in task extension.- Parameters:
propertyName
- name of the propertyvalue
- value of the property- Throws:
SchemaException
-
setExtensionPropertyValueTransient
<T> void setExtensionPropertyValueTransient(QName propertyName, T value) throws SchemaException
Sets (i.e., replaces) the value of the given property in task extension - without writing to repo.- Parameters:
propertyName
- name of the propertyvalue
- value of the property- Throws:
SchemaException
-
setExtensionReference
void setExtensionReference(PrismReference reference) throws SchemaException
Sets a reference in the extension - replaces existing value(s), if any, by the one(s) provided.- Throws:
SchemaException
-
setExtensionContainer
<C extends Containerable> void setExtensionContainer(PrismContainer<C> item) throws SchemaException
Sets a container in the extension - replaces existing value(s), if any, by the one(s) provided.- Parameters:
item
- Container with value(s) to be put into task extension.- Throws:
SchemaException
-
setExtensionContainerValue
<T extends Containerable> void setExtensionContainerValue(QName containerName, T value) throws SchemaException
Sets a container value in the extension - replaces existing value(s), if any, by the one provided.- Parameters:
containerName
- name of the containervalue
- value to be put into extension- Throws:
SchemaException
-
setExtensionItem
void setExtensionItem(Item item) throws SchemaException
Puts generic item into extension.- Throws:
SchemaException
-
addExtensionProperty
void addExtensionProperty(PrismProperty<?> property) throws SchemaException
Adds value(s) to a given extension property.- Parameters:
property
- holder of the value(s) to be added into task extension property- Throws:
SchemaException
-
addExtensionReference
void addExtensionReference(PrismReference reference) throws SchemaException
Adds value(s) to a given extension reference.- Parameters:
reference
- holder of the value(s) to be added into task extension reference- Throws:
SchemaException
-
deleteExtensionProperty
void deleteExtensionProperty(PrismProperty<?> property) throws SchemaException
Removes specified VALUES of this extension property (not all of its values).- Throws:
SchemaException
-
modifyExtension
void modifyExtension(ItemDelta itemDelta) throws SchemaException
Modifies task extension using given delta.- Throws:
SchemaException
-
getObject
<T extends ObjectType> PrismObject<T> getObject(Class<T> type, OperationResult parentResult) throws ObjectNotFoundException, SchemaException
Returns object that the task is associated with. Tasks may be associated with a particular objects. For example a "import from resource" task is associated with the resource definition object that it imports from. Similarly for synchronization and reconciliation tasks (cycles). User approval and modification task may be associated with that user. This is an optional property. The object will only be returned if the task really contains an object without OID (e.g. unfinished account shadow). In all other cases this method may return null. Use getObjectRefOrClone instead. Optional. May return null.
-
getObjectRefOrClone
ObjectReferenceType getObjectRefOrClone()
Returns reference to the object that the task is associated with. Tasks may be associated with a particular objects. For example a "import from resource" task is associated with the resource definition object that it imports from. Similarly for synchronization and reconciliation tasks (cycles). This is an optional property.
-
setObjectRef
void setObjectRef(ObjectReferenceType objectRef)
Sets the object reference.
-
setObjectRefImmediate
void setObjectRefImmediate(ObjectReferenceType value, OperationResult parentResult) throws ObjectNotFoundException, SchemaException, ObjectAlreadyExistsException
"Immediate" version of the previous method.
-
setObjectTransient
void setObjectTransient(PrismObject object)
Sets the "task object" in the in-memory task representation (i.e. not in the repo).
-
getObjectOid
String getObjectOid()
Returns OID of the object that the task is associated with. Convenience method. This will get the OID from the objectRef.
-
getResult
OperationResult getResult()
Returns a top-level OperationResult stored in the task. Beware of thread safety. This is a live object!- Returns:
- task operation result.
-
setResultTransient
void setResultTransient(OperationResult result)
-
getResultStatus
OperationResultStatusType getResultStatus()
Returns the status of top-level OperationResult stored in the task.- Returns:
- task operation result status
-
setResult
void setResult(OperationResult result)
Sets the top-level OperationResult stored in the task.
-
setResultImmediate
void setResultImmediate(OperationResult result, OperationResult parentResult) throws ObjectNotFoundException, SchemaException
"Immediate" version of above method.
-
getProgress
long getProgress()
Returns task progress, as reported by task handler.
-
setProgress
void setProgress(Long value)
Record progress of the task, storing it persistently if needed.
-
setProgressImmediate
void setProgressImmediate(Long progress, OperationResult parentResult) throws ObjectNotFoundException, SchemaException
"Immediate" version of the above method.
-
setProgressTransient
void setProgressTransient(Long value)
-
getStoredOperationStats
OperationStatsType getStoredOperationStats()
-
getExpectedTotal
@Nullable @Nullable Long getExpectedTotal()
Returns expected total progress.
-
setExpectedTotal
void setExpectedTotal(Long value)
Stores expected total progress of the task, storing it persistently if needed.
-
setExpectedTotalImmediate
void setExpectedTotalImmediate(Long value, OperationResult parentResult) throws ObjectNotFoundException, SchemaException
"Immediate" version of the above method.
-
createSubtask
Task createSubtask()
Creates a transient subtask. Owner is inherited from parent task to subtask.
-
getParent
String getParent()
Returns the identifier of the task's parent (or null of there is no parent task).
-
getParentTask
Task getParentTask(OperationResult result) throws SchemaException, ObjectNotFoundException
Returns the parent task, if any.
-
listSubtasks
@NotNull default @NotNull List<Task> listSubtasks(OperationResult parentResult) throws SchemaException
Lists the (direct) subtasks of a given task.- Throws:
SchemaException
-
listSubtasks
@NotNull @NotNull List<Task> listSubtasks(boolean persistentOnly, OperationResult parentResult) throws SchemaException
- Throws:
SchemaException
-
listSubtasksDeeply
default List<Task> listSubtasksDeeply(OperationResult result) throws SchemaException
List all the subtasks of a given task, i.e. whole task tree rooted at the current task. Current task is not contained in the returned list.- Throws:
SchemaException
-
listSubtasksDeeply
List<Task> listSubtasksDeeply(boolean persistentOnly, OperationResult result) throws SchemaException
- Throws:
SchemaException
-
listDependents
List<Task> listDependents(OperationResult result) throws SchemaException, ObjectNotFoundException
Lists all explicit dependents, i.e. tasks that wait for the completion of this tasks (that depend on it). Implicit dependents, i.e. task's parent, grandparent, etc are NOT listed here.
-
addDependent
void addDependent(String taskIdentifier)
Add a task as this task's dependent, i.e. the task denoted by taskIdentifier DEPENDS ON (waits for completion of) this task.
-
deleteDependent
void deleteDependent(String taskIdentifier)
Deletes a task from the list of dependents of this task.
-
listPrerequisiteTasks
List<Task> listPrerequisiteTasks(OperationResult parentResult) throws SchemaException
List all prerequisite tasks for the current tasks, i.e. tasks that must complete before this one can proceed. If A is on the list of prerequisites of B (THIS), it means that B is on list of dependents of A (i.e. B waits for A to complete). Again, implicit prerequisites (children) are not listed here.- Throws:
SchemaException
-
startWaitingForTasksImmediate
void startWaitingForTasksImmediate(OperationResult result) throws SchemaException, ObjectNotFoundException
Starts "passive" waiting for other tasks. Precondition: The task must already be in WAITING state. Postcondition: If there are any tasks to wait for, task remains in WAITING/OTHER_TASKS state. However, if there are no tasks to wait for, task is either unpaused (if there is any handler) or closed (if there is not). Passive waiting consists of putting the task into WAITING/OTHER_TASKS state. Unpausing it is the responsibility of task manager - it does it when any of prerequisite tasks closes. At that moment, task manager checks all dependent tasks (explicit or implicit) of the closing task, and unpauses these, which can be unpaused.
-
getChannel
String getChannel()
Returns change channel URI.
-
setChannel
void setChannel(String channelUri)
Sets change channel URI.
-
setChannelImmediate
void setChannelImmediate(String channelUri, OperationResult parentResult) throws ObjectNotFoundException, SchemaException
Sets change channel URI.
-
getRequestee
PrismObject<UserType> getRequestee()
Gets the requestee OID - typically an identification of account owner (for notifications). Serves for communication between model and provisioning. It is a temporary feature - will be removed in midPoint 2.3.
-
setRequesteeTransient
void setRequesteeTransient(PrismObject<UserType> user)
-
getModelOperationContext
LensContextType getModelOperationContext()
-
setModelOperationContext
void setModelOperationContext(LensContextType modelOperationContext) throws SchemaException
- Throws:
SchemaException
-
getExecutionEnvironment
TaskExecutionEnvironmentType getExecutionEnvironment()
-
setExecutionEnvironment
void setExecutionEnvironment(TaskExecutionEnvironmentType value)
-
setExecutionEnvironmentTransient
void setExecutionEnvironmentTransient(TaskExecutionEnvironmentType value)
-
getUpdatedOrClonedTaskObject
@NotNull @NotNull PrismObject<TaskType> getUpdatedOrClonedTaskObject()
Returns backing task prism object. AVOID use of this method if possible. - for regular tasks it has to update operation result in the prism object (might be costly) - for running tasks it provides a clone of the actual prism object (even more costly and leads to lost changes if the returned value is changed)
-
getUpdatedTaskObject
@NotNull @NotNull PrismObject<TaskType> getUpdatedTaskObject()
Returns backing task prism object, provided that task is not running. Beware that the task operation result is updated (might be costly).- Throws:
IllegalStateException
- if task is running
-
getClonedTaskObject
@NotNull @NotNull PrismObject<TaskType> getClonedTaskObject()
Returns cloned task object.
-
refresh
void refresh(OperationResult parentResult) throws ObjectNotFoundException, SchemaException
Re-reads the task state from the persistent storage. The task state may be synchronized with the repository all the time. But the specified timing is implementation-specific. Call to this method will make sure that the task contains fresh data. This has no effect on transient tasks.
-
modify
void modify(ItemDelta<?,?> delta) throws SchemaException
Changes in-memory representation immediately and schedules a corresponding batched modification.- Throws:
SchemaException
-
modify
void modify(Collection<ItemDelta<?,?>> deltas) throws SchemaException
- Throws:
SchemaException
-
modifyAndFlush
void modifyAndFlush(ItemDelta<?,?> delta, OperationResult parentResult) throws SchemaException, ObjectAlreadyExistsException, ObjectNotFoundException
Changes in-memory and in-repo representations immediately.
-
flushPendingModifications
void flushPendingModifications(OperationResult parentResult) throws ObjectNotFoundException, SchemaException, ObjectAlreadyExistsException
Saves modifications done against the in-memory version of the task into the repository.
-
getPendingModifications
Collection<ItemDelta<?,?>> getPendingModifications()
Returns a list of pending modifications for this task.
-
close
void close(OperationResult taskResult, boolean saveState, OperationResult parentResult) throws ObjectNotFoundException, SchemaException
-
getWorkManagement
TaskWorkManagementType getWorkManagement()
-
getWorkState
TaskWorkStateType getWorkState()
-
getKind
TaskKindType getKind()
-
getUnpauseAction
TaskUnpauseActionType getUnpauseAction()
-
getStateBeforeSuspend
TaskExecutionStatusType getStateBeforeSuspend()
-
isPartitionedMaster
boolean isPartitionedMaster()
-
getExecutionGroup
String getExecutionGroup()
-
getAggregatedLiveOperationStats
OperationStatsType getAggregatedLiveOperationStats()
Gets information from the current task and - for running task - its transient subtasks (aka worker threads).
-
getSelfReference
ObjectReferenceType getSelfReference()
-
getVersion
String getVersion()
-
getTriggers
Collection<? extends TriggerType> getTriggers()
NEVER modify objects returned in multithreaded environments!
-
getAssignments
Collection<? extends AssignmentType> getAssignments()
NEVER modify objects returned in multithreaded environments!
-
getPathToRootTask
Collection<Task> getPathToRootTask(OperationResult parentResult) throws SchemaException
- Throws:
SchemaException
-
getTaskTreeId
String getTaskTreeId(OperationResult result) throws SchemaException
- Throws:
SchemaException
-
hasAssignments
default boolean hasAssignments()
-
getOwnerRef
ObjectReferenceType getOwnerRef()
-
getCachingProfiles
@NotNull @NotNull Collection<String> getCachingProfiles()
-
getOperationResultHandlingStrategyName
String getOperationResultHandlingStrategyName()
-
isScavenger
boolean isScavenger()
-
getTracingRequestedFor
@NotNull @NotNull Collection<TracingRootType> getTracingRequestedFor()
-
addTracingRequest
void addTracingRequest(TracingRootType point)
-
removeTracingRequests
void removeTracingRequests()
-
getTracingProfile
TracingProfileType getTracingProfile()
-
setTracingProfile
void setTracingProfile(TracingProfileType tracingProfile)
-
-