/// <summary> /// /// </summary> public virtual IPage <ProcessInstance> GetAllProcessInstances(Pageable pageable) { IProcessInstanceQuery query = runtimeService.CreateProcessInstanceQuery(); sortApplier.ApplySort(query, pageable); return(pageRetriever.LoadPage(runtimeService as ServiceImpl, query, pageable, processInstanceConverter, (q, firstResult, pageSize) => { return new Engine.Impl.Cmd.GetProcessInstancesCmd(q, firstResult, pageSize); })); }
/// <summary> /// /// </summary> public virtual IPage <ProcessInstance> GetProcessInstances(Pageable pageable) { IProcessInstanceQuery query = runtimeService.CreateProcessInstanceQuery(); logger.LogWarning("Securite read not implementation"); //query = securityService.restrictProcessInstQuery(query, SecurityPolicy.READ); sortApplier.ApplySort(query, pageable); return(pageRetriever.LoadPage(runtimeService as ServiceImpl, query, pageable, processInstanceConverter, (q, firstResult, pageSize) => { return new Engine.Impl.Cmd.GetProcessInstancesCmd(q, firstResult, pageSize); })); }
public virtual IProcessInstance Execute(ICommandContext commandContext) { var runtimeService = commandContext.ProcessEngineConfiguration.RuntimeService; IProcessInstanceQuery query = runtimeService.CreateProcessInstanceQuery(); query = query.SetProcessInstanceId(instanceId); IProcessInstance processInstance = query.SingleResult(); if (processInstance != null) { ExecutionEntityImpl.EnsureStarterInitialized(new ExecutionEntityImpl[] { processInstance as ExecutionEntityImpl }); } return(processInstance); }
public virtual IList <IProcessInstance> FindProcessInstanceAndVariablesByQueryCriteria(IProcessInstanceQuery query) { ProcessInstanceQueryImpl executionQuery = query as ProcessInstanceQueryImpl; // paging doesn't work for combining process instances and variables due // to an outer join, so doing it in-memory if (executionQuery.FirstResult < 0 || executionQuery.MaxResults <= 0) { return(new List <IProcessInstance>()); } int firstResult = executionQuery.FirstResult; int maxResults = executionQuery.MaxResults; // setting max results, limit to 20000 results for performance reasons if (executionQuery.ProcessInstanceVariablesLimit != null) { executionQuery.MaxResults = executionQuery.ProcessInstanceVariablesLimit.GetValueOrDefault(); } else { executionQuery.MaxResults = ProcessEngineConfiguration.ExecutionQueryLimit; } executionQuery.FirstResult = 0; IList <IProcessInstance> instanceList = DbSqlSession.SelectListWithRawParameterWithoutFilter <ExecutionEntityImpl, IProcessInstance>("selectProcessInstanceWithVariablesByQueryCriteria", executionQuery, executionQuery.FirstResult, executionQuery.MaxResults); if (instanceList != null && instanceList.Count > 0) { if (firstResult > 0) { if (firstResult <= instanceList.Count) { int toIndex = firstResult + Math.Min(maxResults, instanceList.Count - firstResult); return(instanceList.Skip(firstResult).Take(toIndex).ToList()); } else { return(new List <IProcessInstance>()); } } else { int toIndex = Math.Min(maxResults, instanceList.Count); return(instanceList.Skip(0).Take(toIndex).ToList()); } } return(new List <IProcessInstance>()); }
public virtual IList <IProcessInstance> FindProcessInstanceByQueryCriteria(IProcessInstanceQuery executionQuery) { return(DbSqlSession.SelectList <ExecutionEntityImpl, IProcessInstance>("selectProcessInstanceByQueryCriteria", executionQuery, !performanceSettings.EnableEagerExecutionTreeFetching)); // False -> executions should not be cached if using executionTreeFetching }
public virtual long FindProcessInstanceCountByQueryCriteria(IProcessInstanceQuery executionQuery) { return(DbSqlSession.SelectOne <ExecutionEntityImpl, long?>("selectProcessInstanceCountByQueryCriteria", executionQuery).GetValueOrDefault()); }
public bool Execute(ICommandContext commandContext) { try { ICommandExecutor commandExecutor = commandContext.ProcessEngineConfiguration.CommandExecutor; List <IProcessInstance> processInstances = new List <IProcessInstance>(); if (string.IsNullOrWhiteSpace(processInstanceId) == false) { if (!(commandExecutor.Execute(new GetProcessInstanceByIdCmd(processInstanceId)) is IProcessInstance processInstance)) { throw new ActivitiObjectNotFoundException(string.Concat("Unable to find process instance for the given id: ", processInstanceId)); } processInstances.Add(processInstance); } else if (string.IsNullOrWhiteSpace(businessKey) == false) { IRuntimeService runtimeService = commandContext.ProcessEngineConfiguration.RuntimeService; IProcessInstanceQuery query = runtimeService.CreateProcessInstanceQuery() .SetProcessInstanceBusinessKey(businessKey); if (query is ProcessInstanceQueryImpl pqi) { pqi.IncludeChildExecutionsWithBusinessKeyQuery = false; } var list = commandExecutor.Execute(new GetProcessInstancesCmd(query, 0, int.MaxValue)); if (list.Count == 0) { throw new ActivitiObjectNotFoundException(string.Concat("Unable to find process instance for the given businessKey: ", businessKey)); } processInstances.AddRange(list); } foreach (IProcessInstance processInstance in processInstances) { IProcessDefinition processDefinition = commandExecutor.Execute(new GetDeploymentProcessDefinitionCmd(processInstance.ProcessDefinitionId)); if (processDefinition is null) { throw new ActivitiObjectNotFoundException(string.Concat("Unable to find process definition for the given id: ", processInstance.ProcessDefinitionId)); } commandExecutor.Execute(new SetExecutionVariablesCmd(processInstance.Id, variables, false)); string delReason = reason ?? "Cancelled"; IList <ITask> tasks = commandExecutor.Execute(new GetTasksByProcessInstanceIdCmd(new string[] { processInstance.Id })); foreach (var task in tasks) { commandExecutor.Execute(new AddCommentCmd(task.Id, processInstance.Id, delReason)); } commandExecutor.Execute(new DeleteProcessInstanceCmd(processInstance.Id, delReason)); } } catch (NullReferenceException ex) { logger.LogError($"终止流程失败:{ex.StackTrace}"); throw; } return(true); }
public virtual IList <IProcessInstance> FindProcessInstanceByQueryCriteria(IProcessInstanceQuery executionQuery) { return(executionDataManager.FindProcessInstanceByQueryCriteria(executionQuery)); }
public virtual long FindProcessInstanceCountByQueryCriteria(IProcessInstanceQuery executionQuery) { return(executionDataManager.FindProcessInstanceCountByQueryCriteria(executionQuery)); }