
org.tinygroup.flowplugin.FlowPluginProcessor Maven / Gradle / Ivy
The newest version!
/**
* Copyright (c) 1997-2013, tinygroup.org ([email protected]).
*
* Licensed under the GPL, Version 3.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.gnu.org/licenses/gpl.html
*
* 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.
* --------------------------------------------------------------------------
* 版权 (c) 1997-2013, tinygroup.org ([email protected]).
*
* 本开源软件遵循 GPL 3.0 协议;
* 如果您不遵循此协议,则不被允许使用此文件。
* 你可以从下面的地址获取完整的协议文本
*
* http://www.gnu.org/licenses/gpl.html
*/
package org.tinygroup.flowplugin;
import java.util.ArrayList;
import java.util.List;
import org.tinygroup.cepcore.CEPCore;
import org.tinygroup.cepcore.impl.AbstractEventProcessor;
import org.tinygroup.context.Context;
import org.tinygroup.event.Event;
import org.tinygroup.event.ServiceInfo;
import org.tinygroup.flow.FlowExecutor;
import org.tinygroup.flow.config.Flow;
import org.tinygroup.logger.LogLevel;
import org.tinygroup.logger.Logger;
import org.tinygroup.logger.LoggerFactory;
public class FlowPluginProcessor extends AbstractEventProcessor {
/**
* 流程执行器,用于执行具体的Service
*/
private List executors = new ArrayList();
private static Logger logger = LoggerFactory
.getLogger(FlowPluginProcessor.class);
public void process(Event event) {
Flow flow = null;
FlowExecutor flowExecutor = null;
String nodeId = null;
String serviceId = event.getServiceRequest().getServiceId();
String flowId = serviceId;
String[] str = serviceId.split(":");
if (str.length > 1) {
nodeId = str[str.length - 1];
flowId = serviceId.substring(0,
serviceId.length() - nodeId.length() - 1);
}
for (FlowExecutor executor : executors) {
flow = executor.getFlow(flowId);
if (flow != null) {
flowExecutor = executor;
break;
}
}
if (flow != null) {
flowExecutor.execute(flowId, nodeId, (Context) event
.getServiceRequest().getContext());
} else {
logger.logMessage(LogLevel.ERROR, "[Flow:{0}]不存在或无合适的Flow流程执行器",
flowId);
throw new RuntimeException("[Flow:" + flowId + "]不存在或无合适的Flow流程执行器");
}
}
public void setCepCore(CEPCore cepCore) {
}
public void addExecutor(FlowExecutor executor) {
this.executors.add(executor);
}
public List getServiceInfos() {
List list = new ArrayList();
for (Flow f : executors.get(0).getFlowIdMap().values()) {
list.add(f);
}
return list;
}
}
© 2015 - 2025 Weber Informatics LLC | Privacy Policy