Skip to content

Commit

Permalink
BZ-1279821 - Synchronization of a deployment unit between EJB service…
Browse files Browse the repository at this point in the history
…s app and Business Central fails - missing ejb deployment service change

(cherry picked from commit 7b4254c)
  • Loading branch information
mswiderski committed Nov 23, 2015
1 parent 9580e8b commit 282ba1c
Show file tree
Hide file tree
Showing 2 changed files with 51 additions and 3 deletions.
Expand Up @@ -36,6 +36,7 @@
import org.jbpm.kie.services.impl.KModuleDeploymentUnit;
import org.jbpm.runtime.manager.impl.RuntimeManagerFactoryImpl;
import org.jbpm.runtime.manager.impl.deploy.DeploymentDescriptorImpl;
import org.jbpm.runtime.manager.impl.deploy.TransientNamedObjectModel;
import org.jbpm.services.api.DefinitionService;
import org.jbpm.services.api.DeploymentEventListener;
import org.jbpm.services.api.DeploymentService;
Expand All @@ -52,7 +53,6 @@
import org.kie.api.executor.ExecutorService;
import org.kie.internal.identity.IdentityProvider;
import org.kie.internal.runtime.conf.DeploymentDescriptor;
import org.kie.internal.runtime.conf.NamedObjectModel;

@Singleton
@ConcurrencyManagement(ConcurrencyManagementType.CONTAINER)
Expand Down Expand Up @@ -179,7 +179,7 @@ protected void addAsyncHandler(KModuleDeploymentUnit unit) {
descriptor = new DeploymentDescriptorImpl("org.jbpm.domain");
}
descriptor.getBuilder()
.addWorkItemHandler(new NamedObjectModel("ejb", "async", "org.jbpm.executor.impl.wih.AsyncWorkItemHandler",
.addWorkItemHandler(new TransientNamedObjectModel("ejb", "async", "org.jbpm.executor.impl.wih.AsyncWorkItemHandler",
new Object[]{"jndi:java:module/ExecutorServiceEJBImpl", "org.jbpm.executor.commands.PrintOutCommand"}));

unit.setDeploymentDescriptor(descriptor);
Expand Down
Expand Up @@ -40,11 +40,14 @@
import org.jboss.shrinkwrap.api.spec.WebArchive;
import org.jbpm.kie.services.impl.DeployedUnitImpl;
import org.jbpm.kie.services.impl.KModuleDeploymentUnit;
import org.jbpm.kie.services.impl.store.DeploymentStore;
import org.jbpm.services.api.model.DeployedUnit;
import org.jbpm.services.api.model.DeploymentUnit;
import org.jbpm.services.api.model.ProcessDefinition;
import org.jbpm.services.ejb.api.DeploymentServiceEJBLocal;
import org.jbpm.services.ejb.api.RuntimeDataServiceEJBLocal;
import org.jbpm.services.ejb.impl.tx.TransactionalCommandServiceEJBImpl;
import org.jbpm.shared.services.impl.TransactionalCommandService;
import org.junit.After;
import org.junit.Test;
import org.junit.runner.RunWith;
Expand All @@ -53,8 +56,9 @@
import org.kie.api.runtime.manager.RuntimeEngine;
import org.kie.api.runtime.manager.RuntimeManager;
import org.kie.api.runtime.process.ProcessInstance;
import org.kie.api.task.model.TaskSummary;
import org.kie.api.runtime.query.QueryContext;
import org.kie.api.task.model.TaskSummary;
import org.kie.internal.runtime.conf.DeploymentDescriptor;
import org.kie.internal.runtime.manager.context.EmptyContext;
import org.kie.scanner.MavenRepository;

Expand Down Expand Up @@ -154,6 +158,10 @@ protected static void deployKjar() {
@EJB
private DeploymentServiceEJBLocal deploymentService;

@EJB(beanInterface=TransactionalCommandServiceEJBImpl.class)
private TransactionalCommandService commandService;


@Test
public void testDeploymentOfProcesses() {

Expand Down Expand Up @@ -368,4 +376,44 @@ public void testDeploymentOfProcessesWithActivation() {
assertNotNull(processes);
assertEquals(5, processes.size());
}

@Test
public void testDeploymentOfProcessesVerifyTransientObjectOmitted() {

assertNotNull(deploymentService);
assertNotNull(commandService);

DeploymentUnit deploymentUnit = new KModuleDeploymentUnit(GROUP_ID, ARTIFACT_ID, VERSION);

deploymentService.deploy(deploymentUnit);
units.add(deploymentUnit);

DeployedUnit deployed = deploymentService.getDeployedUnit(deploymentUnit.getIdentifier());
assertNotNull(deployed);
assertNotNull(deployed.getDeploymentUnit());
assertNotNull(deployed.getRuntimeManager());

assertNotNull(runtimeDataService);
Collection<ProcessDefinition> processes = runtimeDataService.getProcesses(new QueryContext());
assertNotNull(processes);
assertEquals(5, processes.size());

DeploymentStore store = new DeploymentStore();
store.setCommandService(commandService);

Collection<DeploymentUnit> units = store.getEnabledDeploymentUnits();
assertNotNull(units);
assertEquals(1, units.size());

DeploymentUnit enabled = units.iterator().next();
assertNotNull(enabled);
assertTrue(enabled instanceof KModuleDeploymentUnit);

KModuleDeploymentUnit kmoduleEnabled = (KModuleDeploymentUnit) enabled;

DeploymentDescriptor dd = kmoduleEnabled.getDeploymentDescriptor();
assertNotNull(dd);
// ejb deployment service add transitively Async WorkItem handler that should not be stored as part of deployment store
assertEquals(0, dd.getWorkItemHandlers().size());
}
}

0 comments on commit 282ba1c

Please sign in to comment.