提交 e94637c7 编写于 作者: M Miguel Ruiz 提交者: mergify[bot]

AAE-1243 Add version check before starting a process (#3039)

* AAE-1243 Add version check before starting a process

* AAE-1243 Add manifest file to conformance modules

* AAE-1243 Add manifest file to conformance modules
上级 bcdbdcd1
......@@ -54,7 +54,6 @@ import org.activiti.core.common.spring.security.policies.SecurityPolicyAccess;
import org.activiti.engine.ActivitiObjectNotFoundException;
import org.activiti.engine.RepositoryService;
import org.activiti.engine.RuntimeService;
import org.activiti.engine.repository.DeploymentQuery;
import org.activiti.engine.repository.ProcessDefinitionQuery;
import org.activiti.runtime.api.model.impl.APIDeploymentConverter;
import org.activiti.runtime.api.model.impl.APIProcessDefinitionConverter;
......@@ -125,12 +124,21 @@ public class ProcessRuntimeImpl implements ProcessRuntime {
} else {
processDefinition = repositoryService.getProcessDefinition(processDefinitionId);
}
checkIfDefinitionBelongsToCurrentAppVersion(processDefinition);
if (!securityPoliciesManager.canRead(processDefinition.getKey())) {
throw new ActivitiObjectNotFoundException("Unable to find process definition for the given id:'" + processDefinitionId + "'");
}
return processDefinitionConverter.from(processDefinition);
}
public void checkIfDefinitionBelongsToCurrentAppVersion(org.activiti.engine.repository.ProcessDefinition processDefinition){
if (!selectLatestDeployment().getVersion().equals(processDefinition.getAppVersion())) {
throw new ActivitiForbiddenException("Process definition with the given id:'" + processDefinition.getId() + "' belongs to a different application version.");
}
}
@Override
public Page<ProcessDefinition> processDefinitions(Pageable pageable) {
return processDefinitions(pageable,
......
......@@ -16,26 +16,26 @@
package org.activiti.runtime.api.impl;
import static org.mockito.Mockito.doReturn;
import static org.mockito.Mockito.mock;
import static org.mockito.Mockito.spy;
import static org.mockito.Mockito.verify;
import static org.mockito.Mockito.verifyNoMoreInteractions;
import static org.mockito.MockitoAnnotations.initMocks;
import org.activiti.api.process.model.ProcessInstance;
import org.activiti.api.process.model.builders.ProcessPayloadBuilder;
import org.activiti.api.process.model.payloads.UpdateProcessPayload;
import org.activiti.api.runtime.model.impl.DeploymentImpl;
import org.activiti.api.runtime.model.impl.ProcessInstanceImpl;
import org.activiti.core.common.spring.security.policies.ActivitiForbiddenException;
import org.activiti.core.common.spring.security.policies.ProcessSecurityPoliciesManager;
import org.activiti.engine.RepositoryService;
import org.activiti.engine.RuntimeService;
import org.activiti.engine.impl.persistence.entity.ProcessDefinitionEntityImpl;
import org.activiti.engine.runtime.ProcessInstanceQuery;
import org.activiti.runtime.api.model.impl.APIProcessInstanceConverter;
import org.junit.Before;
import org.junit.Test;
import org.mockito.Mock;
import static org.assertj.core.api.AssertionsForClassTypes.assertThatThrownBy;
import static org.mockito.Mockito.*;
import static org.mockito.MockitoAnnotations.initMocks;
public class ProcessRuntimeImplTest {
private ProcessRuntimeImpl processRuntime;
......@@ -101,4 +101,22 @@ public class ProcessRuntimeImplTest {
verifyNoMoreInteractions(internalProcess);
}
@Test
public void should_ThrowException_when_ProcessDefinitionAppVersionDiffersFromCurrentDeploymentVersion(){
//given
DeploymentImpl deployment = new DeploymentImpl();
deployment.setVersion(2);
doReturn(deployment).when(processRuntime).selectLatestDeployment();
ProcessDefinitionEntityImpl processDefinition = new ProcessDefinitionEntityImpl();
processDefinition.setId("processDefinitionId");
processDefinition.setAppVersion(1);
assertThatThrownBy(() ->processRuntime.checkIfDefinitionBelongsToCurrentAppVersion(processDefinition))
.isInstanceOf(ActivitiForbiddenException.class)
.hasMessage("Process definition with the given id:'processDefinitionId' belongs to a different application version.");
}
}
{
"createdBy": "superadminuser",
"creationDate": "2019-08-16T15:58:46.056+0000",
"lastModifiedBy": "qa-modeler-1",
"lastModifiedDate": "2019-08-16T16:03:41.941+0000",
"id": "c519a458-539f-4385-a937-2edfb4045eb9",
"name": "projectA",
"description": "",
"version": "1"
}
{
"createdBy": "superadminuser",
"creationDate": "2019-08-16T15:58:46.056+0000",
"lastModifiedBy": "qa-modeler-1",
"lastModifiedDate": "2019-08-16T16:03:41.941+0000",
"id": "c519a458-539f-4385-a937-2edfb4045eb9",
"name": "projectA",
"description": "",
"version": "1"
}
{
"createdBy": "superadminuser",
"creationDate": "2019-08-16T15:58:46.056+0000",
"lastModifiedBy": "qa-modeler-1",
"lastModifiedDate": "2019-08-16T16:03:41.941+0000",
"id": "c519a458-539f-4385-a937-2edfb4045eb9",
"name": "projectA",
"description": "",
"version": "1"
}
{
"createdBy": "superadminuser",
"creationDate": "2019-08-16T15:58:46.056+0000",
"lastModifiedBy": "qa-modeler-1",
"lastModifiedDate": "2019-08-16T16:03:41.941+0000",
"id": "c519a458-539f-4385-a937-2edfb4045eb9",
"name": "projectA",
"description": "",
"version": "1"
}
{
"createdBy": "superadminuser",
"creationDate": "2019-08-16T15:58:46.056+0000",
"lastModifiedBy": "qa-modeler-1",
"lastModifiedDate": "2019-08-16T16:03:41.941+0000",
"id": "c519a458-539f-4385-a937-2edfb4045eb9",
"name": "projectA",
"description": "",
"version": "1"
}
{
"createdBy": "superadminuser",
"creationDate": "2019-08-16T15:58:46.056+0000",
"lastModifiedBy": "qa-modeler-1",
"lastModifiedDate": "2019-08-16T16:03:41.941+0000",
"id": "c519a458-539f-4385-a937-2edfb4045eb9",
"name": "projectA",
"description": "",
"version": "1"
}
{
"createdBy": "superadminuser",
"creationDate": "2019-08-16T15:58:46.056+0000",
"lastModifiedBy": "qa-modeler-1",
"lastModifiedDate": "2019-08-16T16:03:41.941+0000",
"id": "c519a458-539f-4385-a937-2edfb4045eb9",
"name": "projectA",
"description": "",
"version": "1"
}
{
"createdBy": "superadminuser",
"creationDate": "2019-08-16T15:58:46.056+0000",
"lastModifiedBy": "qa-modeler-1",
"lastModifiedDate": "2019-08-16T16:03:41.941+0000",
"id": "c519a458-539f-4385-a937-2edfb4045eb9",
"name": "projectA",
"description": "",
"version": "1"
}
{
"createdBy": "superadminuser",
"creationDate": "2019-08-16T15:58:46.056+0000",
"lastModifiedBy": "qa-modeler-1",
"lastModifiedDate": "2019-08-16T16:03:41.941+0000",
"id": "c519a458-539f-4385-a937-2edfb4045eb9",
"name": "projectA",
"description": "",
"version": "1"
}
{
"createdBy": "superadminuser",
"creationDate": "2019-08-16T15:58:46.056+0000",
"lastModifiedBy": "qa-modeler-1",
"lastModifiedDate": "2019-08-16T16:03:41.941+0000",
"id": "c519a458-539f-4385-a937-2edfb4045eb9",
"name": "projectA",
"description": "",
"version": "1"
}
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册