Пример #1
0
        public virtual void testProcessApplicationDeploymentResumePreviousVersionsByDeploymentNameNoResume()
        {
            BpmnModelInstance            process1   = Bpmn.createExecutableProcess("process1").done();
            ProcessApplicationDeployment deployment = repositoryService.createDeployment(processApplication.Reference).name("deployment").addModelInstance("process1.bpmn", process1).deploy();

            assertThatOneProcessIsDeployed();

            ProcessApplicationDeployment deployment2 = repositoryService.createDeployment(processApplication.Reference).name("anotherDeployment").resumePreviousVersions().resumePreviousVersionsBy(ResumePreviousBy.RESUME_BY_DEPLOYMENT_NAME).addModelInstance("process2.bpmn", process1).deploy();

            IList <ProcessDefinition> processDefinitions = repositoryService.createProcessDefinitionQuery().orderByProcessDefinitionVersion().asc().list();

            // there is a new version of the process
            assertEquals(1, processDefinitions[0].Version);
            assertEquals(2, processDefinitions[1].Version);

            // but the old deployment was not resumed
            ProcessApplicationRegistration registration = deployment2.ProcessApplicationRegistration;
            ISet <string> deploymentIds = registration.DeploymentIds;

            assertEquals(1, deploymentIds.Count);
            assertEquals(deployment2.Id, deploymentIds.GetEnumerator().next());
            assertEquals(processEngine.Name, registration.ProcessEngineName);

            deleteDeployments(deployment, deployment2);
        }
Пример #2
0
        public virtual void testProcessApplicationDeploymentResumePreviousVersionsByDeploymentName()
        {
            // create initial deployment
            ProcessApplicationDeployment deployment1 = repositoryService.createDeployment(processApplication.Reference).name("deployment").addClasspathResource("org/camunda/bpm/engine/test/api/repository/version1.bpmn20.xml").deploy();

            assertThatOneProcessIsDeployed();

            // deploy update with changes:
            ProcessApplicationDeployment deployment2 = repositoryService.createDeployment(processApplication.Reference).name("deployment").enableDuplicateFiltering(false).resumePreviousVersions().resumePreviousVersionsBy(ResumePreviousBy.RESUME_BY_DEPLOYMENT_NAME).addClasspathResource("org/camunda/bpm/engine/test/api/repository/version2.bpmn20.xml").deploy();

            IList <ProcessDefinition> processDefinitions = repositoryService.createProcessDefinitionQuery().orderByProcessDefinitionVersion().asc().list();

            // now there are 2 process definitions deployed
            assertEquals(1, processDefinitions[0].Version);
            assertEquals(2, processDefinitions[1].Version);

            // old deployment was resumed
            ProcessApplicationRegistration registration = deployment2.ProcessApplicationRegistration;
            ISet <string> deploymentIds = registration.DeploymentIds;

            assertEquals(2, deploymentIds.Count);
            assertEquals(processEngine.Name, registration.ProcessEngineName);

            deleteDeployments(deployment1, deployment2);
        }
Пример #3
0
        public virtual void testProcessApplicationDeploymentResumePreviousVersionsByDeploymentNameDeployDifferentProcesses()
        {
            BpmnModelInstance            process1   = Bpmn.createExecutableProcess("process1").done();
            BpmnModelInstance            process2   = Bpmn.createExecutableProcess("process2").done();
            ProcessApplicationDeployment deployment = repositoryService.createDeployment(processApplication.Reference).name("deployment").addModelInstance("process1.bpmn", process1).deploy();

            assertThatOneProcessIsDeployed();

            ProcessApplicationDeployment deployment2 = repositoryService.createDeployment(processApplication.Reference).name("deployment").resumePreviousVersions().resumePreviousVersionsBy(ResumePreviousBy.RESUME_BY_DEPLOYMENT_NAME).addModelInstance("process2.bpmn", process2).deploy();

            IList <ProcessDefinition> processDefinitions = repositoryService.createProcessDefinitionQuery().orderByProcessDefinitionVersion().asc().list();

            // now there are 2 process definitions deployed but both with version 1
            assertEquals(1, processDefinitions[0].Version);
            assertEquals(1, processDefinitions[1].Version);

            // old deployment was resumed
            ProcessApplicationRegistration registration = deployment2.ProcessApplicationRegistration;
            ISet <string> deploymentIds = registration.DeploymentIds;

            assertEquals(2, deploymentIds.Count);
            assertEquals(processEngine.Name, registration.ProcessEngineName);

            deleteDeployments(deployment, deployment2);
        }
Пример #4
0
        public virtual void testProcessApplicationDeploymentResumePreviousVersionsDifferentKeys()
        {
            // create initial deployment
            ProcessApplicationDeployment deployment1 = repositoryService.createDeployment(processApplication.Reference).name("deployment").addClasspathResource("org/camunda/bpm/engine/test/api/repository/version1.bpmn20.xml").deploy();

            assertThatOneProcessIsDeployed();

            // deploy update with changes:
            ProcessApplicationDeployment deployment2 = repositoryService.createDeployment(processApplication.Reference).name("deployment").resumePreviousVersions().addClasspathResource("org/camunda/bpm/engine/test/api/oneTaskProcess.bpmn20.xml").deploy();

            IList <ProcessDefinition> processDefinitions = repositoryService.createProcessDefinitionQuery().orderByProcessDefinitionVersion().asc().list();

            // now there are 2 process definitions deployed
            assertEquals(1, processDefinitions[0].Version);
            assertEquals(1, processDefinitions[1].Version);

            // and the old deployment was not resumed
            ProcessApplicationRegistration registration = deployment2.ProcessApplicationRegistration;
            ISet <string> deploymentIds = registration.DeploymentIds;

            assertEquals(1, deploymentIds.Count);
            assertEquals(deployment2.Id, deploymentIds.GetEnumerator().next());
            assertEquals(processEngine.Name, registration.ProcessEngineName);

            deleteDeployments(deployment1, deployment2);
        }
Пример #5
0
        public DeployedProcessArchive(ProcessApplicationDeployment deployment)
        {
            primaryDeploymentId = deployment.Id;
            ProcessApplicationRegistration registration = deployment.ProcessApplicationRegistration;

            allDeploymentIds  = registration.DeploymentIds;
            processEngineName = registration.ProcessEngineName;
        }
Пример #6
0
        /// <summary>
        /// Test re-deployment of only those resources that have actually changed
        /// </summary>
        public virtual void testPartialChangesDeployChangedOnly()
        {
            BpmnModelInstance model1 = Bpmn.createExecutableProcess("process1").done();
            BpmnModelInstance model2 = Bpmn.createExecutableProcess("process2").done();

            // create initial deployment
            ProcessApplicationDeployment deployment1 = repositoryService.createDeployment(processApplication.Reference).name("deployment").addModelInstance("process1.bpmn20.xml", model1).addModelInstance("process2.bpmn20.xml", model2).deploy();

            BpmnModelInstance changedModel2 = Bpmn.createExecutableProcess("process2").startEvent().done();

            // second deployment with partial changes:
            ProcessApplicationDeployment deployment2 = repositoryService.createDeployment(processApplication.Reference).name("deployment").enableDuplicateFiltering(true).resumePreviousVersions().addModelInstance("process1.bpmn20.xml", model1).addModelInstance("process2.bpmn20.xml", changedModel2).deploy();

            assertEquals(3, repositoryService.createProcessDefinitionQuery().count());

            // there is one version of process1 deployed
            ProcessDefinition processDefinitionModel1 = repositoryService.createProcessDefinitionQuery().processDefinitionKey("process1").singleResult();

            assertNotNull(processDefinitionModel1);
            assertEquals(1, processDefinitionModel1.Version);
            assertEquals(deployment1.Id, processDefinitionModel1.DeploymentId);

            // there are two versions of process2 deployed
            IList <ProcessDefinition> processDefinitionsModel2 = repositoryService.createProcessDefinitionQuery().processDefinitionKey("process2").orderByProcessDefinitionVersion().asc().list();

            assertEquals(2, processDefinitionsModel2.Count);
            assertEquals(1, processDefinitionsModel2[0].Version);
            assertEquals(2, processDefinitionsModel2[1].Version);

            // old deployment was resumed
            ProcessApplicationRegistration registration = deployment2.ProcessApplicationRegistration;
            ISet <string> deploymentIds = registration.DeploymentIds;

            assertEquals(2, deploymentIds.Count);

            BpmnModelInstance anotherChangedModel2 = Bpmn.createExecutableProcess("process2").startEvent().endEvent().done();

            // testing with a third deployment to ensure the change check is not only performed against
            // the last version of the deployment
            ProcessApplicationDeployment deployment3 = repositoryService.createDeployment(processApplication.Reference).enableDuplicateFiltering(true).resumePreviousVersions().addModelInstance("process1.bpmn20.xml", model1).addModelInstance("process2.bpmn20.xml", anotherChangedModel2).name("deployment").deploy();

            // there should still be one version of process 1
            assertEquals(1, repositoryService.createProcessDefinitionQuery().processDefinitionKey("process1").count());

            // there should be three versions of process 2
            assertEquals(3, repositoryService.createProcessDefinitionQuery().processDefinitionKey("process2").count());

            // old deployments are resumed
            registration  = deployment3.ProcessApplicationRegistration;
            deploymentIds = registration.DeploymentIds;
            assertEquals(3, deploymentIds.Count);

            deleteDeployments(deployment1, deployment2, deployment3);
        }
Пример #7
0
        public virtual void testSimpleProcessApplicationDeployment()
        {
            ProcessApplicationDeployment deployment = repositoryService.createDeployment(processApplication.Reference).addClasspathResource("org/camunda/bpm/engine/test/api/repository/version1.bpmn20.xml").deploy();

            // process is deployed:
            assertThatOneProcessIsDeployed();

            // registration was performed:
            ProcessApplicationRegistration registration = deployment.ProcessApplicationRegistration;
            ISet <string> deploymentIds = registration.DeploymentIds;

            assertEquals(1, deploymentIds.Count);
            assertEquals(processEngine.Name, registration.ProcessEngineName);

            deleteDeployments(deployment);
        }
Пример #8
0
        public virtual void testPartialChangesResumePreviousVersionByDeploymentName()
        {
            BpmnModelInstance model1 = Bpmn.createExecutableProcess("process1").done();
            BpmnModelInstance model2 = Bpmn.createExecutableProcess("process2").done();

            // create initial deployment
            ProcessApplicationDeployment deployment1 = repositoryService.createDeployment(processApplication.Reference).name("deployment").addModelInstance("process1.bpmn20.xml", model1).deploy();

            ProcessApplicationDeployment deployment2 = repositoryService.createDeployment(processApplication.Reference).name("deployment").enableDuplicateFiltering(true).resumePreviousVersions().resumePreviousVersionsBy(ResumePreviousBy.RESUME_BY_DEPLOYMENT_NAME).addModelInstance("process1.bpmn20.xml", model1).addModelInstance("process2.bpmn20.xml", model2).deploy();

            ProcessApplicationRegistration registration = deployment2.ProcessApplicationRegistration;

            assertEquals(2, registration.DeploymentIds.Count);

            deleteDeployments(deployment1, deployment2);
        }
Пример #9
0
        public virtual void testRegisterProcessApplicationAsCamundaAdmin()
        {
            // given
            identityService.setAuthentication(userId, Collections.singletonList(org.camunda.bpm.engine.authorization.Groups_Fields.CAMUNDA_ADMIN));

            EmbeddedProcessApplication  processApplication = new EmbeddedProcessApplication();
            ProcessApplicationReference reference          = processApplication.Reference;
            string deploymentId = createDeployment(null, FIRST_RESOURCE).Id;

            // when
            ProcessApplicationRegistration registration = managementService.registerProcessApplication(deploymentId, reference);

            // then
            assertNotNull(registration);
            assertNotNull(getProcessApplicationForDeployment(deploymentId));

            deleteDeployment(deploymentId);
        }
Пример #10
0
        public virtual void testProcessApplicationDeploymentNoChanges()
        {
            // create initial deployment
            ProcessApplicationDeployment deployment = repositoryService.createDeployment(processApplication.Reference).name("deployment").addClasspathResource("org/camunda/bpm/engine/test/api/repository/version1.bpmn20.xml").deploy();

            assertThatOneProcessIsDeployed();

            // deploy update with no changes:
            deployment = repositoryService.createDeployment(processApplication.Reference).name("deployment").enableDuplicateFiltering(false).addClasspathResource("org/camunda/bpm/engine/test/api/repository/version1.bpmn20.xml").deploy();

            // no changes
            assertThatOneProcessIsDeployed();
            ProcessApplicationRegistration registration = deployment.ProcessApplicationRegistration;
            ISet <string> deploymentIds = registration.DeploymentIds;

            assertEquals(1, deploymentIds.Count);
            assertEquals(processEngine.Name, registration.ProcessEngineName);

            deleteDeployments(deployment);
        }
Пример #11
0
//JAVA TO C# CONVERTER WARNING: Method 'throws' clauses are not available in .NET:
//ORIGINAL LINE: @Override public DeploymentWithDefinitions call() throws Exception
            public override DeploymentWithDefinitions call()
            {
                outerInstance.acquireExclusiveLock(commandContext);
                DeploymentEntity deployment = outerInstance.initDeployment();
                IDictionary <string, ResourceEntity> resourcesToDeploy = outerInstance.resolveResourcesToDeploy(commandContext, deployment);
                IDictionary <string, ResourceEntity> resourcesToIgnore = new Dictionary <string, ResourceEntity>(deployment.Resources);

//JAVA TO C# CONVERTER TODO TASK: There is no .NET equivalent to the java.util.Collection 'removeAll' method:
                resourcesToIgnore.Keys.removeAll(resourcesToDeploy.Keys);

                if (resourcesToDeploy.Count > 0)
                {
                    LOG.debugCreatingNewDeployment();
                    deployment.Resources = resourcesToDeploy;
                    outerInstance.deploy(deployment);
                }
                else
                {
                    LOG.usingExistingDeployment();
                    deployment = outerInstance.getExistingDeployment(commandContext, deployment.Name);
                }

                outerInstance.scheduleProcessDefinitionActivation(commandContext, deployment);

                if (outerInstance.deploymentBuilder is ProcessApplicationDeploymentBuilder)
                {
                    // for process application deployments, job executor registration is managed by
                    // process application manager
                    ISet <string> processesToRegisterFor        = outerInstance.retrieveProcessKeysFromResources(resourcesToIgnore);
                    ProcessApplicationRegistration registration = outerInstance.registerProcessApplication(commandContext, deployment, processesToRegisterFor);
                    return(new ProcessApplicationDeploymentImpl(deployment, registration));
                }
                else
                {
                    outerInstance.registerWithJobExecutor(commandContext, deployment);
                }

                return(deployment);
            }
Пример #12
0
        public virtual void testPartialChangesDeployAll()
        {
            BpmnModelInstance model1 = Bpmn.createExecutableProcess("process1").done();
            BpmnModelInstance model2 = Bpmn.createExecutableProcess("process2").done();

            // create initial deployment
            ProcessApplicationDeployment deployment1 = repositoryService.createDeployment(processApplication.Reference).name("deployment").addModelInstance("process1.bpmn20.xml", model1).addModelInstance("process2.bpmn20.xml", model2).deploy();

            BpmnModelInstance changedModel2 = Bpmn.createExecutableProcess("process2").startEvent().done();

            // second deployment with partial changes:
            ProcessApplicationDeployment deployment2 = repositoryService.createDeployment(processApplication.Reference).name("deployment").enableDuplicateFiltering(false).resumePreviousVersions().addModelInstance("process1.bpmn20.xml", model1).addModelInstance("process2.bpmn20.xml", changedModel2).deploy();

            assertEquals(4, repositoryService.createProcessDefinitionQuery().count());

            IList <ProcessDefinition> processDefinitionsModel1 = repositoryService.createProcessDefinitionQuery().processDefinitionKey("process1").orderByProcessDefinitionVersion().asc().list();

            // now there are two versions of process1 deployed
            assertEquals(2, processDefinitionsModel1.Count);
            assertEquals(1, processDefinitionsModel1[0].Version);
            assertEquals(2, processDefinitionsModel1[1].Version);

            // now there are two versions of process2 deployed
            IList <ProcessDefinition> processDefinitionsModel2 = repositoryService.createProcessDefinitionQuery().processDefinitionKey("process1").orderByProcessDefinitionVersion().asc().list();

            assertEquals(2, processDefinitionsModel2.Count);
            assertEquals(1, processDefinitionsModel2[0].Version);
            assertEquals(2, processDefinitionsModel2[1].Version);

            // old deployment was resumed
            ProcessApplicationRegistration registration = deployment2.ProcessApplicationRegistration;
            ISet <string> deploymentIds = registration.DeploymentIds;

            assertEquals(2, deploymentIds.Count);
            assertEquals(processEngine.Name, registration.ProcessEngineName);

            deleteDeployments(deployment1, deployment2);
        }
Пример #13
0
 public ProcessApplicationDeploymentImpl(DeploymentWithDefinitions deployment, ProcessApplicationRegistration registration)
 {
     this.deployment   = deployment;
     this.registration = registration;
 }