/* * Copyright (c) NASK, NCSC * * This file is part of HoneySpider Network 2.1. * * This is a free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation, either version 3 of the License, or * (at your option) any later version. * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * You should have received a copy of the GNU General Public License * along with this program. If not, see <http://www.gnu.org/licenses/>. */ package pl.nask.hsn2.activiti; import java.util.List; import org.activiti.engine.impl.pvm.PvmProcessDefinition; import org.activiti.engine.impl.pvm.delegate.ActivityBehavior; import pl.nask.hsn2.activiti.behavior.DecisionActivityBehavior; import pl.nask.hsn2.activiti.behavior.EmptyBehavior; import pl.nask.hsn2.activiti.behavior.ScriptBehavior; import pl.nask.hsn2.activiti.behavior.ServiceBehavior; import pl.nask.hsn2.activiti.behavior.StartBehavior; import pl.nask.hsn2.activiti.behavior.TransientParallelGatewayBehavior; import pl.nask.hsn2.activiti.behavior.WaitBehavior; import pl.nask.hsn2.bus.api.BusManager; import pl.nask.hsn2.bus.operations.TaskErrorReasonType; import pl.nask.hsn2.expressions.ExpressionResolver; import pl.nask.hsn2.expressions.OgnlExpressionResolver; import pl.nask.hsn2.framework.bus.FrameworkBus; import pl.nask.hsn2.framework.workflow.engine.ProcessDefinitionRegistry; import pl.nask.hsn2.framework.workflow.hwl.Output; import pl.nask.hsn2.framework.workflow.hwl.ServiceParam; public final class BehaviorFactoryImpl implements BehaviorFactory { private final ActivityBehavior emptyBehavior = new EmptyBehavior(); private ExpressionResolver expressionResolver; public BehaviorFactoryImpl() { this.expressionResolver = new OgnlExpressionResolver(((FrameworkBus)BusManager.getBus()).getObjectStoreConnector()); } @Override public ActivityBehavior decisionBehaviorInstance(String condition) { return new DecisionActivityBehavior(condition, expressionResolver); } @Override public ActivityBehavior emptyBehaviorInstance() { return emptyBehavior; } @Override public ActivityBehavior forkBehaviorInstance() { return new TransientParallelGatewayBehavior(); } @Override public ActivityBehavior joinBehaviorInstance() { return new TransientParallelGatewayBehavior(); } @Override public ActivityBehavior waitBehavior(String expression) { return new WaitBehavior(expression, expressionResolver); } @Override public ActivityBehavior serviceBehaviorInstance(String serviceName, String id, List<ServiceParam> parameters, List<Output> outputs, ProcessDefinitionRegistry<PvmProcessDefinition> definitionRegistry,List<TaskErrorReasonType> ignoredErrors) { return new ServiceBehavior(serviceName, id, ServiceParam.getAsProperties(parameters), outputs, expressionResolver, definitionRegistry,ignoredErrors); } @Override public ActivityBehavior startBehavior() { return new StartBehavior(); } @Override public ActivityBehavior scriptBehavior(String scriptBody) { return new ScriptBehavior(scriptBody, expressionResolver); } }