use of eu.bcvsolutions.idm.core.workflow.model.dto.WorkflowProcessInstanceDto in project CzechIdMng by bcvsolutions.
the class AutomaticRoleRequestByWfInvolvedIdentityEvaluator method getPermissions.
@Override
public Set<String> getPermissions(IdmAutomaticRoleRequest entity, AuthorizationPolicy policy) {
Set<String> permissions = super.getPermissions(entity, policy);
if (entity == null || !securityService.isAuthenticated() || entity.getWfProcessId() == null) {
return permissions;
}
//
// search process instance by role request - its returned, if currently logged identity was involved in wf
WorkflowProcessInstanceDto processInstance = processService.get(entity.getWfProcessId());
if (processInstance != null) {
permissions.addAll(policy.getPermissions());
}
return permissions;
}
use of eu.bcvsolutions.idm.core.workflow.model.dto.WorkflowProcessInstanceDto in project CzechIdMng by bcvsolutions.
the class RoleRequestByWfInvolvedIdentityEvaluator method getPermissions.
@Override
public Set<String> getPermissions(IdmRoleRequest entity, AuthorizationPolicy policy) {
Set<String> permissions = super.getPermissions(entity, policy);
if (entity == null || !securityService.isAuthenticated() || entity.getWfProcessId() == null) {
return permissions;
}
//
// search process instance by role request - its returned, if currently logged identity was involved in wf
WorkflowProcessInstanceDto processInstance = processService.get(entity.getWfProcessId());
if (processInstance != null) {
permissions.addAll(policy.getPermissions());
}
return permissions;
}
use of eu.bcvsolutions.idm.core.workflow.model.dto.WorkflowProcessInstanceDto in project CzechIdMng by bcvsolutions.
the class DefaultWorkflowProcessInstanceService method searchInternal.
@Override
public ResourcesWrapper<WorkflowProcessInstanceDto> searchInternal(WorkflowFilterDto filter, boolean checkRight) {
String processDefinitionId = filter.getProcessDefinitionId();
Map<String, Object> equalsVariables = filter.getEqualsVariables();
ProcessInstanceQuery query = runtimeService.createProcessInstanceQuery();
query.active();
query.includeProcessVariables();
if (processDefinitionId != null) {
query.processDefinitionId(processDefinitionId);
}
if (filter.getProcessDefinitionKey() != null) {
query.processDefinitionKey(filter.getProcessDefinitionKey());
}
if (filter.getProcessInstanceId() != null) {
query.processInstanceId(filter.getProcessInstanceId());
}
if (filter.getCategory() != null) {
// Find definitions with this category (use double sided like)
// We have to find definitions first, because process instance can't
// be find by category.
ProcessDefinitionQuery queryDefinition = repositoryService.createProcessDefinitionQuery();
queryDefinition.active();
queryDefinition.latestVersion();
queryDefinition.processDefinitionCategoryLike(filter.getCategory() + "%");
List<ProcessDefinition> processDefinitions = queryDefinition.list();
Set<String> processDefinitionKeys = new HashSet<>();
processDefinitions.forEach(p -> processDefinitionKeys.add(p.getKey()));
if (processDefinitionKeys.isEmpty()) {
// We don`t have any definitions ... nothing must be returned
processDefinitionKeys.add("-1");
}
query.processDefinitionKeys(processDefinitionKeys);
}
if (equalsVariables != null) {
for (Entry<String, Object> entry : equalsVariables.entrySet()) {
query.variableValueEquals(entry.getKey(), entry.getValue());
}
}
// (subprocess) started. This modification allow not use OR clause.
if (checkRight && !securityService.isAdmin()) {
query.involvedUser(securityService.getCurrentId().toString());
}
query.orderByProcessDefinitionId();
query.desc();
long count = query.count();
List<ProcessInstance> processInstances = query.listPage((filter.getPageNumber()) * filter.getPageSize(), filter.getPageSize());
List<WorkflowProcessInstanceDto> dtos = new ArrayList<>();
if (processInstances != null) {
for (ProcessInstance instance : processInstances) {
dtos.add(toResource(instance));
}
}
double totalPageDouble = ((double) count / filter.getPageSize());
double totlaPageFlorred = Math.floor(totalPageDouble);
long totalPage = 0;
if (totalPageDouble > totlaPageFlorred) {
totalPage = (long) (totlaPageFlorred + 1);
}
return new ResourcesWrapper<>(dtos, count, totalPage, filter.getPageNumber(), filter.getPageSize());
}
use of eu.bcvsolutions.idm.core.workflow.model.dto.WorkflowProcessInstanceDto in project CzechIdMng by bcvsolutions.
the class DefaultIdmAutomaticRoleRequestService method cancelWF.
/**
* Cancel unfinished workflow process for this automatic role.
*
* @param dto
*/
private void cancelWF(IdmAutomaticRoleRequestDto dto) {
if (!Strings.isNullOrEmpty(dto.getWfProcessId())) {
WorkflowFilterDto filter = new WorkflowFilterDto();
filter.setProcessInstanceId(dto.getWfProcessId());
Collection<WorkflowProcessInstanceDto> resources = workflowProcessInstanceService.find(filter, null).getContent();
if (resources.isEmpty()) {
// Process with this ID not exist ... maybe was ended
return;
}
workflowProcessInstanceService.delete(dto.getWfProcessId(), "Role request use this WF, was deleted. This WF was deleted too.");
}
}
use of eu.bcvsolutions.idm.core.workflow.model.dto.WorkflowProcessInstanceDto in project CzechIdMng by bcvsolutions.
the class DefaultIdmRoleRequestService method cancelWF.
private void cancelWF(IdmRoleRequestDto dto) {
if (!Strings.isNullOrEmpty(dto.getWfProcessId())) {
WorkflowFilterDto filter = new WorkflowFilterDto();
filter.setProcessInstanceId(dto.getWfProcessId());
Collection<WorkflowProcessInstanceDto> resources = workflowProcessInstanceService.searchInternal(filter, false).getResources();
if (resources.isEmpty()) {
// Process with this ID not exist ... maybe was ended
this.addToLog(dto, MessageFormat.format("Workflow process with ID [{0}] was not deleted, because was not found. Maybe was ended before.", dto.getWfProcessId()));
return;
}
workflowProcessInstanceService.delete(dto.getWfProcessId(), "Role request use this WF, was deleted. This WF was deleted too.");
this.addToLog(dto, MessageFormat.format("Workflow process with ID [{0}] was deleted, because this request is deleted/canceled", dto.getWfProcessId()));
}
}
Aggregations