clark
June 2, 2020, 2:26am
1
Hi! I am able to start processes & tasks through these services without authenticating a valid user. I want to know how to force the Java api to look for an authenticated user before executing?I am using Camunda BPM 7.13. I am trying use IdentityService.setAuthenticatedUserId
,It will appear
Preformatted text org.camunda.bpm.engine.exception.NullValueException: no processes deployed with key '***': processDefinition is null
.
If I cancel this method, startProcessInstanceByKey
will be success!
Hi @clark ,
your way to authenticate is correct. But you have to authorize your user to start the process instance. The user has to have authorization on the process definition and the process instance. https://docs.camunda.org/manual/7.13/user-guide/process-engine/authorization-service/ .
Hope this helps, Ingo
1 Like
clark
June 2, 2020, 8:02am
3
Thanks! I am trying
org.camunda.bpm.engine.authorization.Authorization authProcessDefinition = authorizationService.createNewAuthorization(1);
org.camunda.bpm.engine.authorization.Authorization authProcessInstance = authorizationService.createNewAuthorization(1);
authProcessDefinition.setUserId(“02004361”);
authProcessInstance.setUserId(“02004361”);
authProcessInstance.setResource(Resources.PROCESS_INSTANCE);
authProcessDefinition.setResource(Resources.PROCESS_DEFINITION);
authProcessInstance.setResourceId("");
authProcessDefinition.setResourceId(" ");
authProcessDefinition.addPermission(Permissions.CREATE_INSTANCE);
authProcessInstance.addPermission(Permissions.CREATE);
authorizationService.saveAuthorization(authProcessDefinition);
authorizationService.saveAuthorization(authProcessInstance);
processEngineConfiguration.setAuthorizationEnabled(true);
apiIdentityService.setAuthenticatedUserId(userId);
ProcessInstance processInstance = apiRuntimeService.startProcessInstanceByKey(processDefinitionKey,businessKey,variables);
but still exist erro. Please help me . :皱眉:
Hi @clark
should be:
authProcessInstance.setResourceId("*");
authProcessDefinition.setResourceId("yourProcessDefinitionID");
Hope this helps, Ingo
clark
June 2, 2020, 10:00am
5
Thanks! All the problems have been solved. :咧着嘴笑: