/*
* Copyright (c) 2010-2014 Evolveum
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
package com.evolveum.midpoint.wf.impl.processors.general.scenarios;
import com.evolveum.midpoint.audit.api.AuditEventRecord;
import com.evolveum.midpoint.audit.api.AuditEventStage;
import com.evolveum.midpoint.model.api.context.ModelContext;
import com.evolveum.midpoint.model.impl.lens.LensContext;
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.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;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Component;
import java.util.Map;
/**
* Base implementation of GcpScenarioBean.
* Delegates everything to helpers.
*
* @author mederly
*/
@Component
public class BaseGcpScenarioBean implements GcpScenarioBean {
@Autowired
private GcpExternalizationHelper gcpExternalizationHelper;
@Autowired
private BaseAuditHelper baseAuditHelper;
@Autowired
private ProcessInterfaceFinder processInterfaceFinder;
@Autowired
private PrismContext prismContext;
@Autowired
private DefaultProcessMidPointInterface defaultProcessMidPointInterface;
@Override
public boolean determineActivation(GeneralChangeProcessorScenarioType scenarioType, ModelContext context, com.evolveum.midpoint.task.api.Task taskFromModel, OperationResult result) {
return true;
}
// @Override
// public PrismObject<? extends WorkItemContents> externalizeWorkItemContents(Task task, Map<String, Object> processInstanceVariables, OperationResult result) throws JAXBException, ObjectNotFoundException, SchemaException {
// PrismObject<? extends WorkItemContents> prism = gcpExternalizationHelper.createNewWorkItemContents();
// gcpExternalizationHelper.fillInQuestionForm(prism.asObjectable().getQuestionForm().asPrismObject(), task, processInstanceVariables, result);
// return prism;
// }
// @Override
// public ProcessSpecificState externalizeInstanceState(Map<String, Object> variables) throws SchemaException {
// if (variables.containsKey(CommonProcessVariableNames.VARIABLE_PROCESS_INTERFACE_BEAN_NAME)) {
// return processInterfaceFinder.getProcessInterface(variables).externalizeProcessInstanceState(variables);
// } else {
// return null;
// }
// }
@Override
public AuditEventRecord prepareProcessInstanceAuditRecord(Map<String, Object> variables, WfTask wfTask, AuditEventStage stage, OperationResult result) {
return baseAuditHelper.prepareProcessInstanceAuditRecord(wfTask, stage, result);
// TODO what with missing data (delta, result)? We could at least attempt to determine them ...
}
@Override
public AuditEventRecord prepareWorkItemCreatedAuditRecord(WorkItemType workItem, WfTask wfTask, TaskEvent taskEvent,
OperationResult result) throws WorkflowException {
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 {
return baseAuditHelper.prepareWorkItemDeletedAuditRecord(workItem, cause, wfTask, result);
// TODO fill-in missing delta somehow
}
@Override
public WfTaskCreationInstruction prepareJobCreationInstruction(GeneralChangeProcessorScenarioType scenarioType, LensContext<?> context, WfTask rootWfTask, com.evolveum.midpoint.task.api.Task taskFromModel, OperationResult result) throws SchemaException {
GeneralChangeProcessorSpecificContent processorInstruction = new GeneralChangeProcessorSpecificContent(context);
processorInstruction.setScenarioBeanName(scenarioType.getBeanName());
WfTaskCreationInstruction instruction = WfTaskCreationInstruction.createWfOnly(rootWfTask.getChangeProcessor(), processorInstruction, null);
instruction.setProcessName(scenarioType.getProcessName());
instruction.setRequesterRef(taskFromModel.getOwner());
instruction.setTaskName("Workflow-monitoring task");
instruction.setProcessInterfaceBean(defaultProcessMidPointInterface);
return instruction;
}
}