protected internal virtual IList <IProcessDefinitionEntity> FindProcessDefinition(ICommandContext commandContext) { // If process definition is already provided (eg. when command is called through the DeployCmd) // we don't need to do an extra database fetch and we can simply return it, wrapped in a list if (processDefinitionEntity != null) { return(new List <IProcessDefinitionEntity>(new IProcessDefinitionEntity[] { processDefinitionEntity })); } // Validation of input parameters if (string.IsNullOrWhiteSpace(processDefinitionId) && string.IsNullOrWhiteSpace(processDefinitionKey)) { throw new ActivitiIllegalArgumentException("Process definition id or key cannot be null"); } IList <IProcessDefinitionEntity> processDefinitionEntities = new List <IProcessDefinitionEntity>(); IProcessDefinitionEntityManager processDefinitionManager = commandContext.ProcessDefinitionEntityManager; if (!string.IsNullOrWhiteSpace(processDefinitionId)) { IProcessDefinitionEntity processDefinitionEntity = processDefinitionManager.FindById <IProcessDefinitionEntity>(new KeyValuePair <string, object>("id", processDefinitionId)); if (processDefinitionEntity == null) { throw new ActivitiObjectNotFoundException("Cannot find process definition for id '" + processDefinitionId + "'", typeof(IProcessDefinition)); } processDefinitionEntities.Add(processDefinitionEntity); } else { IProcessDefinitionQuery query = new ProcessDefinitionQueryImpl(commandContext).SetProcessDefinitionKey(processDefinitionKey); if (tenantId is null || ProcessEngineConfiguration.NO_TENANT_ID.Equals(tenantId)) { query.SetProcessDefinitionWithoutTenantId(); }
protected internal virtual IProcessDefinition findNewLatestProcessDefinitionAfterRemovalOf(IProcessDefinition processDefinitionToBeRemoved) { // The latest process definition is not necessarily the one with 'version -1' (some versions could have been deleted) // Hence, the following logic ProcessDefinitionQueryImpl query = new ProcessDefinitionQueryImpl(); query.SetProcessDefinitionKey(processDefinitionToBeRemoved.Key); if (!ReferenceEquals(processDefinitionToBeRemoved.TenantId, null) && !Engine.ProcessEngineConfiguration.NO_TENANT_ID.Equals(processDefinitionToBeRemoved.TenantId)) { query.SetProcessDefinitionTenantId(processDefinitionToBeRemoved.TenantId); } else { query.SetProcessDefinitionWithoutTenantId(); } query.SetProcessDefinitionVersionLowerThan(processDefinitionToBeRemoved.Version); query.OrderByProcessDefinitionVersion().Desc(); IList <IProcessDefinition> processDefinitions = ProcessDefinitionEntityManager.FindProcessDefinitionsByQueryCriteria(query, new Page(0, 1)); if (processDefinitions != null && processDefinitions.Count > 0) { return(processDefinitions[0]); } return(null); }
/// <summary> /// 读取分页记录 /// </summary> /// <param name="repositoryService">仓储服务</param> /// <param name="pageableRepositoryService">分页仓储服务</param> /// <param name="qo">查询对象</param> /// <returns></returns> public IPage <ProcessDefinition> LoadPage(IRepositoryService repositoryService, PageableProcessDefinitionRepositoryService pageableRepositoryService, ProcessDefinitionQuery qo) { ProcessDefinitionQueryImpl query = repositoryService.CreateProcessDefinitionQuery() as ProcessDefinitionQueryImpl; FastCopy.Copy <ProcessDefinitionQuery, ProcessDefinitionQueryImpl>(qo, query); pageableRepositoryService.SortApplier.ApplySort(query, qo.Pageable); IPage <ProcessDefinition> defs = pageableRepositoryService.PageRetriever.LoadPage(query, qo.Pageable, pageableRepositoryService.ProcessDefinitionConverter); return(defs); }
public virtual Task <string> GetProcessModel(ProcessDefinitionQuery query) { if (query == null) { throw new ArgumentNullException("query"); } ProcessDefinitionQueryImpl qo = repositoryService.CreateProcessDefinitionQuery() as ProcessDefinitionQueryImpl; FastCopy.Copy <ProcessDefinitionQuery, ProcessDefinitionQueryImpl>(query, qo); qo.SetLatestVersion(); IProcessDefinition processDefinition = qo.SingleResult(); return(GetProcessModel(processDefinition.Id)); }
public virtual void DeleteDeployment(string deploymentId, bool cascade) { IList <IProcessDefinition> processDefinitions = new ProcessDefinitionQueryImpl().SetDeploymentId(deploymentId).List(); //判断是否存在正在执行的流程 long count = new ExecutionQueryImpl() .SetProcessDeploymentId(deploymentId) .Count(); //判断是否存在历史流程 count = count > 0 ? count : new HistoricProcessInstanceQueryImpl() .SetDeploymentId(deploymentId) .Count(); if (count > 0) { throw new ExistsProcessInstanceException(processDefinitions[0].Name); } updateRelatedModels(deploymentId); if (cascade) { deleteProcessInstancesForProcessDefinitions(processDefinitions); } foreach (IProcessDefinition processDefinition in processDefinitions) { deleteProcessDefinitionIdentityLinks(processDefinition); deleteEventSubscriptions(processDefinition); deleteProcessDefinitionInfo(processDefinition.Id); removeTimerStartJobs(processDefinition); // If previous process definition version has a timer/signal/message start event, it must be added // Only if the currently deleted process definition is the latest version, // we fall back to the previous timer/signal/message start event restorePreviousStartEventsIfNeeded(processDefinition); } deleteProcessDefinitionForDeployment(deploymentId); ResourceEntityManager.DeleteResourcesByDeploymentId(deploymentId); Delete(FindById <DeploymentEntityImpl>(new KeyValuePair <string, object>("id", deploymentId)), false); }
// process definition query //////////////////////////////// public virtual void configureProcessDefinitionQuery(ProcessDefinitionQueryImpl query) { configureQuery(query, PROCESS_DEFINITION, "RES.KEY_"); if (query.StartablePermissionCheck) { AuthorizationCheck authorizationCheck = query.AuthCheck; if (!authorizationCheck.RevokeAuthorizationCheckEnabled) { CompositePermissionCheck permCheck = (new PermissionCheckBuilder()).atomicCheck(PROCESS_DEFINITION, "RES.KEY_", Permissions.CREATE_INSTANCE).build(); query.addProcessDefinitionCreatePermissionCheck(permCheck); } else { CompositePermissionCheck permissionCheck = (new PermissionCheckBuilder()).conjunctive().atomicCheck(PROCESS_DEFINITION, "RES.KEY_", READ).atomicCheck(PROCESS_DEFINITION, "RES.KEY_", Permissions.CREATE_INSTANCE).build(); addPermissionCheck(authorizationCheck, permissionCheck); } } }
public virtual IDeploymentEntity SaveDraft(IDeploymentEntity deployment) { IDeploymentEntity exist = this.FindLatestDeploymentByName(deployment.Name); if (exist != null) { IProcessDefinition process = new ProcessDefinitionQueryImpl() .SetDeploymentId(exist.Id) .SetLatestVersion() .SingleResult(); if (process == null) { this.DeleteDeployment(exist.Id, true); } } deployment.New = true; this.Insert(deployment); return(deployment); }
protected internal virtual void configureProcessDefinitionQuery(ProcessDefinitionQueryImpl query) { AuthorizationManager.configureProcessDefinitionQuery(query); TenantManager.configureQuery(query); }
public virtual IList <ProcessDefinition> findProcessDefinitionsByKey(string processDefinitionKey) { ProcessDefinitionQueryImpl processDefinitionQuery = (new ProcessDefinitionQueryImpl()).processDefinitionKey(processDefinitionKey); return(findProcessDefinitionsByQueryCriteria(processDefinitionQuery, null)); }
public virtual long findProcessDefinitionCountByQueryCriteria(ProcessDefinitionQueryImpl processDefinitionQuery) { configureProcessDefinitionQuery(processDefinitionQuery); return((long?)DbEntityManager.selectOne("selectProcessDefinitionCountByQueryCriteria", processDefinitionQuery).Value); }
//JAVA TO C# CONVERTER TODO TASK: Most Java annotations will not have direct .NET equivalent attributes: //ORIGINAL LINE: @SuppressWarnings({ "unchecked" }) public java.util.List<org.camunda.bpm.engine.repository.ProcessDefinition> findProcessDefinitionsByQueryCriteria(org.camunda.bpm.engine.impl.ProcessDefinitionQueryImpl processDefinitionQuery, org.camunda.bpm.engine.impl.Page page) public virtual IList <ProcessDefinition> findProcessDefinitionsByQueryCriteria(ProcessDefinitionQueryImpl processDefinitionQuery, Page page) { configureProcessDefinitionQuery(processDefinitionQuery); return(DbEntityManager.selectList("selectProcessDefinitionsByQueryCriteria", processDefinitionQuery, page)); }