Skip to content

Commit

Permalink
Remove unused workflow features
Browse files Browse the repository at this point in the history
The Activiti eviction (MID-5047) starts with simplifying things
by removing unused workflow features e.g. process-specific work item
part, some unused classes and options.
  • Loading branch information
mederly committed Jan 8, 2019
1 parent 81048f5 commit b15cb31
Show file tree
Hide file tree
Showing 17 changed files with 36 additions and 159 deletions.
Expand Up @@ -192,11 +192,6 @@ public static WfPrimaryChangeProcessorStateType getPrimaryChangeProcessorState(W
(WfPrimaryChangeProcessorStateType) state : null;
}

public static ItemApprovalWorkItemPartType getItemApprovalWorkItemInfo(WorkItemType workItem) {
return workItem.getProcessSpecificPart() instanceof ItemApprovalWorkItemPartType ?
(ItemApprovalWorkItemPartType) workItem.getProcessSpecificPart() : null;
}

@NotNull
public static List<SchemaAttachedPolicyRuleType> getAttachedPolicyRules(WfContextType workflowContext, int order) {
ItemApprovalProcessStateType info = getItemApprovalProcessInfo(workflowContext);
Expand Down
Expand Up @@ -314,6 +314,18 @@
</xsd:annotation>
<xsd:complexContent>
<xsd:extension base="tns:AbstractWorkItemType">
<xsd:sequence>
<xsd:element name="additionalInformation" type="tns:InformationType" minOccurs="0" maxOccurs="unbounded">
<xsd:annotation>
<xsd:documentation>
Information to be shown to the approver. Migrated from WorkItemType. EXPERIMENTAL
</xsd:documentation>
<xsd:appinfo>
<a:since>4.0</a:since>
</xsd:appinfo>
</xsd:annotation>
</xsd:element>
</xsd:sequence>
</xsd:extension>
</xsd:complexContent>
</xsd:complexType>
Expand Down
Expand Up @@ -1744,37 +1744,6 @@
</xsd:complexType>
<xsd:element name="wfGeneralChangeProcessorStateType" type="tns:WfGeneralChangeProcessorStateType" />

<xsd:complexType name="WfProcessSpecificWorkItemPartType">
<xsd:annotation>
<xsd:appinfo>
<a:container/>
</xsd:appinfo>
<xsd:documentation>
Describe work item parts that are specific to a given BPMN process.
</xsd:documentation>
</xsd:annotation>
</xsd:complexType>
<xsd:element name="wfProcessSpecificWorkItemPart" type="tns:WfProcessSpecificWorkItemPartType" />

<xsd:complexType name="ItemApprovalWorkItemPartType">
<xsd:annotation>
<xsd:appinfo>
<a:container/>
</xsd:appinfo>
<xsd:documentation>
TODO
</xsd:documentation>
</xsd:annotation>
<xsd:complexContent>
<xsd:extension base="tns:WfProcessSpecificWorkItemPartType">
<xsd:sequence>
<!-- TODO -->
</xsd:sequence>
</xsd:extension>
</xsd:complexContent>
</xsd:complexType>
<xsd:element name="itemApprovalWorkItemPart" type="tns:ItemApprovalWorkItemPartType" />

<xsd:complexType name="WfProcessSpecificStateType">
<xsd:annotation>
<xsd:appinfo>
Expand Down Expand Up @@ -1863,7 +1832,6 @@
</xsd:appinfo>
</xsd:annotation>
</xsd:element>
<xsd:element name="processSpecificPart" type="tns:WfProcessSpecificWorkItemPartType" minOccurs="0" />
</xsd:sequence>
</xsd:extension>
</xsd:complexContent>
Expand Down

This file was deleted.

This file was deleted.

Expand Up @@ -105,7 +105,7 @@ public <T extends Containerable> Integer countContainers(Class<T> type, ObjectQu
if (!WorkItemType.class.equals(type)) {
throw new UnsupportedOperationException("countContainers is available only for work items");
}
return workItemProvider.countWorkItems(query, options, result);
return workItemProvider.countWorkItems(query);
} catch (SchemaException|RuntimeException e) {
result.recordFatalError("Couldn't count items: " + e.getMessage(), e);
throw e;
Expand All @@ -126,7 +126,7 @@ public <T extends Containerable> SearchResultList<T> searchContainers(Class<T> t
if (!WorkItemType.class.equals(type)) {
throw new UnsupportedOperationException("searchContainers is available only for work items");
}
return (SearchResultList<T>) workItemProvider.searchWorkItems(query, options, result);
return (SearchResultList<T>) workItemProvider.searchWorkItems(query, result);
} catch (SchemaException|RuntimeException e) {
result.recordFatalError("Couldn't count items: " + e.getMessage(), e);
throw e;
Expand Down
Expand Up @@ -24,9 +24,7 @@
import com.evolveum.midpoint.prism.path.ItemPath;
import com.evolveum.midpoint.prism.query.*;
import com.evolveum.midpoint.prism.xml.XmlTypeConverter;
import com.evolveum.midpoint.schema.GetOperationOptions;
import com.evolveum.midpoint.schema.SearchResultList;
import com.evolveum.midpoint.schema.SelectorOptions;
import com.evolveum.midpoint.schema.constants.ObjectTypes;
import com.evolveum.midpoint.schema.result.OperationResult;
import com.evolveum.midpoint.schema.util.ObjectQueryUtil;
Expand Down Expand Up @@ -90,14 +88,15 @@ public class WorkItemProvider {

private static final String OPERATION_ACTIVITI_TASK_TO_WORK_ITEM = DOT_CLASS + "activitiTaskToWorkItem";

public Integer countWorkItems(ObjectQuery query, Collection<SelectorOptions<GetOperationOptions>> options, OperationResult result) throws SchemaException {
TaskQuery taskQuery = createTaskQuery(query, false, options, result);
public Integer countWorkItems(ObjectQuery query) throws SchemaException {
TaskQuery taskQuery = createTaskQuery(query, false);
return taskQuery != null ? (int) taskQuery.count() : 0;
}

public SearchResultList<WorkItemType> searchWorkItems(ObjectQuery query, Collection<SelectorOptions<GetOperationOptions>> options, OperationResult result)
public SearchResultList<WorkItemType> searchWorkItems(ObjectQuery query,
OperationResult result)
throws SchemaException {
TaskQuery taskQuery = createTaskQuery(query, true, options, result);
TaskQuery taskQuery = createTaskQuery(query, true);
if (taskQuery == null) {
return new SearchResultList<>(Collections.emptyList());
}
Expand All @@ -116,7 +115,7 @@ public SearchResultList<WorkItemType> searchWorkItems(ObjectQuery query, Collect

// primitive 'query interpreter'
// returns null if no results should be returned
private TaskQuery createTaskQuery(ObjectQuery query, boolean includeVariables, Collection<SelectorOptions<GetOperationOptions>> options, OperationResult result) throws SchemaException {
private TaskQuery createTaskQuery(ObjectQuery query, boolean includeVariables) throws SchemaException {
final UniformItemPath WORK_ITEM_ID_PATH = prismContext.toUniformPath(F_EXTERNAL_ID);
final UniformItemPath ASSIGNEE_PATH = prismContext.toUniformPath(F_ASSIGNEE_REF);
final UniformItemPath CANDIDATE_PATH = prismContext.toUniformPath(F_CANDIDATE_REF);
Expand Down Expand Up @@ -495,7 +494,6 @@ public WorkItemType taskExtractToWorkItem(TaskExtract task, boolean resolveTask,
// This is just because 'variables' switches in task query DO NOT fetch all required variables...
if (fetchAllVariables) { // TODO can we do this e.g. in the task completion listener?
Map<String, Object> allVariables = activitiEngine.getTaskService().getVariables(task.getId());
wi.setProcessSpecificPart(pmi.extractProcessSpecificWorkItemPart(allVariables));
wi.getAdditionalInformation().addAll(pmi.getAdditionalInformation(allVariables));
}

Expand Down
Expand Up @@ -20,7 +20,6 @@
import com.evolveum.midpoint.wf.impl.messages.ProcessEvent;
import com.evolveum.midpoint.wf.impl.processors.primary.PcpWfTask;
import com.evolveum.midpoint.xml.ns._public.common.common_3.ObjectReferenceType;
import com.evolveum.midpoint.xml.ns._public.common.common_3.WfProcessSpecificWorkItemPartType;
import com.evolveum.midpoint.xml.ns._public.common.common_3.WorkItemResultType;
import org.springframework.stereotype.Component;

Expand All @@ -40,11 +39,6 @@ public class DefaultProcessMidPointInterface extends BaseProcessMidPointInterfac
return null;
}

@Override
public WfProcessSpecificWorkItemPartType extractProcessSpecificWorkItemPart(Map<String, Object> variables) {
return null;
}

@Override
public List<ObjectReferenceType> prepareApprovedBy(ProcessEvent event, PcpWfTask job, OperationResult result) {
return new ArrayList<>();
Expand Down
Expand Up @@ -53,5 +53,4 @@ public interface ProcessMidPointInterface {

List<ObjectReferenceType> prepareApprovedBy(ProcessEvent event, PcpWfTask job, OperationResult result);

WfProcessSpecificWorkItemPartType extractProcessSpecificWorkItemPart(Map<String, Object> variables);
}
Expand Up @@ -95,12 +95,6 @@ public WorkItemResultType extractWorkItemResult(Map<String, Object> variables) {
return result;
}

@Override
public WfProcessSpecificWorkItemPartType extractProcessSpecificWorkItemPart(Map<String, Object> variables) {
// nothing to do here for now
return null;
}

@Override
public List<ObjectReferenceType> prepareApprovedBy(ProcessEvent event, PcpWfTask job, OperationResult result) {
WfContextType wfc = job.getTask().getWorkflowContext();
Expand Down
Expand Up @@ -35,7 +35,6 @@
import com.evolveum.midpoint.util.logging.Trace;
import com.evolveum.midpoint.util.logging.TraceManager;
import com.evolveum.midpoint.wf.api.WorkflowConstants;
import com.evolveum.midpoint.wf.api.WorkflowException;
import com.evolveum.midpoint.wf.impl.tasks.WfTask;
import com.evolveum.midpoint.wf.util.ApprovalUtils;
import com.evolveum.midpoint.xml.ns._public.common.common_3.*;
Expand Down Expand Up @@ -125,7 +124,7 @@ private List<ObjectReferenceType> resolveIfNeeded(List<ObjectReferenceType> refs
}

public AuditEventRecord prepareWorkItemAuditReportCommon(WorkItemType workItem, WfTask wfTask, AuditEventStage stage,
OperationResult result) throws WorkflowException {
OperationResult result) {

AuditEventRecord record = new AuditEventRecord();
record.setEventType(AuditEventType.WORK_ITEM);
Expand Down Expand Up @@ -154,8 +153,7 @@ public AuditEventRecord prepareWorkItemAuditReportCommon(WorkItemType workItem,
}

// workItem contains taskRef, assignee, originalAssignee, candidates resolved (if possible)
public AuditEventRecord prepareWorkItemCreatedAuditRecord(WorkItemType workItem, WfTask wfTask, OperationResult result)
throws WorkflowException {
public AuditEventRecord prepareWorkItemCreatedAuditRecord(WorkItemType workItem, WfTask wfTask, OperationResult result) {

AuditEventRecord record = prepareWorkItemAuditReportCommon(workItem, wfTask, AuditEventStage.REQUEST, result);
record.setInitiator(wfTask.getRequesterIfExists(result));
Expand All @@ -165,7 +163,7 @@ public AuditEventRecord prepareWorkItemCreatedAuditRecord(WorkItemType workItem,

// workItem contains taskRef, assignee, candidates resolved (if possible)
public AuditEventRecord prepareWorkItemDeletedAuditRecord(WorkItemType workItem, WorkItemEventCauseInformationType cause,
WfTask wfTask, OperationResult result) throws WorkflowException {
WfTask wfTask, OperationResult result) {

AuditEventRecord record = prepareWorkItemAuditReportCommon(workItem, wfTask, AuditEventStage.EXECUTION, result);
setInitiatorAndAttorneyFromPrincipal(record);
Expand Down
Expand Up @@ -31,7 +31,6 @@
import com.evolveum.midpoint.util.exception.ObjectNotFoundException;
import com.evolveum.midpoint.util.exception.SchemaException;
import com.evolveum.midpoint.util.exception.SecurityViolationException;
import com.evolveum.midpoint.wf.api.WorkflowException;
import com.evolveum.midpoint.wf.impl.messages.ProcessEvent;
import com.evolveum.midpoint.wf.impl.messages.TaskEvent;
import com.evolveum.midpoint.wf.impl.tasks.WfTask;
Expand Down Expand Up @@ -114,10 +113,10 @@ HookOperationMode processModelInvocation(@NotNull ModelContext<?> context, WfCon
*/
// workItem contains taskRef, assignee, candidates resolved (if possible)
AuditEventRecord prepareWorkItemCreatedAuditRecord(WorkItemType workItem,
TaskEvent taskEvent, WfTask wfTask, OperationResult result) throws WorkflowException;
TaskEvent taskEvent, WfTask wfTask, OperationResult result);

AuditEventRecord prepareWorkItemDeletedAuditRecord(WorkItemType workItem, WorkItemEventCauseInformationType cause,
TaskEvent taskEvent, WfTask wfTask, OperationResult result) throws WorkflowException;
TaskEvent taskEvent, WfTask wfTask, OperationResult result);

/**
* Auxiliary method to access autowired Spring beans from within non-spring java objects.
Expand Down
Expand Up @@ -27,7 +27,6 @@
import com.evolveum.midpoint.util.logging.LoggingUtils;
import com.evolveum.midpoint.util.logging.Trace;
import com.evolveum.midpoint.util.logging.TraceManager;
import com.evolveum.midpoint.wf.api.WorkflowException;
import com.evolveum.midpoint.wf.impl.activiti.ActivitiEngine;
import com.evolveum.midpoint.wf.impl.tasks.WfTask;
import com.evolveum.midpoint.wf.impl.tasks.WfTaskController;
Expand Down Expand Up @@ -215,14 +214,14 @@ public AuditEventRecord prepareProcessInstanceAuditRecord(WfTask wfTask, AuditEv

@Override
public AuditEventRecord prepareWorkItemCreatedAuditRecord(WorkItemType workItem, TaskEvent taskEvent, WfTask wfTask,
OperationResult result) throws WorkflowException {
OperationResult result) {
return getScenarioBean(taskEvent.getVariables()).prepareWorkItemCreatedAuditRecord(workItem, wfTask, taskEvent, result);
}

@Override
public AuditEventRecord prepareWorkItemDeletedAuditRecord(WorkItemType workItem, WorkItemEventCauseInformationType cause,
TaskEvent taskEvent, WfTask wfTask,
OperationResult result) throws WorkflowException {
OperationResult result) {
return getScenarioBean(taskEvent.getVariables())
.prepareWorkItemDeletedAuditRecord(workItem, cause, taskEvent, wfTask, result);
}
Expand Down
Expand Up @@ -23,15 +23,14 @@
import com.evolveum.midpoint.prism.PrismContext;
import com.evolveum.midpoint.schema.result.OperationResult;
import com.evolveum.midpoint.util.exception.SchemaException;
import com.evolveum.midpoint.wf.api.WorkflowException;
import com.evolveum.midpoint.wf.impl.tasks.WfTask;
import com.evolveum.midpoint.wf.impl.tasks.WfTaskCreationInstruction;
import com.evolveum.midpoint.wf.impl.messages.TaskEvent;
import com.evolveum.midpoint.wf.impl.processes.DefaultProcessMidPointInterface;
import com.evolveum.midpoint.wf.impl.processes.ProcessInterfaceFinder;
import com.evolveum.midpoint.wf.impl.processors.BaseAuditHelper;
import com.evolveum.midpoint.wf.impl.processors.general.GcpExternalizationHelper;
import com.evolveum.midpoint.wf.impl.processors.general.GeneralChangeProcessorSpecificContent;
import com.evolveum.midpoint.wf.impl.tasks.WfTask;
import com.evolveum.midpoint.wf.impl.tasks.WfTaskCreationInstruction;
import com.evolveum.midpoint.xml.ns._public.common.common_3.GeneralChangeProcessorScenarioType;
import com.evolveum.midpoint.xml.ns._public.common.common_3.WorkItemEventCauseInformationType;
import com.evolveum.midpoint.xml.ns._public.common.common_3.WorkItemType;
Expand Down Expand Up @@ -93,14 +92,14 @@ public AuditEventRecord prepareProcessInstanceAuditRecord(Map<String, Object> va

@Override
public AuditEventRecord prepareWorkItemCreatedAuditRecord(WorkItemType workItem, WfTask wfTask, TaskEvent taskEvent,
OperationResult result) throws WorkflowException {
OperationResult result) {
return baseAuditHelper.prepareWorkItemCreatedAuditRecord(workItem, wfTask, result);
// TODO fill-in missing delta somehow
}

@Override
public AuditEventRecord prepareWorkItemDeletedAuditRecord(WorkItemType workItem, WorkItemEventCauseInformationType cause,
TaskEvent taskEvent, WfTask wfTask, OperationResult result) throws WorkflowException {
TaskEvent taskEvent, WfTask wfTask, OperationResult result) {
return baseAuditHelper.prepareWorkItemDeletedAuditRecord(workItem, cause, wfTask, result);
// TODO fill-in missing delta somehow
}
Expand Down
Expand Up @@ -23,7 +23,6 @@
import com.evolveum.midpoint.schema.result.OperationResult;
import com.evolveum.midpoint.task.api.Task;
import com.evolveum.midpoint.util.exception.SchemaException;
import com.evolveum.midpoint.wf.api.WorkflowException;
import com.evolveum.midpoint.wf.impl.tasks.WfTask;
import com.evolveum.midpoint.wf.impl.tasks.WfTaskCreationInstruction;
import com.evolveum.midpoint.wf.impl.messages.TaskEvent;
Expand Down Expand Up @@ -52,10 +51,10 @@ public interface GcpScenarioBean {

AuditEventRecord prepareProcessInstanceAuditRecord(Map<String, Object> variables, WfTask wfTask, AuditEventStage stage, OperationResult result);

AuditEventRecord prepareWorkItemCreatedAuditRecord(WorkItemType workItem, WfTask wfTask, TaskEvent taskEvent, OperationResult result) throws WorkflowException;
AuditEventRecord prepareWorkItemCreatedAuditRecord(WorkItemType workItem, WfTask wfTask, TaskEvent taskEvent, OperationResult result);

AuditEventRecord prepareWorkItemDeletedAuditRecord(WorkItemType workItem, WorkItemEventCauseInformationType cause,
TaskEvent taskEvent, WfTask wfTask, OperationResult result) throws WorkflowException;
TaskEvent taskEvent, WfTask wfTask, OperationResult result);

WfTaskCreationInstruction prepareJobCreationInstruction(GeneralChangeProcessorScenarioType scenarioType, LensContext<?> context, WfTask rootWfTask, Task taskFromModel, OperationResult result) throws SchemaException;
}

0 comments on commit b15cb31

Please sign in to comment.