Skip to content

Commit

Permalink
[DROOLS-1649] ServiceRegistry refactor (#923)
Browse files Browse the repository at this point in the history
[DROOLS-1649] ServiceRegistry refactor
  • Loading branch information
mariofusco committed Jul 28, 2017
1 parent cd0aad4 commit 6fdc5f0
Show file tree
Hide file tree
Showing 23 changed files with 92 additions and 207 deletions.
28 changes: 5 additions & 23 deletions jbpm-bpmn2/src/main/java/org/jbpm/osgi/bpmn2/Activator.java
Expand Up @@ -16,29 +16,11 @@


package org.jbpm.osgi.bpmn2; package org.jbpm.osgi.bpmn2;


import java.util.Hashtable; import org.drools.core.osgi.BaseActivator;


import org.drools.compiler.compiler.BPMN2ProcessProvider; public class Activator extends BaseActivator {
import org.jbpm.bpmn2.BPMN2ProcessProviderImpl;
import org.kie.api.Service;
import org.osgi.framework.BundleActivator;
import org.osgi.framework.BundleContext;
import org.osgi.framework.ServiceRegistration;


public class Activator public Activator() {
implements super( Activator.class.getClassLoader() );
BundleActivator {
private ServiceRegistration bpmn2ProcessReg;

@SuppressWarnings("unchecked")
public void start(BundleContext bc) throws Exception {
this.bpmn2ProcessReg = bc.registerService( new String[]{ BPMN2ProcessProvider.class.getName(), Service.class.getName()},
new BPMN2ProcessProviderImpl(),
new Hashtable() );
}

public void stop(BundleContext bc) throws Exception {
this.bpmn2ProcessReg.unregister();
} }

}
}
2 changes: 2 additions & 0 deletions jbpm-bpmn2/src/main/resources/META-INF/kie.conf
@@ -0,0 +1,2 @@
kie.services.org.drools.compiler.compiler.BPMN2ProcessProvider=org.jbpm.bpmn2.BPMN2ProcessProviderImpl
kie.services.org.jbpm.process.core.impl.XmlProcessDumperFactoryService=org.jbpm.bpmn2.xml.XmlProcessDumperFactoryServiceImpl
Expand Up @@ -16,6 +16,10 @@


package org.jbpm.casemgmt.impl.command; package org.jbpm.casemgmt.impl.command;


import java.util.HashMap;
import java.util.Map;
import java.util.Map.Entry;

import org.drools.core.command.impl.ExecutableCommand; import org.drools.core.command.impl.ExecutableCommand;
import org.drools.core.command.impl.RegistryContext; import org.drools.core.command.impl.RegistryContext;
import org.drools.core.common.InternalKnowledgeRuntime; import org.drools.core.common.InternalKnowledgeRuntime;
Expand All @@ -27,22 +31,18 @@
import org.jbpm.services.api.ProcessService; import org.jbpm.services.api.ProcessService;
import org.kie.api.KieServices; import org.kie.api.KieServices;
import org.kie.api.command.KieCommands; import org.kie.api.command.KieCommands;
import org.kie.api.runtime.Context;
import org.kie.api.runtime.EnvironmentName; import org.kie.api.runtime.EnvironmentName;
import org.kie.api.runtime.KieRuntime;
import org.kie.api.runtime.KieSession; import org.kie.api.runtime.KieSession;
import org.kie.internal.KieInternalServices; import org.kie.internal.KieInternalServices;
import org.kie.internal.identity.IdentityProvider; import org.kie.internal.identity.IdentityProvider;
import org.kie.api.runtime.Context;
import org.kie.internal.process.CorrelationKey; import org.kie.internal.process.CorrelationKey;
import org.kie.internal.process.CorrelationKeyFactory; import org.kie.internal.process.CorrelationKeyFactory;
import org.kie.internal.runtime.KnowledgeRuntime;
import org.kie.internal.runtime.manager.context.CaseContext; import org.kie.internal.runtime.manager.context.CaseContext;
import org.slf4j.Logger; import org.slf4j.Logger;
import org.slf4j.LoggerFactory; import org.slf4j.LoggerFactory;


import java.util.HashMap;
import java.util.Map;
import java.util.Map.Entry;

public class StartCaseCommand extends CaseCommand<Void> { public class StartCaseCommand extends CaseCommand<Void> {


private static final long serialVersionUID = 6811181095390934146L; private static final long serialVersionUID = 6811181095390934146L;
Expand Down Expand Up @@ -105,7 +105,7 @@ public Void execute(Context context) {
name, name,
null, entry.getValue(), null, entry.getValue(),
pi, pi,
(KnowledgeRuntime) ksession); (KieRuntime) ksession );
} }
} }
return null; return null;
Expand Down
Expand Up @@ -15,33 +15,19 @@


package org.jbpm.osgi.flow.compiler; package org.jbpm.osgi.flow.compiler;


import org.drools.compiler.compiler.ProcessBuilderFactory; import org.drools.core.osgi.BaseActivator;
import org.drools.compiler.compiler.ProcessBuilderFactoryService;
import org.jbpm.process.builder.ProcessBuilderFactoryServiceImpl;
import org.kie.api.Service;
import org.kie.api.runtime.manager.RuntimeManagerFactory; import org.kie.api.runtime.manager.RuntimeManagerFactory;
import org.osgi.framework.BundleActivator;
import org.osgi.framework.BundleContext; import org.osgi.framework.BundleContext;
import org.osgi.framework.ServiceRegistration;


import java.util.Hashtable; public class Activator extends BaseActivator {


public class Activator public Activator() {
implements super( Activator.class.getClassLoader() );
BundleActivator {

private ServiceRegistration processBuilderReg;

public void start(BundleContext bc) throws Exception {
this.processBuilderReg = bc.registerService( new String[]{ ProcessBuilderFactoryService.class.getName(), Service.class.getName()},
new ProcessBuilderFactoryServiceImpl(),
new Hashtable() );
RuntimeManagerFactory.Factory.reset();
ProcessBuilderFactory.reInitializeProvider();
} }


public void stop(BundleContext bc) throws Exception { @Override
this.processBuilderReg.unregister(); public void start(BundleContext context) throws Exception {
RuntimeManagerFactory.Factory.reset();
super.start(context);
} }

}
}
1 change: 1 addition & 0 deletions jbpm-flow-builder/src/main/resources/META-INF/kie.conf
@@ -0,0 +1 @@
kie.services.org.drools.compiler.compiler.ProcessBuilderFactoryService=org.jbpm.process.builder.ProcessBuilderFactoryServiceImpl
40 changes: 5 additions & 35 deletions jbpm-flow/src/main/java/org/jbpm/osgi/flow/core/Activator.java
Expand Up @@ -16,41 +16,11 @@


package org.jbpm.osgi.flow.core; package org.jbpm.osgi.flow.core;


import org.drools.core.marshalling.impl.ProcessMarshallerFactoryService; import org.drools.core.osgi.BaseActivator;
import org.drools.core.runtime.process.ProcessRuntimeFactory;
import org.drools.core.runtime.process.ProcessRuntimeFactoryService;
import org.jbpm.marshalling.impl.ProcessMarshallerFactoryServiceImpl;
import org.jbpm.process.instance.ProcessRuntimeFactoryServiceImpl;
import org.kie.api.Service;
import org.kie.api.runtime.manager.RuntimeManagerFactory;
import org.osgi.framework.BundleActivator;
import org.osgi.framework.BundleContext;
import org.osgi.framework.ServiceRegistration;


import java.util.Hashtable; public class Activator extends BaseActivator {


public class Activator public Activator() {
implements super( Activator.class.getClassLoader() );
BundleActivator {
private ServiceRegistration processRuntimeReg;

private ServiceRegistration processRuntimeReg2;

public void start(BundleContext bc) throws Exception {
this.processRuntimeReg = bc.registerService( new String[]{ ProcessRuntimeFactoryService.class.getName(), Service.class.getName()},
new ProcessRuntimeFactoryServiceImpl(),
new Hashtable() );
this.processRuntimeReg2 = bc.registerService( new String[]{ ProcessMarshallerFactoryService.class.getName(), Service.class.getName()},
new ProcessMarshallerFactoryServiceImpl(),
new Hashtable() );
RuntimeManagerFactory.Factory.reset();
ProcessRuntimeFactory.reInitializeProvider();
} }

}
public void stop(BundleContext bc) throws Exception {
this.processRuntimeReg.unregister();
this.processRuntimeReg2.unregister();

}

}
Expand Up @@ -15,7 +15,7 @@


package org.jbpm.process.core.impl; package org.jbpm.process.core.impl;


import org.kie.internal.utils.ServiceRegistryImpl; import org.kie.api.internal.utils.ServiceRegistry;


public class XmlProcessDumperFactory { public class XmlProcessDumperFactory {


Expand All @@ -29,16 +29,11 @@ public static synchronized void setXmlProcessDumperFactoryService(XmlProcessDump
XmlProcessDumperFactory.service = service; XmlProcessDumperFactory.service = service;
} }


public static synchronized XmlProcessDumperFactoryService getXmlProcessDumperFactoryService() { public static XmlProcessDumperFactoryService getXmlProcessDumperFactoryService() {
if (service == null) { return LazyHolder.service;
loadProvider();
}
return service;
} }


private static void loadProvider() { private static class LazyHolder {
ServiceRegistryImpl.getInstance().addDefault( XmlProcessDumperFactoryService.class, "org.jbpm.bpmn2.xml.XmlProcessDumperFactoryServiceImpl" ); private static final XmlProcessDumperFactoryService service = ServiceRegistry.getInstance().get( XmlProcessDumperFactoryService.class );
setXmlProcessDumperFactoryService(ServiceRegistryImpl.getInstance().get( XmlProcessDumperFactoryService.class ) );
} }

} }
Expand Up @@ -15,24 +15,24 @@
*/ */
package org.jbpm.process.instance; package org.jbpm.process.instance;


import org.kie.api.KieBase;
import org.kie.api.definition.process.Process;
import org.kie.internal.runtime.KnowledgeRuntime;
import org.kie.api.runtime.process.ProcessInstance;

import java.lang.reflect.Constructor; import java.lang.reflect.Constructor;
import java.util.Collection; import java.util.Collection;
import java.util.Collections; import java.util.Collections;
import java.util.Comparator; import java.util.Comparator;
import java.util.Map; import java.util.Map;


import org.kie.api.KieBase;
import org.kie.api.definition.process.Process;
import org.kie.api.runtime.KieRuntime;
import org.kie.api.runtime.process.ProcessInstance;

public final class StartProcessHelper { public final class StartProcessHelper {


public static final String PROCESS_COMPARATOR_CLASS_KEY = "jbpm.process.name.comparator"; public static final String PROCESS_COMPARATOR_CLASS_KEY = "jbpm.process.name.comparator";


private static String comparatorClass = System.getProperty(PROCESS_COMPARATOR_CLASS_KEY); private static String comparatorClass = System.getProperty(PROCESS_COMPARATOR_CLASS_KEY);


public static ProcessInstance startProcessByName(KnowledgeRuntime kruntime, String name, Map<String, Object> parameters) { public static ProcessInstance startProcessByName( KieRuntime kruntime, String name, Map<String, Object> parameters ) {
if (name == null) { if (name == null) {
throw new IllegalArgumentException("Name cannot be null"); throw new IllegalArgumentException("Name cannot be null");
} }
Expand All @@ -44,7 +44,7 @@ public static ProcessInstance startProcessByName(KnowledgeRuntime kruntime, Stri
return kruntime.startProcess(processId, parameters); return kruntime.startProcess(processId, parameters);
} }


public static ProcessInstance startProcessByName(KnowledgeRuntime kruntime, String name, Map<String, Object> parameters, Comparator<Process> comparator) { public static ProcessInstance startProcessByName(KieRuntime kruntime, String name, Map<String, Object> parameters, Comparator<Process> comparator) {
if (name == null) { if (name == null) {
throw new IllegalArgumentException("Name cannot be null"); throw new IllegalArgumentException("Name cannot be null");
} }
Expand Down
Expand Up @@ -16,8 +16,6 @@


package org.jbpm.workflow.instance.impl; package org.jbpm.workflow.instance.impl;


import static org.jbpm.workflow.instance.impl.DummyEventListener.EMPTY_EVENT_LISTENER;

import java.util.ArrayList; import java.util.ArrayList;
import java.util.Collection; import java.util.Collection;
import java.util.Collections; import java.util.Collections;
Expand Down Expand Up @@ -59,19 +57,21 @@
import org.kie.api.definition.process.NodeContainer; import org.kie.api.definition.process.NodeContainer;
import org.kie.api.definition.process.WorkflowProcess; import org.kie.api.definition.process.WorkflowProcess;
import org.kie.api.runtime.EnvironmentName; import org.kie.api.runtime.EnvironmentName;
import org.kie.api.runtime.KieRuntime;
import org.kie.api.runtime.manager.RuntimeEngine; import org.kie.api.runtime.manager.RuntimeEngine;
import org.kie.api.runtime.manager.RuntimeManager; import org.kie.api.runtime.manager.RuntimeManager;
import org.kie.api.runtime.process.EventListener; import org.kie.api.runtime.process.EventListener;
import org.kie.api.runtime.process.NodeInstanceContainer; import org.kie.api.runtime.process.NodeInstanceContainer;
import org.kie.internal.process.CorrelationKey; import org.kie.internal.process.CorrelationKey;
import org.kie.internal.runtime.KnowledgeRuntime;
import org.kie.internal.runtime.manager.InternalRuntimeManager; import org.kie.internal.runtime.manager.InternalRuntimeManager;
import org.kie.internal.runtime.manager.SessionNotFoundException; import org.kie.internal.runtime.manager.SessionNotFoundException;
import org.kie.internal.runtime.manager.context.CaseContext; import org.kie.internal.runtime.manager.context.CaseContext;
import org.kie.internal.runtime.manager.context.ProcessInstanceIdContext; import org.kie.internal.runtime.manager.context.ProcessInstanceIdContext;
import org.slf4j.Logger; import org.slf4j.Logger;
import org.slf4j.LoggerFactory; import org.slf4j.LoggerFactory;


import static org.jbpm.workflow.instance.impl.DummyEventListener.EMPTY_EVENT_LISTENER;

/** /**
* Default implementation of a RuleFlow process instance. * Default implementation of a RuleFlow process instance.
* *
Expand Down Expand Up @@ -373,7 +373,7 @@ public void setState(final int state, String outcome) {
} }


RuntimeEngine runtime = manager.getRuntimeEngine(context); RuntimeEngine runtime = manager.getRuntimeEngine(context);
KnowledgeRuntime managedkruntime = (KnowledgeRuntime) runtime.getKieSession(); KieRuntime managedkruntime = (KieRuntime) runtime.getKieSession();
managedkruntime.signalEvent("processInstanceCompleted:" + getId(), this); managedkruntime.signalEvent("processInstanceCompleted:" + getId(), this);
} catch (SessionNotFoundException e) { } catch (SessionNotFoundException e) {
// in case no session is found for parent process let's skip signal for process instance completion // in case no session is found for parent process let's skip signal for process instance completion
Expand Down
Expand Up @@ -16,21 +16,25 @@


package org.jbpm.workflow.instance.node; package org.jbpm.workflow.instance.node;


import java.util.*; import java.util.ArrayList;
import java.util.HashMap;
import java.util.Iterator;
import java.util.List;
import java.util.Map;
import java.util.Map.Entry; import java.util.Map.Entry;
import java.util.regex.Matcher; import java.util.regex.Matcher;
import java.util.stream.Collectors; import java.util.stream.Collectors;


import org.apache.commons.lang3.exception.ExceptionUtils; import org.apache.commons.lang3.exception.ExceptionUtils;
import org.drools.core.common.InternalAgenda; import org.drools.core.common.InternalAgenda;
import org.drools.core.common.InternalKnowledgeRuntime; import org.drools.core.common.InternalKnowledgeRuntime;
import org.jbpm.process.core.datatype.DataType;
import org.drools.core.util.MVELSafeHelper; import org.drools.core.util.MVELSafeHelper;
import org.jbpm.process.core.Context; import org.jbpm.process.core.Context;
import org.jbpm.process.core.ContextContainer; import org.jbpm.process.core.ContextContainer;
import org.jbpm.process.core.context.exception.ExceptionScope; import org.jbpm.process.core.context.exception.ExceptionScope;
import org.jbpm.process.core.context.variable.Variable; import org.jbpm.process.core.context.variable.Variable;
import org.jbpm.process.core.context.variable.VariableScope; import org.jbpm.process.core.context.variable.VariableScope;
import org.jbpm.process.core.datatype.DataType;
import org.jbpm.process.core.impl.DataTransformerRegistry; import org.jbpm.process.core.impl.DataTransformerRegistry;
import org.jbpm.process.instance.ContextInstance; import org.jbpm.process.instance.ContextInstance;
import org.jbpm.process.instance.ContextInstanceContainer; import org.jbpm.process.instance.ContextInstanceContainer;
Expand All @@ -44,18 +48,17 @@
import org.jbpm.workflow.core.node.Transformation; import org.jbpm.workflow.core.node.Transformation;
import org.jbpm.workflow.instance.WorkflowRuntimeException; import org.jbpm.workflow.instance.WorkflowRuntimeException;
import org.jbpm.workflow.instance.impl.NodeInstanceResolverFactory; import org.jbpm.workflow.instance.impl.NodeInstanceResolverFactory;
import org.kie.api.runtime.KieRuntime;
import org.kie.api.runtime.KieSession; import org.kie.api.runtime.KieSession;
import org.kie.api.runtime.process.DataTransformer; import org.kie.api.runtime.process.DataTransformer;
import org.kie.api.runtime.process.EventListener; import org.kie.api.runtime.process.EventListener;
import org.kie.api.runtime.process.NodeInstance; import org.kie.api.runtime.process.NodeInstance;
import org.kie.api.runtime.rule.ConsequenceException;
import org.kie.api.runtime.rule.FactHandle; import org.kie.api.runtime.rule.FactHandle;
import org.kie.dmn.api.core.DMNContext; import org.kie.dmn.api.core.DMNContext;
import org.kie.dmn.api.core.DMNMessage.Severity; import org.kie.dmn.api.core.DMNMessage.Severity;
import org.kie.dmn.api.core.DMNModel; import org.kie.dmn.api.core.DMNModel;
import org.kie.dmn.api.core.DMNResult; import org.kie.dmn.api.core.DMNResult;
import org.kie.dmn.api.core.DMNRuntime; import org.kie.dmn.api.core.DMNRuntime;
import org.kie.internal.runtime.KnowledgeRuntime;
import org.kie.internal.runtime.StatefulKnowledgeSession; import org.kie.internal.runtime.StatefulKnowledgeSession;
import org.mvel2.integration.impl.MapVariableResolverFactory; import org.mvel2.integration.impl.MapVariableResolverFactory;
import org.slf4j.Logger; import org.slf4j.Logger;
Expand Down Expand Up @@ -94,7 +97,7 @@ public void internalTrigger(final NodeInstance from, String type) {
throw new IllegalArgumentException("A RuleSetNode only accepts default incoming connections!"); throw new IllegalArgumentException("A RuleSetNode only accepts default incoming connections!");
} }
RuleSetNode ruleSetNode = getRuleSetNode(); RuleSetNode ruleSetNode = getRuleSetNode();
KnowledgeRuntime kruntime = getProcessInstance().getKnowledgeRuntime(); KieRuntime kruntime = getProcessInstance().getKnowledgeRuntime();
Map<String, Object> inputs = evaluateParameters(ruleSetNode); Map<String, Object> inputs = evaluateParameters(ruleSetNode);


if (ruleSetNode.isDMN()) { if (ruleSetNode.isDMN()) {
Expand Down Expand Up @@ -220,7 +223,7 @@ public void signalEvent(String type, Object event) {


public void retractFacts() { public void retractFacts() {
Map<String, Object> objects = new HashMap<String, Object>(); Map<String, Object> objects = new HashMap<String, Object>();
KnowledgeRuntime kruntime = getProcessInstance().getKnowledgeRuntime(); KieRuntime kruntime = getProcessInstance().getKnowledgeRuntime();


for (Entry<String, FactHandle> entry : factHandles.entrySet()) { for (Entry<String, FactHandle> entry : factHandles.entrySet()) {


Expand Down
Expand Up @@ -49,9 +49,9 @@
import org.jbpm.workflow.instance.impl.NodeInstanceResolverFactory; import org.jbpm.workflow.instance.impl.NodeInstanceResolverFactory;
import org.jbpm.workflow.instance.impl.WorkflowProcessInstanceImpl; import org.jbpm.workflow.instance.impl.WorkflowProcessInstanceImpl;
import org.kie.api.event.rule.MatchCreatedEvent; import org.kie.api.event.rule.MatchCreatedEvent;
import org.kie.api.runtime.KieRuntime;
import org.kie.api.runtime.process.EventListener; import org.kie.api.runtime.process.EventListener;
import org.kie.api.runtime.process.NodeInstance; import org.kie.api.runtime.process.NodeInstance;
import org.kie.internal.runtime.KnowledgeRuntime;
import org.slf4j.Logger; import org.slf4j.Logger;
import org.slf4j.LoggerFactory; import org.slf4j.LoggerFactory;


Expand Down Expand Up @@ -106,7 +106,7 @@ public void internalTrigger(NodeInstance from, String type) {


protected TimerInstance createTimerInstance(Timer timer) { protected TimerInstance createTimerInstance(Timer timer) {
TimerInstance timerInstance = new TimerInstance(); TimerInstance timerInstance = new TimerInstance();
KnowledgeRuntime kruntime = getProcessInstance().getKnowledgeRuntime(); KieRuntime kruntime = getProcessInstance().getKnowledgeRuntime();
if (kruntime != null && kruntime.getEnvironment().get("jbpm.business.calendar") != null){ if (kruntime != null && kruntime.getEnvironment().get("jbpm.business.calendar") != null){
BusinessCalendar businessCalendar = (BusinessCalendar) kruntime.getEnvironment().get("jbpm.business.calendar"); BusinessCalendar businessCalendar = (BusinessCalendar) kruntime.getEnvironment().get("jbpm.business.calendar");
String delay = null; String delay = null;
Expand Down

0 comments on commit 6fdc5f0

Please sign in to comment.