Search in sources :

Example 1 with WorkflowProcessInstance

use of io.automatiko.engine.workflow.process.instance.WorkflowProcessInstance in project automatiko-engine by automatiko-io.

the class ParticipantsAccessPolicy method whenInitiatorNotSetOrAsIdentity.

@SuppressWarnings("unchecked")
protected boolean whenInitiatorNotSetOrAsIdentity(IdentityProvider identityProvider, ProcessInstance<T> instance) {
    if (identityProvider.isAdmin()) {
        return true;
    }
    WorkflowProcessInstance pi = (WorkflowProcessInstance) ((AbstractProcessInstance<?>) instance).processInstance();
    if (pi.getInitiator() == null || pi.getInitiator().isEmpty() || pi.getInitiator().equals(identityProvider.getName())) {
        return true;
    }
    // next check if the user/group is assigned to any of the active user tasks that
    // can make it eligible to access the instance
    boolean result = ((WorkflowProcessInstanceImpl) pi).getNodeInstances(true).stream().filter(ni -> ni instanceof HumanTaskNodeInstance).anyMatch(ni -> {
        HumanTaskWorkItem workitem = (HumanTaskWorkItem) ((HumanTaskNodeInstance) ni).getWorkItem();
        return workitem.enforce(SecurityPolicy.of(identityProvider));
    });
    if (!result) {
        result = instance.subprocesses().stream().anyMatch(spi -> whenInitiatorNotSetOrAsIdentity(identityProvider, (ProcessInstance<T>) spi));
    }
    return result;
}
Also used : HumanTaskWorkItem(io.automatiko.engine.api.runtime.process.HumanTaskWorkItem) AbstractProcessInstance(io.automatiko.engine.workflow.AbstractProcessInstance) SecurityPolicy(io.automatiko.engine.api.auth.SecurityPolicy) WorkflowProcessInstanceImpl(io.automatiko.engine.workflow.process.instance.impl.WorkflowProcessInstanceImpl) IdentityProvider(io.automatiko.engine.api.auth.IdentityProvider) Set(java.util.Set) AccessPolicy(io.automatiko.engine.api.auth.AccessPolicy) HumanTaskNodeInstance(io.automatiko.engine.workflow.process.instance.node.HumanTaskNodeInstance) ProcessInstance(io.automatiko.engine.api.workflow.ProcessInstance) WorkflowProcessInstance(io.automatiko.engine.workflow.process.instance.WorkflowProcessInstance) HumanTaskWorkItem(io.automatiko.engine.api.runtime.process.HumanTaskWorkItem) HumanTaskNodeInstance(io.automatiko.engine.workflow.process.instance.node.HumanTaskNodeInstance) WorkflowProcessInstance(io.automatiko.engine.workflow.process.instance.WorkflowProcessInstance)

Example 2 with WorkflowProcessInstance

use of io.automatiko.engine.workflow.process.instance.WorkflowProcessInstance in project automatiko-engine by automatiko-io.

the class CompositeNodeInstance method signalEvent.

@Override
public void signalEvent(String type, Object event) {
    List<NodeInstance> currentView = new ArrayList<>(this.nodeInstances);
    super.signalEvent(type, event);
    for (Node node : getCompositeNode().internalGetNodes()) {
        if (node instanceof EventNodeInterface && ((EventNodeInterface) node).acceptsEvent(type, event)) {
            if (node instanceof EventNode && ((EventNode) node).getFrom() == null || node instanceof EventSubProcessNode) {
                EventNodeInstanceInterface eventNodeInstance = (EventNodeInstanceInterface) getNodeInstance(node);
                eventNodeInstance.signalEvent(type, event);
            } else {
                List<NodeInstance> nodeInstances = getNodeInstances(node.getId(), currentView);
                if (nodeInstances != null && !nodeInstances.isEmpty()) {
                    for (NodeInstance nodeInstance : nodeInstances) {
                        ((EventNodeInstanceInterface) nodeInstance).signalEvent(type, event);
                    }
                }
            }
        }
        if (type.equals(node.getName()) && node.getIncomingConnections().isEmpty()) {
            NodeInstance nodeInstance = getNodeInstance(node);
            if (nodeInstance != null) {
                if (event != null) {
                    Map<String, Object> dynamicParams = new HashMap<>(getProcessInstance().getVariables());
                    if (event instanceof Map) {
                        dynamicParams.putAll((Map<String, Object>) event);
                    } else if (event instanceof WorkflowProcessInstance) {
                    // ignore variables of process instance type
                    } else {
                        dynamicParams.put("Data", event);
                    }
                    nodeInstance.setDynamicParameters(dynamicParams);
                }
                nodeInstance.trigger(null, null);
            }
        }
    }
}
Also used : HashMap(java.util.HashMap) EventNodeInterface(io.automatiko.engine.workflow.process.core.node.EventNodeInterface) EventSubProcessNode(io.automatiko.engine.workflow.process.core.node.EventSubProcessNode) StateBasedNode(io.automatiko.engine.workflow.process.core.node.StateBasedNode) CompositeNode(io.automatiko.engine.workflow.process.core.node.CompositeNode) Node(io.automatiko.engine.api.definition.process.Node) ActionNode(io.automatiko.engine.workflow.process.core.node.ActionNode) EventSubProcessNode(io.automatiko.engine.workflow.process.core.node.EventSubProcessNode) StartNode(io.automatiko.engine.workflow.process.core.node.StartNode) EndNode(io.automatiko.engine.workflow.process.core.node.EndNode) EventNode(io.automatiko.engine.workflow.process.core.node.EventNode) ArrayList(java.util.ArrayList) EventNode(io.automatiko.engine.workflow.process.core.node.EventNode) NodeInstance(io.automatiko.engine.workflow.process.instance.NodeInstance) HashMap(java.util.HashMap) Map(java.util.Map) WorkflowProcessInstance(io.automatiko.engine.workflow.process.instance.WorkflowProcessInstance)

Example 3 with WorkflowProcessInstance

use of io.automatiko.engine.workflow.process.instance.WorkflowProcessInstance in project automatiko-engine by automatiko-io.

the class WorkItemTest method testMockDataWorkItemHandlerCustomFunction.

@Test
public void testMockDataWorkItemHandlerCustomFunction() {
    String processId = "org.company.actions";
    String workName = "Unnexistent Task";
    ExecutableProcess process = getWorkItemProcess(processId, workName);
    InternalProcessRuntime ksession = createProcessRuntime(process);
    ksession.getWorkItemManager().registerWorkItemHandler(workName, new MockDataWorkItemHandler((input) -> {
        Map<String, Object> output = new HashMap<String, Object>();
        if ("John Doe".equals(input.get("Comment"))) {
            output.put("Result", "one");
        } else {
            output.put("Result", "two");
        }
        return output;
    }));
    Map<String, Object> parameters = new HashMap<String, Object>();
    parameters.put("UserName", "John Doe");
    parameters.put("Person", new Person("John Doe"));
    ProcessInstance processInstance = ksession.startProcess("org.company.actions", parameters);
    Object numberVariable = ((WorkflowProcessInstance) processInstance).getVariable("MyObject");
    assertNotNull(numberVariable);
    assertEquals("one", numberVariable);
    assertEquals(ProcessInstance.STATE_COMPLETED, processInstance.getState());
    parameters = new HashMap<String, Object>();
    parameters.put("UserName", "John Doe");
    parameters.put("Person", new Person("John Deen"));
    processInstance = ksession.startProcess("org.company.actions", parameters);
    numberVariable = ((WorkflowProcessInstance) processInstance).getVariable("MyObject");
    assertNotNull(numberVariable);
    assertEquals("two", numberVariable);
    assertEquals(ProcessInstance.STATE_COMPLETED, processInstance.getState());
}
Also used : Assertions.fail(org.junit.jupiter.api.Assertions.fail) Assertions.assertNotNull(org.junit.jupiter.api.Assertions.assertNotNull) MockDataWorkItemHandler(io.automatiko.engine.workflow.base.instance.impl.demo.MockDataWorkItemHandler) WorkItemHandlerNotFoundException(io.automatiko.engine.workflow.base.instance.impl.workitem.WorkItemHandlerNotFoundException) LoggerFactory(org.slf4j.LoggerFactory) HashMap(java.util.HashMap) ObjectDataType(io.automatiko.engine.workflow.base.core.datatype.impl.type.ObjectDataType) ArrayList(java.util.ArrayList) HashSet(java.util.HashSet) IntegerDataType(io.automatiko.engine.workflow.base.core.datatype.impl.type.IntegerDataType) AbstractBaseTest(io.automatiko.engine.workflow.test.util.AbstractBaseTest) ProcessInstance(io.automatiko.engine.api.runtime.process.ProcessInstance) Map(java.util.Map) InternalProcessRuntime(io.automatiko.engine.workflow.base.instance.InternalProcessRuntime) Assertions.assertEquals(org.junit.jupiter.api.Assertions.assertEquals) Node(io.automatiko.engine.workflow.process.core.Node) ParameterDefinition(io.automatiko.engine.workflow.base.core.ParameterDefinition) ConnectionImpl(io.automatiko.engine.workflow.process.core.impl.ConnectionImpl) ExecutableProcess(io.automatiko.engine.workflow.process.executable.core.ExecutableProcess) Set(java.util.Set) DoNothingWorkItemHandler(io.automatiko.engine.workflow.base.instance.impl.demo.DoNothingWorkItemHandler) Test(org.junit.jupiter.api.Test) List(java.util.List) WorkItemNode(io.automatiko.engine.workflow.process.core.node.WorkItemNode) Person(io.automatiko.engine.workflow.process.test.Person) StartNode(io.automatiko.engine.workflow.process.core.node.StartNode) Variable(io.automatiko.engine.workflow.base.core.context.variable.Variable) ParameterDefinitionImpl(io.automatiko.engine.workflow.base.core.impl.ParameterDefinitionImpl) WorkImpl(io.automatiko.engine.workflow.base.core.impl.WorkImpl) WorkflowProcessInstance(io.automatiko.engine.workflow.process.instance.WorkflowProcessInstance) StringDataType(io.automatiko.engine.workflow.base.core.datatype.impl.type.StringDataType) Work(io.automatiko.engine.workflow.base.core.Work) EndNode(io.automatiko.engine.workflow.process.core.node.EndNode) HashMap(java.util.HashMap) ExecutableProcess(io.automatiko.engine.workflow.process.executable.core.ExecutableProcess) InternalProcessRuntime(io.automatiko.engine.workflow.base.instance.InternalProcessRuntime) ProcessInstance(io.automatiko.engine.api.runtime.process.ProcessInstance) WorkflowProcessInstance(io.automatiko.engine.workflow.process.instance.WorkflowProcessInstance) MockDataWorkItemHandler(io.automatiko.engine.workflow.base.instance.impl.demo.MockDataWorkItemHandler) HashMap(java.util.HashMap) Map(java.util.Map) Person(io.automatiko.engine.workflow.process.test.Person) WorkflowProcessInstance(io.automatiko.engine.workflow.process.instance.WorkflowProcessInstance) AbstractBaseTest(io.automatiko.engine.workflow.test.util.AbstractBaseTest) Test(org.junit.jupiter.api.Test)

Example 4 with WorkflowProcessInstance

use of io.automatiko.engine.workflow.process.instance.WorkflowProcessInstance in project automatiko-engine by automatiko-io.

the class WorkItemTest method testMockDataWorkItemHandler.

@Test
public void testMockDataWorkItemHandler() {
    String processId = "org.company.actions";
    String workName = "Unnexistent Task";
    ExecutableProcess process = getWorkItemProcess(processId, workName);
    InternalProcessRuntime ksession = createProcessRuntime(process);
    Map<String, Object> output = new HashMap<String, Object>();
    output.put("Result", "test");
    ksession.getWorkItemManager().registerWorkItemHandler(workName, new MockDataWorkItemHandler(output));
    Map<String, Object> parameters = new HashMap<String, Object>();
    parameters.put("UserName", "John Doe");
    parameters.put("Person", new Person("John Doe"));
    ProcessInstance processInstance = ksession.startProcess("org.company.actions", parameters);
    Object numberVariable = ((WorkflowProcessInstance) processInstance).getVariable("MyObject");
    assertNotNull(numberVariable);
    assertEquals("test", numberVariable);
    assertEquals(ProcessInstance.STATE_COMPLETED, processInstance.getState());
}
Also used : HashMap(java.util.HashMap) ExecutableProcess(io.automatiko.engine.workflow.process.executable.core.ExecutableProcess) InternalProcessRuntime(io.automatiko.engine.workflow.base.instance.InternalProcessRuntime) ProcessInstance(io.automatiko.engine.api.runtime.process.ProcessInstance) WorkflowProcessInstance(io.automatiko.engine.workflow.process.instance.WorkflowProcessInstance) MockDataWorkItemHandler(io.automatiko.engine.workflow.base.instance.impl.demo.MockDataWorkItemHandler) Person(io.automatiko.engine.workflow.process.test.Person) WorkflowProcessInstance(io.automatiko.engine.workflow.process.instance.WorkflowProcessInstance) AbstractBaseTest(io.automatiko.engine.workflow.test.util.AbstractBaseTest) Test(org.junit.jupiter.api.Test)

Example 5 with WorkflowProcessInstance

use of io.automatiko.engine.workflow.process.instance.WorkflowProcessInstance in project automatiko-engine by automatiko-io.

the class WorkflowProcessInstanceImpl method signalEvent.

@Override
@SuppressWarnings("unchecked")
public void signalEvent(String type, Object event) {
    logger.debug("Signal {} received with data {} in process instance {}", type, event, getId());
    synchronized (this) {
        if (getState() != ProcessInstance.STATE_ACTIVE) {
            return;
        }
        InternalProcessRuntime processRuntime = getProcessRuntime();
        processRuntime.getProcessEventSupport().fireBeforeProcessSignaled(type, event, this, processRuntime);
        if ("timerTriggered".equals(type)) {
            TimerInstance timer = (TimerInstance) event;
            if (timer.getId().equals(slaTimerId)) {
                handleSLAViolation();
                // no need to pass the event along as it was purely for SLA tracking
                return;
            }
        }
        if ("slaViolation".equals(type)) {
            handleSLAViolation();
            // no need to pass the event along as it was purely for SLA tracking
            return;
        }
        List<NodeInstance> currentView = new ArrayList<>(this.nodeInstances);
        try {
            this.activatingNodeIds = new ArrayList<>();
            List<EventListener> listeners = eventListeners.get(type);
            if (listeners != null) {
                for (EventListener listener : listeners) {
                    listener.signalEvent(type, event);
                }
            }
            listeners = externalEventListeners.get(type);
            if (listeners != null) {
                for (EventListener listener : listeners) {
                    listener.signalEvent(type, event);
                }
            }
            if (!type.startsWith("Compensation")) {
                for (Node node : getWorkflowProcess().getNodes()) {
                    if (node instanceof EventNodeInterface && ((EventNodeInterface) node).acceptsEvent(type, event, getResolver(node, currentView))) {
                        if (node instanceof EventNode && ((EventNode) node).getFrom() == null) {
                            EventNodeInstance eventNodeInstance = (EventNodeInstance) getNodeInstance(node);
                            eventNodeInstance.signalEvent(type, event);
                        } else {
                            if (node instanceof EventSubProcessNode && (resolveVariables(((EventSubProcessNode) node).getEvents()).contains(type))) {
                                EventSubProcessNodeInstance eventNodeInstance = (EventSubProcessNodeInstance) getNodeInstance(node);
                                eventNodeInstance.signalEvent(type, event);
                            } else {
                                List<NodeInstance> nodeInstances = getNodeInstances(node.getId(), currentView);
                                if (nodeInstances != null && !nodeInstances.isEmpty()) {
                                    for (NodeInstance nodeInstance : nodeInstances) {
                                        ((EventNodeInstanceInterface) nodeInstance).signalEvent(type, event);
                                    }
                                }
                            }
                        }
                    } else if (node instanceof StartNode && ((StartNode) node).getTriggers() != null) {
                        boolean accepted = ((StartNode) node).getTriggers().stream().filter(EventTrigger.class::isInstance).anyMatch(t -> ((EventTrigger) t).getEventFilters().stream().anyMatch(e -> e.acceptsEvent(type, event)));
                        if (accepted && node.getMetaData().get("acceptStartSignal") != null) {
                            StartNodeInstance startNodeInstance = (StartNodeInstance) getNodeInstance(node);
                            startNodeInstance.signalEvent(type, event);
                        }
                    }
                }
                if (((io.automatiko.engine.workflow.process.core.WorkflowProcess) getWorkflowProcess()).isDynamic()) {
                    for (Node node : getWorkflowProcess().getNodes()) {
                        if (node.hasMatchingEventListner(type) && node.getIncomingConnections().isEmpty()) {
                            NodeInstance nodeInstance = getNodeInstance(node);
                            if (nodeInstance != null) {
                                if (event != null) {
                                    Map<String, Object> dynamicParams = new HashMap<>(getVariables());
                                    if (event instanceof Map) {
                                        dynamicParams.putAll((Map<String, Object>) event);
                                    } else if (event instanceof WorkflowProcessInstance) {
                                    // ignore variables of process instance type
                                    } else {
                                        dynamicParams.put("Data", event);
                                    }
                                    nodeInstance.setDynamicParameters(dynamicParams);
                                }
                                nodeInstance.trigger(null, io.automatiko.engine.workflow.process.core.Node.CONNECTION_DEFAULT_TYPE);
                            }
                        } else if (this instanceof ExecutableProcessInstance && node instanceof CompositeNode) {
                            Optional<NodeInstance> instance = this.nodeInstances.stream().filter(ni -> ni.getNodeId() == node.getId()).findFirst();
                            instance.ifPresent(n -> ((CompositeNodeInstance) n).signalEvent(type, event));
                        }
                    }
                }
            }
        } finally {
            processRuntime.getProcessEventSupport().fireAfterProcessSignaled(type, event, this, processRuntime);
            if (this.activatingNodeIds != null) {
                this.activatingNodeIds.clear();
                this.activatingNodeIds = null;
            }
        }
    }
}
Also used : StateBasedNode(io.automatiko.engine.workflow.process.core.node.StateBasedNode) Metadata(io.automatiko.engine.workflow.process.executable.core.Metadata) COMPLETED(io.automatiko.engine.api.workflow.flexible.ItemDescription.Status.COMPLETED) NodeImpl(io.automatiko.engine.workflow.process.core.impl.NodeImpl) Matcher(java.util.regex.Matcher) ContextContainer(io.automatiko.engine.workflow.base.core.ContextContainer) Map(java.util.Map) IS_FOR_COMPENSATION(io.automatiko.engine.workflow.process.executable.core.Metadata.IS_FOR_COMPENSATION) PrintWriter(java.io.PrintWriter) AdHocFragment(io.automatiko.engine.api.workflow.flexible.AdHocFragment) MilestoneNode(io.automatiko.engine.workflow.process.core.node.MilestoneNode) EventBasedNodeInstanceInterface(io.automatiko.engine.workflow.process.instance.node.EventBasedNodeInstanceInterface) IdentityProvider(io.automatiko.engine.api.auth.IdentityProvider) Set(java.util.Set) VariableScope(io.automatiko.engine.workflow.base.core.context.variable.VariableScope) CORRELATION_KEY(io.automatiko.engine.workflow.process.executable.core.Metadata.CORRELATION_KEY) EventSubProcessNode(io.automatiko.engine.workflow.process.core.node.EventSubProcessNode) StateNode(io.automatiko.engine.workflow.process.core.node.StateNode) Stream(java.util.stream.Stream) CONDITION(io.automatiko.engine.workflow.process.executable.core.Metadata.CONDITION) Variable(io.automatiko.engine.workflow.base.core.context.variable.Variable) ProcessInstanceJobDescription(io.automatiko.engine.api.jobs.ProcessInstanceJobDescription) WorkflowProcessInstance(io.automatiko.engine.workflow.process.instance.WorkflowProcessInstance) EventSubProcessNodeInstance(io.automatiko.engine.workflow.process.instance.node.EventSubProcessNodeInstance) CopyOnWriteArrayList(java.util.concurrent.CopyOnWriteArrayList) Timer(io.automatiko.engine.workflow.base.core.timer.Timer) CorrelationKey(io.automatiko.engine.services.correlation.CorrelationKey) Node(io.automatiko.engine.api.definition.process.Node) ArrayList(java.util.ArrayList) CUSTOM_ASYNC(io.automatiko.engine.workflow.process.executable.core.Metadata.CUSTOM_ASYNC) EventListener(io.automatiko.engine.api.runtime.process.EventListener) LinkedHashSet(java.util.LinkedHashSet) NodeInstance(io.automatiko.engine.workflow.process.instance.NodeInstance) DynamicNode(io.automatiko.engine.workflow.process.core.node.DynamicNode) ExecutionsErrorInfo(io.automatiko.engine.api.workflow.ExecutionsErrorInfo) VariableResolverFactory(org.mvel2.integration.VariableResolverFactory) StringWriter(java.io.StringWriter) TrustedIdentityProvider(io.automatiko.engine.api.auth.TrustedIdentityProvider) DateTimeUtils(io.automatiko.engine.workflow.base.core.timer.DateTimeUtils) CUSTOM_SLA_DUE_DATE(io.automatiko.engine.workflow.process.executable.core.Metadata.CUSTOM_SLA_DUE_DATE) NodeInstanceContainer(io.automatiko.engine.api.runtime.process.NodeInstanceContainer) AVAILABLE(io.automatiko.engine.api.workflow.flexible.ItemDescription.Status.AVAILABLE) EventNodeInstanceInterface(io.automatiko.engine.workflow.process.instance.node.EventNodeInstanceInterface) EMPTY_EVENT_LISTENER(io.automatiko.engine.workflow.process.instance.impl.DummyEventListener.EMPTY_EVENT_LISTENER) ContextInstance(io.automatiko.engine.workflow.base.instance.ContextInstance) StartNode(io.automatiko.engine.workflow.process.core.node.StartNode) EventDescription(io.automatiko.engine.api.workflow.EventDescription) EndNode(io.automatiko.engine.workflow.process.core.node.EndNode) EventNode(io.automatiko.engine.workflow.process.core.node.EventNode) Date(java.util.Date) LoggerFactory(org.slf4j.LoggerFactory) EVENT_TYPE(io.automatiko.engine.workflow.process.executable.core.Metadata.EVENT_TYPE) TagInstance(io.automatiko.engine.workflow.base.instance.TagInstance) NamedDataType(io.automatiko.engine.api.workflow.NamedDataType) FaultNodeInstance(io.automatiko.engine.workflow.process.instance.node.FaultNodeInstance) VariableScopeInstance(io.automatiko.engine.workflow.base.instance.context.variable.VariableScopeInstance) BaseEventDescription(io.automatiko.engine.api.workflow.BaseEventDescription) ProcessInstance(io.automatiko.engine.api.runtime.process.ProcessInstance) EventNodeInterface(io.automatiko.engine.workflow.process.core.node.EventNodeInterface) TagDefinition(io.automatiko.engine.workflow.base.core.TagDefinition) Collection(java.util.Collection) Tag(io.automatiko.engine.api.workflow.Tag) ProcessAction(io.automatiko.engine.workflow.process.core.ProcessAction) ActionNode(io.automatiko.engine.workflow.process.core.node.ActionNode) ExecutableProcessInstance(io.automatiko.engine.workflow.process.executable.instance.ExecutableProcessInstance) UUID(java.util.UUID) Collectors(java.util.stream.Collectors) WorkItemExecutionError(io.automatiko.engine.api.workflow.workitem.WorkItemExecutionError) Objects(java.util.Objects) NodeContainer(io.automatiko.engine.api.definition.process.NodeContainer) List(java.util.List) PatternConstants(io.automatiko.engine.workflow.util.PatternConstants) EVENT_TYPE_SIGNAL(io.automatiko.engine.workflow.process.executable.core.Metadata.EVENT_TYPE_SIGNAL) ItemDescription(io.automatiko.engine.api.workflow.flexible.ItemDescription) Entry(java.util.Map.Entry) Optional(java.util.Optional) Milestone(io.automatiko.engine.api.workflow.flexible.Milestone) CompositeNodeInstance(io.automatiko.engine.workflow.process.instance.node.CompositeNodeInstance) StateBasedNodeInstance(io.automatiko.engine.workflow.process.instance.node.StateBasedNodeInstance) StartNodeInstance(io.automatiko.engine.workflow.process.instance.node.StartNodeInstance) CompositeNode(io.automatiko.engine.workflow.process.core.node.CompositeNode) UNIQUE_ID(io.automatiko.engine.workflow.process.executable.core.Metadata.UNIQUE_ID) HashMap(java.util.HashMap) Function(java.util.function.Function) DurationExpirationTime(io.automatiko.engine.api.jobs.DurationExpirationTime) ProcessInstanceImpl(io.automatiko.engine.workflow.base.instance.impl.ProcessInstanceImpl) ExpressionEvaluator(io.automatiko.engine.api.expression.ExpressionEvaluator) EndNodeInstance(io.automatiko.engine.workflow.process.instance.node.EndNodeInstance) InternalProcessRuntime(io.automatiko.engine.workflow.base.instance.InternalProcessRuntime) BoundaryEventNode(io.automatiko.engine.workflow.process.core.node.BoundaryEventNode) COMPENSATION(io.automatiko.engine.workflow.process.executable.core.Metadata.COMPENSATION) ACTIVE(io.automatiko.engine.api.workflow.flexible.ItemDescription.Status.ACTIVE) Logger(org.slf4j.Logger) WorkflowProcess(io.automatiko.engine.api.definition.process.WorkflowProcess) TimerInstance(io.automatiko.engine.services.time.TimerInstance) EventNodeInstance(io.automatiko.engine.workflow.process.instance.node.EventNodeInstance) Process(io.automatiko.engine.workflow.base.core.Process) EventTrigger(io.automatiko.engine.workflow.process.core.node.EventTrigger) Collections(java.util.Collections) TimerInstance(io.automatiko.engine.services.time.TimerInstance) StartNodeInstance(io.automatiko.engine.workflow.process.instance.node.StartNodeInstance) HashMap(java.util.HashMap) EventSubProcessNode(io.automatiko.engine.workflow.process.core.node.EventSubProcessNode) StateBasedNode(io.automatiko.engine.workflow.process.core.node.StateBasedNode) MilestoneNode(io.automatiko.engine.workflow.process.core.node.MilestoneNode) EventSubProcessNode(io.automatiko.engine.workflow.process.core.node.EventSubProcessNode) StateNode(io.automatiko.engine.workflow.process.core.node.StateNode) Node(io.automatiko.engine.api.definition.process.Node) DynamicNode(io.automatiko.engine.workflow.process.core.node.DynamicNode) StartNode(io.automatiko.engine.workflow.process.core.node.StartNode) EndNode(io.automatiko.engine.workflow.process.core.node.EndNode) EventNode(io.automatiko.engine.workflow.process.core.node.EventNode) ActionNode(io.automatiko.engine.workflow.process.core.node.ActionNode) CompositeNode(io.automatiko.engine.workflow.process.core.node.CompositeNode) BoundaryEventNode(io.automatiko.engine.workflow.process.core.node.BoundaryEventNode) CopyOnWriteArrayList(java.util.concurrent.CopyOnWriteArrayList) ArrayList(java.util.ArrayList) EventNode(io.automatiko.engine.workflow.process.core.node.EventNode) BoundaryEventNode(io.automatiko.engine.workflow.process.core.node.BoundaryEventNode) EventNodeInstanceInterface(io.automatiko.engine.workflow.process.instance.node.EventNodeInstanceInterface) EventListener(io.automatiko.engine.api.runtime.process.EventListener) WorkflowProcess(io.automatiko.engine.api.definition.process.WorkflowProcess) EventTrigger(io.automatiko.engine.workflow.process.core.node.EventTrigger) StartNode(io.automatiko.engine.workflow.process.core.node.StartNode) Optional(java.util.Optional) CompositeNodeInstance(io.automatiko.engine.workflow.process.instance.node.CompositeNodeInstance) EventNodeInterface(io.automatiko.engine.workflow.process.core.node.EventNodeInterface) EventSubProcessNodeInstance(io.automatiko.engine.workflow.process.instance.node.EventSubProcessNodeInstance) CompositeNode(io.automatiko.engine.workflow.process.core.node.CompositeNode) ExecutableProcessInstance(io.automatiko.engine.workflow.process.executable.instance.ExecutableProcessInstance) InternalProcessRuntime(io.automatiko.engine.workflow.base.instance.InternalProcessRuntime) EventSubProcessNodeInstance(io.automatiko.engine.workflow.process.instance.node.EventSubProcessNodeInstance) NodeInstance(io.automatiko.engine.workflow.process.instance.NodeInstance) FaultNodeInstance(io.automatiko.engine.workflow.process.instance.node.FaultNodeInstance) CompositeNodeInstance(io.automatiko.engine.workflow.process.instance.node.CompositeNodeInstance) StateBasedNodeInstance(io.automatiko.engine.workflow.process.instance.node.StateBasedNodeInstance) StartNodeInstance(io.automatiko.engine.workflow.process.instance.node.StartNodeInstance) EndNodeInstance(io.automatiko.engine.workflow.process.instance.node.EndNodeInstance) EventNodeInstance(io.automatiko.engine.workflow.process.instance.node.EventNodeInstance) EventNodeInstance(io.automatiko.engine.workflow.process.instance.node.EventNodeInstance) Map(java.util.Map) HashMap(java.util.HashMap) WorkflowProcessInstance(io.automatiko.engine.workflow.process.instance.WorkflowProcessInstance)

Aggregations

WorkflowProcessInstance (io.automatiko.engine.workflow.process.instance.WorkflowProcessInstance)7 HashMap (java.util.HashMap)5 ProcessInstance (io.automatiko.engine.api.runtime.process.ProcessInstance)3 InternalProcessRuntime (io.automatiko.engine.workflow.base.instance.InternalProcessRuntime)3 IdentityProvider (io.automatiko.engine.api.auth.IdentityProvider)2 Node (io.automatiko.engine.api.definition.process.Node)2 Variable (io.automatiko.engine.workflow.base.core.context.variable.Variable)2 MockDataWorkItemHandler (io.automatiko.engine.workflow.base.instance.impl.demo.MockDataWorkItemHandler)2 EndNode (io.automatiko.engine.workflow.process.core.node.EndNode)2 StartNode (io.automatiko.engine.workflow.process.core.node.StartNode)2 ExecutableProcess (io.automatiko.engine.workflow.process.executable.core.ExecutableProcess)2 Person (io.automatiko.engine.workflow.process.test.Person)2 AbstractBaseTest (io.automatiko.engine.workflow.test.util.AbstractBaseTest)2 ArrayList (java.util.ArrayList)2 Map (java.util.Map)2 Set (java.util.Set)2 Test (org.junit.jupiter.api.Test)2 AccessPolicy (io.automatiko.engine.api.auth.AccessPolicy)1 SecurityPolicy (io.automatiko.engine.api.auth.SecurityPolicy)1 TrustedIdentityProvider (io.automatiko.engine.api.auth.TrustedIdentityProvider)1