public GetArchivedProcessInstanceList(final ProcessInstanceService processInstanceService, final ProcessDefinitionService processDefinitionService, final SearchEntitiesDescriptor searchEntitiesDescriptor, final long processInstanceId, final int startIndex, final int maxResults) { this.processInstanceService = processInstanceService; this.processDefinitionService = processDefinitionService; this.searchEntitiesDescriptor = searchEntitiesDescriptor; searchOptionsBuilder = new SearchOptionsBuilder(startIndex, maxResults); searchOptionsBuilder.filter(ArchivedProcessInstancesSearchDescriptor.SOURCE_OBJECT_ID, processInstanceId); }
public GetArchivedProcessInstanceList(final ProcessInstanceService processInstanceService, final ProcessDefinitionService processDefinitionService, final SearchEntitiesDescriptor searchEntitiesDescriptor, final long processInstanceId, final int startIndex, final int maxResults) { this.processInstanceService = processInstanceService; this.processDefinitionService = processDefinitionService; this.searchEntitiesDescriptor = searchEntitiesDescriptor; searchOptionsBuilder = new SearchOptionsBuilder(startIndex, maxResults); searchOptionsBuilder.filter(ArchivedProcessInstancesSearchDescriptor.SOURCE_OBJECT_ID, processInstanceId); }
@Override protected boolean check() throws Exception { final SearchOptionsBuilder builder = new SearchOptionsBuilder(0, 10); builder.filter(ArchivedHumanTaskInstanceSearchDescriptor.PROCESS_DEFINITION_ID, id); builder.filter(ArchivedHumanTaskInstanceSearchDescriptor.NAME, value); builder.filter(ArchivedHumanTaskInstanceSearchDescriptor.STATE_NAME, ActivityStates.COMPLETED_STATE); final SearchResult<ArchivedHumanTaskInstance> searchArchivedTasks = processApi.searchArchivedHumanTasks(builder.done()); final boolean ok = searchArchivedTasks.getCount() >= 1; if (ok) { archivedHumanTaskInstance = searchArchivedTasks.getResult().get(0); } return ok; }
public static SearchOptionsBuilder buildSearchOptions(final long processDefId, final int pageIndex, final int numberOfResults, final String orderByField, final Order order) { final SearchOptionsBuilder builder = new SearchOptionsBuilder(pageIndex, numberOfResults); builder.filter(ProcessInstanceSearchDescriptor.PROCESS_DEFINITION_ID, processDefId); builder.sort(orderByField, order); return builder; }
private List<HumanTaskInstance> getHumanTaskInstances(final long processInstanceId, final String taskName, final int startIndex, final int maxResults, final String field, final Order order) throws SearchException { final SearchOptionsBuilder builder = new SearchOptionsBuilder(startIndex, maxResults); builder.filter(HumanTaskInstanceSearchDescriptor.PROCESS_INSTANCE_ID, processInstanceId).filter(HumanTaskInstanceSearchDescriptor.NAME, taskName); builder.sort(field, order); final SearchResult<HumanTaskInstance> searchHumanTasks = searchHumanTaskInstances(builder.done()); return searchHumanTasks.getResult(); }
private List<HumanTaskInstance> getHumanTaskInstances(final long processInstanceId, final String taskName, final int startIndex, final int maxResults, final String field, final Order order) throws SearchException { final SearchOptionsBuilder builder = new SearchOptionsBuilder(startIndex, maxResults); builder.filter(HumanTaskInstanceSearchDescriptor.PROCESS_INSTANCE_ID, processInstanceId).filter(HumanTaskInstanceSearchDescriptor.NAME, taskName); builder.sort(field, order); final SearchResult<HumanTaskInstance> searchHumanTasks = searchHumanTaskInstances(builder.done()); return searchHumanTasks.getResult(); }
public void checkWasntExecuted(final ProcessInstance parentProcessInstance, final String flowNodeName) throws InvalidSessionException, SearchException { final SearchOptionsBuilder searchOptionsBuilder = new SearchOptionsBuilder(0, 20); searchOptionsBuilder.filter(ArchivedFlowNodeInstanceSearchDescriptor.PARENT_PROCESS_INSTANCE_ID, parentProcessInstance.getId()); searchOptionsBuilder.filter(ArchivedFlowNodeInstanceSearchDescriptor.NAME, flowNodeName); final SearchResult<ArchivedFlowNodeInstance> searchArchivedActivities = getProcessAPI().searchArchivedFlowNodeInstances(searchOptionsBuilder.done()); assertTrue(searchArchivedActivities.getCount() == 0); }
public List<String> checkNoCommands() throws SearchException, CommandNotFoundException, DeletionException { final List<String> messages = new ArrayList<>(); final SearchOptionsBuilder searchOptionsBuilder = new SearchOptionsBuilder(0, 1000); searchOptionsBuilder.filter(CommandSearchDescriptor.SYSTEM, false); searchOptionsBuilder.differentFrom(CommandSearchDescriptor.NAME, ClientEventUtil.ADD_HANDLER_COMMAND); searchOptionsBuilder.differentFrom(CommandSearchDescriptor.NAME, ClientEventUtil.WAIT_SERVER_COMMAND); final SearchResult<CommandDescriptor> searchCommands = getCommandAPI().searchCommands(searchOptionsBuilder.done()); final List<CommandDescriptor> commands = searchCommands.getResult(); if (searchCommands.getCount() > 0) { final StringBuilder commandBuilder = new StringBuilder("Commands are still present: "); for (final CommandDescriptor command : commands) { commandBuilder.append(command.getName()).append(", "); getCommandAPI().unregister(command.getName()); } messages.add(commandBuilder.toString()); } return messages; }
@Override public void execute() throws SBonitaException { final SearchOptionsBuilder searchOptionsBuilder = new SearchOptionsBuilder(0, 2); searchOptionsBuilder.sort(ArchivedProcessInstancesSearchDescriptor.ARCHIVE_DATE, Order.DESC); searchOptionsBuilder.sort(ArchivedProcessInstancesSearchDescriptor.END_DATE, Order.DESC); searchOptionsBuilder.filter(ArchivedProcessInstancesSearchDescriptor.SOURCE_OBJECT_ID, processInstanceId); final SearchArchivedProcessInstances searchArchivedProcessInstances = new SearchArchivedProcessInstances(processInstanceService, processDefinitionService, searchEntitiesDescriptor.getSearchArchivedProcessInstanceDescriptor(), searchOptionsBuilder.done()); searchArchivedProcessInstances.execute(); final List<ArchivedProcessInstance> processInstances = searchArchivedProcessInstances.getResult().getResult(); if (processInstances.isEmpty()) { throw new SProcessInstanceNotFoundException(processInstanceId); } processInstance = processInstances.get(0); }
@Override public void execute() throws SBonitaException { final SearchOptionsBuilder searchOptionsBuilder = new SearchOptionsBuilder(0, 2); searchOptionsBuilder.sort(ArchivedProcessInstancesSearchDescriptor.ARCHIVE_DATE, Order.DESC); searchOptionsBuilder.sort(ArchivedProcessInstancesSearchDescriptor.END_DATE, Order.DESC); searchOptionsBuilder.filter(ArchivedProcessInstancesSearchDescriptor.SOURCE_OBJECT_ID, processInstanceId); final SearchArchivedProcessInstances searchArchivedProcessInstances = new SearchArchivedProcessInstances(processInstanceService, processDefinitionService, searchEntitiesDescriptor.getSearchArchivedProcessInstanceDescriptor(), searchOptionsBuilder.done()); searchArchivedProcessInstances.execute(); final List<ArchivedProcessInstance> processInstances = searchArchivedProcessInstances.getResult().getResult(); if (processInstances.isEmpty()) { throw new SProcessInstanceNotFoundException(processInstanceId); } processInstance = processInstances.get(0); }
private void deleteJobsOnCallActivitiesOfProcessInstance(final long processInstanceId) throws SBonitaReadException { List<ActivityInstance> flowNodeInstances; int index = 0; final ProcessInstanceService processInstanceService = getTenantAccessor().getProcessInstanceService(); final TechnicalLoggerService logger = getTenantAccessor().getTechnicalLoggerService(); do { try { flowNodeInstances = searchActivities(new SearchOptionsBuilder(index, index + BATCH_SIZE) .filter(ActivityInstanceSearchDescriptor.PROCESS_INSTANCE_ID, processInstanceId) .filter(ActivityInstanceSearchDescriptor.ACTIVITY_TYPE, FlowNodeType.CALL_ACTIVITY) .done()).getResult(); } catch (SearchException e) { throw new SBonitaReadException("Unable to delete jobs on call activities of process instance id " + processInstanceId, e); } for (ActivityInstance callActivityInstance : flowNodeInstances) { try { deleteJobsOnProcessInstance(processInstanceService.getChildOfActivity(callActivityInstance.getId())); } catch (SBonitaException e) { logger.log(getClass(), TechnicalLogSeverity.INFO, "Can't find the process instance called by the activity. This process may be already finished.", e); } } index = index + BATCH_SIZE; } while (flowNodeInstances.size() == BATCH_SIZE); }
@Override public SearchResult<ProcessInstance> searchOpenProcessInstances(final SearchOptions searchOptions) throws SearchException { // To select all process instances completed, without subprocess final SearchOptionsBuilder searchOptionsBuilder = new SearchOptionsBuilder(searchOptions); searchOptionsBuilder.differentFrom(ProcessInstanceSearchDescriptor.STATE_ID, ProcessInstanceState.COMPLETED.getId()); searchOptionsBuilder.filter(ProcessInstanceSearchDescriptor.CALLER_ID, -1); try { return searchProcessInstances(getTenantAccessor(), searchOptionsBuilder.done()); } catch (final SBonitaException e) { throw new SearchException(e); } }
@Override public SearchResult<ProcessInstance> searchOpenProcessInstances(final SearchOptions searchOptions) throws SearchException { // To select all process instances completed, without subprocess final SearchOptionsBuilder searchOptionsBuilder = new SearchOptionsBuilder(searchOptions); searchOptionsBuilder.differentFrom(ProcessInstanceSearchDescriptor.STATE_ID, ProcessInstanceState.COMPLETED.getId()); searchOptionsBuilder.filter(ProcessInstanceSearchDescriptor.CALLER_ID, -1); try { return searchProcessInstances(getTenantAccessor(), searchOptionsBuilder.done()); } catch (final SBonitaException e) { throw new SearchException(e); } }
private ArchivedProcessInstance getStartedArchivedProcessInstance(final long processInstanceId) throws SBonitaException { final TenantServiceAccessor tenantAccessor = getTenantAccessor(); final ProcessInstanceService processInstanceService = tenantAccessor.getProcessInstanceService(); final SearchEntitiesDescriptor searchEntitiesDescriptor = tenantAccessor.getSearchEntitiesDescriptor(); final SearchOptionsBuilder searchOptionsBuilder = new SearchOptionsBuilder(0, 2); searchOptionsBuilder.sort(ArchivedProcessInstancesSearchDescriptor.ARCHIVE_DATE, Order.ASC); searchOptionsBuilder.filter(ArchivedProcessInstancesSearchDescriptor.SOURCE_OBJECT_ID, processInstanceId); searchOptionsBuilder.filter(ArchivedProcessInstancesSearchDescriptor.STATE_ID, ProcessInstanceState.STARTED.getId()); final SearchArchivedProcessInstances searchArchivedProcessInstances = new SearchArchivedProcessInstances(processInstanceService, tenantAccessor.getProcessDefinitionService(), searchEntitiesDescriptor.getSearchArchivedProcessInstanceDescriptor(), searchOptionsBuilder.done()); searchArchivedProcessInstances.execute(); try { return searchArchivedProcessInstances.getResult().getResult().get(0); } catch (final IndexOutOfBoundsException e) { throw new SAProcessInstanceNotFoundException(processInstanceId, ProcessInstanceState.STARTED.name()); } }
private ArchivedProcessInstance getStartedArchivedProcessInstance(final long processInstanceId) throws SBonitaException { final TenantServiceAccessor tenantAccessor = getTenantAccessor(); final ProcessInstanceService processInstanceService = tenantAccessor.getProcessInstanceService(); final SearchEntitiesDescriptor searchEntitiesDescriptor = tenantAccessor.getSearchEntitiesDescriptor(); final SearchOptionsBuilder searchOptionsBuilder = new SearchOptionsBuilder(0, 2); searchOptionsBuilder.sort(ArchivedProcessInstancesSearchDescriptor.ARCHIVE_DATE, Order.ASC); searchOptionsBuilder.filter(ArchivedProcessInstancesSearchDescriptor.SOURCE_OBJECT_ID, processInstanceId); searchOptionsBuilder.filter(ArchivedProcessInstancesSearchDescriptor.STATE_ID, ProcessInstanceState.STARTED.getId()); final SearchArchivedProcessInstances searchArchivedProcessInstances = new SearchArchivedProcessInstances(processInstanceService, tenantAccessor.getProcessDefinitionService(), searchEntitiesDescriptor.getSearchArchivedProcessInstanceDescriptor(), searchOptionsBuilder.done()); searchArchivedProcessInstances.execute(); try { return searchArchivedProcessInstances.getResult().getResult().get(0); } catch (final IndexOutOfBoundsException e) { throw new SAProcessInstanceNotFoundException(processInstanceId, ProcessInstanceState.STARTED.name()); } }
@Override public List<ArchivedProcessInstance> getArchivedProcessInstances(final int startIndex, final int maxResults, final ProcessInstanceCriterion criterion) { final TenantServiceAccessor tenantAccessor = getTenantAccessor(); final OrderAndField orderAndField = OrderAndFields.getOrderAndFieldForProcessInstance(criterion); final SearchOptionsBuilder searchOptionsBuilder = new SearchOptionsBuilder(startIndex, maxResults); searchOptionsBuilder.sort(orderAndField.getField(), Order.valueOf(orderAndField.getOrder().name())); searchOptionsBuilder.filter(ArchivedProcessInstancesSearchDescriptor.STATE_ID, ProcessInstanceState.COMPLETED.getId()); searchOptionsBuilder.filter(ArchivedProcessInstancesSearchDescriptor.CALLER_ID, -1); final SearchArchivedProcessInstances searchArchivedProcessInstances = searchArchivedProcessInstances(tenantAccessor, searchOptionsBuilder.done()); try { searchArchivedProcessInstances.execute(); } catch (final SBonitaException e) { throw new RetrieveException(e); } return searchArchivedProcessInstances.getResult().getResult(); }
@Override public List<ArchivedProcessInstance> getArchivedProcessInstances(final int startIndex, final int maxResults, final ProcessInstanceCriterion criterion) { final TenantServiceAccessor tenantAccessor = getTenantAccessor(); final OrderAndField orderAndField = OrderAndFields.getOrderAndFieldForProcessInstance(criterion); final SearchOptionsBuilder searchOptionsBuilder = new SearchOptionsBuilder(startIndex, maxResults); searchOptionsBuilder.sort(orderAndField.getField(), Order.valueOf(orderAndField.getOrder().name())); searchOptionsBuilder.filter(ArchivedProcessInstancesSearchDescriptor.STATE_ID, ProcessInstanceState.COMPLETED.getId()); searchOptionsBuilder.filter(ArchivedProcessInstancesSearchDescriptor.CALLER_ID, -1); final SearchArchivedProcessInstances searchArchivedProcessInstances = searchArchivedProcessInstances(tenantAccessor, searchOptionsBuilder.done()); try { searchArchivedProcessInstances.execute(); } catch (final SBonitaException e) { throw new RetrieveException(e); } return searchArchivedProcessInstances.getResult().getResult(); }
protected void cleanCommands() throws SearchException, CommandNotFoundException, DeletionException { final SearchOptionsBuilder searchOptionsBuilder = new SearchOptionsBuilder(0, 1000); searchOptionsBuilder.filter(CommandSearchDescriptor.SYSTEM, false); searchOptionsBuilder.differentFrom(CommandSearchDescriptor.NAME, ClientEventUtil.ADD_HANDLER_COMMAND); searchOptionsBuilder.differentFrom(CommandSearchDescriptor.NAME, ClientEventUtil.WAIT_SERVER_COMMAND); final SearchResult<CommandDescriptor> searchCommands = getCommandAPI().searchCommands(searchOptionsBuilder.done()); final List<CommandDescriptor> commands = searchCommands.getResult(); if (searchCommands.getCount() > 0) { for (final CommandDescriptor command : commands) { getCommandAPI().unregister(command.getName()); } } }
@Override public void deleteProcessDefinition(final long processDefinitionId) throws DeletionException { final SearchOptionsBuilder builder = new SearchOptionsBuilder(0, 1); builder.filter(ProcessInstanceSearchDescriptor.PROCESS_DEFINITION_ID, processDefinitionId); final SearchOptions searchOptions = builder.done(); try { final boolean hasOpenProcessInstances = searchProcessInstances(getTenantAccessor(), searchOptions).getCount() > 0; checkIfItIsPossibleToDeleteProcessInstance(processDefinitionId, hasOpenProcessInstances); final boolean hasArchivedProcessInstances = searchArchivedProcessInstances(searchOptions).getCount() > 0; checkIfItIsPossibleToDeleteProcessInstance(processDefinitionId, hasArchivedProcessInstances); processManagementAPIImplDelegate.deleteProcessDefinition(processDefinitionId); } catch (final Exception e) { throw new DeletionException(e); } }
@Override public void deleteProcessDefinition(final long processDefinitionId) throws DeletionException { final SearchOptionsBuilder builder = new SearchOptionsBuilder(0, 1); builder.filter(ProcessInstanceSearchDescriptor.PROCESS_DEFINITION_ID, processDefinitionId); final SearchOptions searchOptions = builder.done(); try { final boolean hasOpenProcessInstances = searchProcessInstances(getTenantAccessor(), searchOptions).getCount() > 0; checkIfItIsPossibleToDeleteProcessInstance(processDefinitionId, hasOpenProcessInstances); final boolean hasArchivedProcessInstances = searchArchivedProcessInstances(searchOptions).getCount() > 0; checkIfItIsPossibleToDeleteProcessInstance(processDefinitionId, hasArchivedProcessInstances); processManagementAPIImplDelegate.deleteProcessDefinition(processDefinitionId); } catch (final Exception e) { throw new DeletionException(e); } }