Examples of KnowledgeSession


Examples of org.switchyard.component.common.knowledge.session.KnowledgeSession

    private Throwable doTestResources(String xml) {
        try {
            ClassLoader loader = getClass().getClassLoader();
            RulesComponentImplementationModel model = _puller.pull(xml, loader);
            KnowledgeSessionFactory factory = KnowledgeSessionFactory.newSessionFactory(model, loader, null, null);
            KnowledgeSession session = factory.newStatelessSession();
            session.getStateless().execute(this);
            return null;
        } catch (Throwable t) {
            return t;
        }
    }
View Full Code Here

Examples of org.switchyard.component.common.knowledge.session.KnowledgeSession

    private Throwable doTestResources(String xml) {
        try {
            ClassLoader loader = getClass().getClassLoader();
            BPMComponentImplementationModel model = _puller.pull(xml, loader);
            KnowledgeSessionFactory factory = KnowledgeSessionFactory.newSessionFactory(model, loader, null, null);
            KnowledgeSession session = factory.newStatefulSession(null);
            session.getStateful().startProcess("TestProcess");
            return null;
        } catch (Throwable t) {
            return t;
        }
    }
View Full Code Here

Examples of org.switchyard.component.common.knowledge.session.KnowledgeSession

        BPMOperationType operationType = (BPMOperationType)operation.getType();
        switch (operationType) {
            case START_PROCESS: {
                try {
                    utx.begin();
                    KnowledgeSession session = getBPMSession(exchange, inputMessage);
                    sessionId = session.getId();
                    setGlobals(inputMessage, operation, session);
                    Map<String, Object> inputMap = getInputMap(inputMessage, operation, session);
                    ProcessInstance processInstance;
                    CorrelationKey correlationKey = getCorrelationKey(exchange, inputMessage);
                    if (correlationKey != null) {
                        processInstance = ((CorrelationAwareProcessRuntime)session.getStateful()).startProcess(_processId, correlationKey, inputMap);
                    } else {
                        processInstance = session.getStateful().startProcess(_processId, inputMap);
                    }
                    processInstanceId = Long.valueOf(processInstance.getId());
                    if (ExchangePattern.IN_OUT.equals(exchangePattern)) {
                        expressionVariables.putAll(getGlobalVariables(session));
                        expressionVariables.putAll(getProcessInstanceVariables(processInstance));
                    }
                    utx.commit();
                } catch (RuntimeException re) {
                    utx.rollback();
                    throw re;
                }
                break;
            }
            case SIGNAL_EVENT:
            case SIGNAL_EVENT_ALL: {
                try {
                    utx.begin();
                    KnowledgeSession session = getBPMSession(exchange, inputMessage);
                    sessionId = session.getId();
                    setGlobals(inputMessage, operation, session);
                    Object eventObject = getInput(inputMessage, operation, session);
                    String eventId = operation.getEventId();
                    if (BPMOperationType.SIGNAL_EVENT.equals(operationType)) {
                        processInstanceId = getProcessInstanceId(exchange, inputMessage, session);
                        if (processInstanceId == null) {
                            throw BPMMessages.MESSAGES.cannotSignalEventUnknownProcessInstanceIdOrUnknownunmatchedCorrelationKey();
                        }
                        if (ExchangePattern.IN_OUT.equals(exchangePattern)) {
                            ProcessInstance processInstance = session.getStateful().getProcessInstance(processInstanceId);
                            processInstance.signalEvent(eventId, eventObject);
                            expressionVariables.putAll(getGlobalVariables(session));
                            expressionVariables.putAll(getProcessInstanceVariables(processInstance));
                        } else {
                            session.getStateful().signalEvent(eventId, eventObject, processInstanceId);
                        }
                    } else if (BPMOperationType.SIGNAL_EVENT_ALL.equals(operationType)) {
                        session.getStateful().signalEvent(eventId, eventObject);
                        if (ExchangePattern.IN_OUT.equals(exchangePattern)) {
                            expressionVariables.putAll(getGlobalVariables(session));
                        }
                    }
                    utx.commit();
                } catch (RuntimeException re) {
                    utx.rollback();
                    throw re;
                }
                break;
            }
            case ABORT_PROCESS_INSTANCE: {
                try {
                    utx.begin();
                    KnowledgeSession session = getBPMSession(exchange, inputMessage);
                    sessionId = session.getId();
                    processInstanceId = getProcessInstanceId(exchange, inputMessage, session);
                    if (processInstanceId == null) {
                        throw BPMMessages.MESSAGES.cannotAbortProcessInstance();
                    }
                    if (ExchangePattern.IN_OUT.equals(exchangePattern)) {
                        expressionVariables.putAll(getGlobalVariables(session));
                        ProcessInstance processInstance = session.getStateful().getProcessInstance(processInstanceId);
                        expressionVariables.putAll(getProcessInstanceVariables(processInstance));
                    }
                    session.getStateful().abortProcessInstance(processInstanceId);
                    utx.commit();
                } catch (RuntimeException re) {
                    utx.rollback();
                    throw re;
                }
View Full Code Here

Examples of org.switchyard.component.common.knowledge.session.KnowledgeSession

            }
        }
    }

    private KnowledgeSession getBPMSession(Exchange exchange, Message message) {
        KnowledgeSession session;
        if (_persistent) {
            session = getPersistentSession(getSessionId(exchange, message));
        } else {
            session = getStatefulSession();
        }
        if (!session.isRemote()) {
            // none of the below is supported by the kie remote api
            Listeners.registerListener(_processEventListener, session.getStateful());
            // TODO: the use of BPMRuntimeEnvironment should be removed after SWITCHYARD-1584,
            // and the RuntimeEnvironmentBuilderFactory and RuntimeManagerFactory should be used
            final KieSession kieSession = session.getStateful();
            final String deploymentId = getDeploymentId();
            final RuntimeManagerRegistry runtimeManagerRegistry = RuntimeManagerRegistry.get();
            if (runtimeManagerRegistry.isRegistered(deploymentId)) {
                runtimeManagerRegistry.remove(deploymentId);
            }
            RuntimeEnvironment runtimeEnvironment = new BPMRuntimeEnvironment(session.getStateful(), _entityManagerFactory, _userGroupCallback, getLoader());
            AbstractRuntimeManager runtimeManager = new AbstractRuntimeManager(runtimeEnvironment, deploymentId) {
                private RuntimeEngineImpl _runtimeEngine = null;
                @Override
                public void init() {
                    _runtimeEngine = new RuntimeEngineImpl(kieSession, _taskService) {
                        @Override
                        public void dispose() {
                            // no-op
                        }
                    };
                    _runtimeEngine.setManager(this);
                }
                @Override
                public void validate(KieSession ksession, org.kie.api.runtime.manager.Context<?> context) throws IllegalStateException {
                    // no-op
                }
                @Override
                public RuntimeEngine getRuntimeEngine(org.kie.api.runtime.manager.Context<?> context) {
                    return _runtimeEngine;
                }
                @Override
                public void disposeRuntimeEngine(RuntimeEngine runtime) {
                    // no-op
                }
                @Override
                public void close() {
                    runtimeManagerRegistry.remove(deploymentId);
                }
            };
            runtimeManager.init();
            if (!runtimeManagerRegistry.isRegistered(deploymentId)) {
                runtimeManagerRegistry.register(runtimeManager);
                session.addDisposals(new KnowledgeDisposal() {
                    @Override
                    public void dispose() {
                        runtimeManagerRegistry.remove(deploymentId);
                    }
                });
            }
            WorkItemHandlers.registerWorkItemHandlers(getModel(), getLoader(), session.getStateful(), runtimeManager, getServiceDomain());
        }
        return session;
    }
View Full Code Here

Examples of org.switchyard.component.common.knowledge.session.KnowledgeSession

        ExchangePattern exchangePattern = exchange.getContract().getProviderOperation().getExchangePattern();
        Map<String, Object> expressionVariables = new HashMap<String, Object>();
        RulesOperationType operationType = (RulesOperationType)operation.getType();
        switch (operationType) {
            case EXECUTE: {
                KnowledgeSession session = newStatelessSession();
                sessionId = session.getId();
                setGlobals(inputMessage, operation, session);
                if (ExchangePattern.IN_ONLY.equals(exchangePattern)) {
                    List<Object> facts = getInputList(inputMessage, operation, session);
                    session.getStateless().execute(facts);
                } else if (ExchangePattern.IN_OUT.equals(exchangePattern)) {
                    KieCommands cmds = KieServices.Factory.get().getCommands();
                    List<Command<?>> batch = new ArrayList<Command<?>>();
                    Map<String, Object> inouts = getInputOutputMap(inputMessage, operation, session);
                    for (Entry<String, Object> inout : inouts.entrySet()) {
                        batch.add(cmds.newInsert(inout.getValue(), inout.getKey()));
                    }
                    List<Object> facts = getInputOnlyList(inputMessage, operation, session);
                    batch.add(cmds.newInsertElements(facts));
                    batch.add(cmds.newFireAllRules());
                    BatchExecutionCommand exec = cmds.newBatchExecution(batch, KnowledgeConstants.RESULT);
                    ExecutionResults results = session.getStateless().execute(exec);
                    for (String id : inouts.keySet()) {
                        expressionVariables.put(id, results.getValue(id));
                    }
                    expressionVariables.putAll(getGlobalVariables(session));
                }
                break;
            }
            case INSERT:
            case FIRE_ALL_RULES: {
                /*
                if (!isContinue(exchange)) {
                    disposeStatefulSession();
                }
                */
                KnowledgeSession session = getStatefulSession();
                sessionId = session.getId();
                setGlobals(inputMessage, operation, session);
                List<Object> facts = getInputList(inputMessage, operation, session);
                for (Object fact : facts) {
                    session.getStateful().insert(fact);
                }
                if (RulesOperationType.FIRE_ALL_RULES.equals(operationType)) {
                    session.getStateful().fireAllRules();
                }
                if (ExchangePattern.IN_OUT.equals(exchangePattern)) {
                    expressionVariables.putAll(getGlobalVariables(session));
                }
                if (isDispose(exchange, inputMessage)) {
                    disposeStatefulSession();
                }
                break;
            }
            case FIRE_UNTIL_HALT: {
                /*
                if (!isContinue(exchange, inputMessage)) {
                    disposeStatefulSession();
                }
                */
                KnowledgeSession session = getStatefulSession();
                sessionId = session.getId();
                setGlobals(inputMessage, operation, session);
                if (_fireUntilHaltThread == null) {
                    ClassLoader fireUntilHaltLoader = Classes.getTCCL();
                    if (fireUntilHaltLoader == null) {
                        fireUntilHaltLoader = getLoader();
                    }
                    FireUntilHalt fireUntilHalt = new FireUntilHalt(this, session, fireUntilHaltLoader);
                    session.addDisposals(fireUntilHalt);
                    _fireUntilHaltThread = fireUntilHalt.startThread();
                }
                final String undefinedVariable = toVariable(exchange);
                Map<String, List<Object>> inputMap = getListMap(inputMessage, operation.getInputExpressionMappings(), true, undefinedVariable);
                if (inputMap.size() > 0) {
                    for (Entry<String, List<Object>> inputEntry : inputMap.entrySet()) {
                        String key = inputEntry.getKey();
                        if (undefinedVariable.equals(key)) {
                            String eventId = Strings.trimToNull(operation.getEventId());
                            if (eventId != null) {
                                key = eventId;
                            }
                        }
                        List<Object> facts = inputEntry.getValue();
                        if (undefinedVariable.equals(key)) {
                            for (Object fact : facts) {
                                session.getStateful().insert(fact);
                            }
                        } else {
                            EntryPoint entryPoint = session.getStateful().getEntryPoint(key);
                            if (entryPoint != null) {
                                for (Object fact : facts) {
                                    entryPoint.insert(fact);
                                }
                            } else {
                                throw RulesMessages.MESSAGES.unknownEntryPoint(key);
                            }
                        }
                    }
                } else {
                    List<Object> facts = getInputList(inputMessage, operation, session);
                    for (Object fact : facts) {
                        session.getStateful().insert(fact);
                    }
                }
                if (ExchangePattern.IN_OUT.equals(exchangePattern)) {
                    expressionVariables.putAll(getGlobalVariables(session));
                }
View Full Code Here
TOP
Copyright © 2018 www.massapi.com. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.