Search in sources :

Example 1 with ProcessDefinitionCacheEntry

use of org.activiti.engine.impl.persistence.deploy.ProcessDefinitionCacheEntry in project Activiti by Activiti.

the class DeploymentCacheLimitTest method testDeploymentCacheLimit.

public void testDeploymentCacheLimit() {
    // This is set in the configuration
    int processDefinitionCacheLimit = 3;
    // above
    DefaultDeploymentCache<ProcessDefinitionCacheEntry> processDefinitionCache = (DefaultDeploymentCache<ProcessDefinitionCacheEntry>) processEngineConfiguration.getProcessDefinitionCache();
    assertThat(processDefinitionCache.size()).isEqualTo(0);
    String processDefinitionTemplate = DeploymentCacheTestUtil.readTemplateFile("/org/activiti/standalone/deploy/deploymentCacheTest.bpmn20.xml");
    for (int i = 1; i <= 5; i++) {
        repositoryService.createDeployment().addString("Process " + i + ".bpmn20.xml", MessageFormat.format(processDefinitionTemplate, i)).deploy();
        if (i < processDefinitionCacheLimit) {
            assertThat(processDefinitionCache.size()).isEqualTo(i);
        } else {
            assertThat(processDefinitionCache.size()).isEqualTo(processDefinitionCacheLimit);
        }
    }
    // Cleanup
    for (Deployment deployment : repositoryService.createDeploymentQuery().list()) {
        repositoryService.deleteDeployment(deployment.getId(), true);
    }
}
Also used : DefaultDeploymentCache(org.activiti.engine.impl.persistence.deploy.DefaultDeploymentCache) ProcessDefinitionCacheEntry(org.activiti.engine.impl.persistence.deploy.ProcessDefinitionCacheEntry) Deployment(org.activiti.engine.repository.Deployment)

Example 2 with ProcessDefinitionCacheEntry

use of org.activiti.engine.impl.persistence.deploy.ProcessDefinitionCacheEntry in project Activiti by Activiti.

the class SetProcessDefinitionCategoryCmd method execute.

public Void execute(CommandContext commandContext) {
    if (processDefinitionId == null) {
        throw new ActivitiIllegalArgumentException("Process definition id is null");
    }
    ProcessDefinitionEntity processDefinition = commandContext.getProcessDefinitionEntityManager().findById(processDefinitionId);
    if (processDefinition == null) {
        throw new ActivitiObjectNotFoundException("No process definition found for id = '" + processDefinitionId + "'", ProcessDefinition.class);
    }
    // Update category
    processDefinition.setCategory(category);
    // Remove process definition from cache, it will be refetched later
    DeploymentCache<ProcessDefinitionCacheEntry> processDefinitionCache = commandContext.getProcessEngineConfiguration().getProcessDefinitionCache();
    if (processDefinitionCache != null) {
        processDefinitionCache.remove(processDefinitionId);
    }
    if (commandContext.getEventDispatcher().isEnabled()) {
        commandContext.getEventDispatcher().dispatchEvent(ActivitiEventBuilder.createEntityEvent(ActivitiEventType.ENTITY_UPDATED, processDefinition));
    }
    return null;
}
Also used : ActivitiIllegalArgumentException(org.activiti.engine.ActivitiIllegalArgumentException) ProcessDefinitionCacheEntry(org.activiti.engine.impl.persistence.deploy.ProcessDefinitionCacheEntry) ProcessDefinitionEntity(org.activiti.engine.impl.persistence.entity.ProcessDefinitionEntity) ActivitiObjectNotFoundException(org.activiti.engine.ActivitiObjectNotFoundException)

Example 3 with ProcessDefinitionCacheEntry

use of org.activiti.engine.impl.persistence.deploy.ProcessDefinitionCacheEntry in project Activiti by Activiti.

the class CachingAndArtifactsManager method updateCachingAndArtifacts.

/**
 * Ensures that the process definition is cached in the appropriate places, including the
 * deployment's collection of deployed artifacts and the deployment manager's cache, as well
 * as caching any ProcessDefinitionInfos.
 */
public void updateCachingAndArtifacts(ParsedDeployment parsedDeployment) {
    CommandContext commandContext = Context.getCommandContext();
    final ProcessEngineConfigurationImpl processEngineConfiguration = Context.getProcessEngineConfiguration();
    DeploymentCache<ProcessDefinitionCacheEntry> processDefinitionCache = processEngineConfiguration.getDeploymentManager().getProcessDefinitionCache();
    DeploymentEntity deployment = parsedDeployment.getDeployment();
    for (ProcessDefinitionEntity processDefinition : parsedDeployment.getAllProcessDefinitions()) {
        BpmnModel bpmnModel = parsedDeployment.getBpmnModelForProcessDefinition(processDefinition);
        Process process = parsedDeployment.getProcessModelForProcessDefinition(processDefinition);
        ProcessDefinitionCacheEntry cacheEntry = new ProcessDefinitionCacheEntry(processDefinition, bpmnModel, process);
        processDefinitionCache.add(processDefinition.getId(), cacheEntry);
        addDefinitionInfoToCache(processDefinition, processEngineConfiguration, commandContext);
        // Add to deployment for further usage
        deployment.addDeployedArtifact(processDefinition);
    }
}
Also used : DeploymentEntity(org.activiti.engine.impl.persistence.entity.DeploymentEntity) CommandContext(org.activiti.engine.impl.interceptor.CommandContext) ProcessDefinitionCacheEntry(org.activiti.engine.impl.persistence.deploy.ProcessDefinitionCacheEntry) Process(org.activiti.bpmn.model.Process) ProcessDefinitionEntity(org.activiti.engine.impl.persistence.entity.ProcessDefinitionEntity) ProcessEngineConfigurationImpl(org.activiti.engine.impl.cfg.ProcessEngineConfigurationImpl) BpmnModel(org.activiti.bpmn.model.BpmnModel)

Example 4 with ProcessDefinitionCacheEntry

use of org.activiti.engine.impl.persistence.deploy.ProcessDefinitionCacheEntry in project Activiti by Activiti.

the class ProcessEngineEndpoint method invoke.

@ReadOperation
public Map<String, Object> invoke() {
    Map<String, Object> metrics = new HashMap<String, Object>();
    // Process definitions
    metrics.put("processDefinitionCount", processEngine.getRepositoryService().createProcessDefinitionQuery().count());
    // List of all process definitions
    List<ProcessDefinition> processDefinitions = processEngine.getRepositoryService().createProcessDefinitionQuery().orderByProcessDefinitionKey().asc().list();
    List<String> processDefinitionKeys = new ArrayList<String>();
    for (ProcessDefinition processDefinition : processDefinitions) {
        processDefinitionKeys.add(processDefinition.getKey() + " (v" + processDefinition.getVersion() + ")");
    }
    metrics.put("deployedProcessDefinitions", processDefinitionKeys);
    // Process instances
    Map<String, Object> processInstanceCountMap = new HashMap<String, Object>();
    metrics.put("runningProcessInstanceCount", processInstanceCountMap);
    for (ProcessDefinition processDefinition : processDefinitions) {
        processInstanceCountMap.put(processDefinition.getKey() + " (v" + processDefinition.getVersion() + ")", processEngine.getRuntimeService().createProcessInstanceQuery().processDefinitionId(processDefinition.getId()).count());
    }
    Map<String, Object> completedProcessInstanceCountMap = new HashMap<String, Object>();
    metrics.put("completedProcessInstanceCount", completedProcessInstanceCountMap);
    for (ProcessDefinition processDefinition : processDefinitions) {
        completedProcessInstanceCountMap.put(processDefinition.getKey() + " (v" + processDefinition.getVersion() + ")", processEngine.getHistoryService().createHistoricProcessInstanceQuery().finished().processDefinitionId(processDefinition.getId()).count());
    }
    // Open tasks
    metrics.put("openTaskCount", processEngine.getTaskService().createTaskQuery().count());
    metrics.put("completedTaskCount", processEngine.getHistoryService().createHistoricTaskInstanceQuery().finished().count());
    // Tasks completed today
    metrics.put("completedTaskCountToday", processEngine.getHistoryService().createHistoricTaskInstanceQuery().finished().taskCompletedAfter(new Date(System.currentTimeMillis() - secondsForDays(1))).count());
    // Process steps
    metrics.put("completedActivities", processEngine.getHistoryService().createHistoricActivityInstanceQuery().finished().count());
    // Process definition cache
    DeploymentCache<ProcessDefinitionCacheEntry> deploymentCache = ((ProcessEngineConfigurationImpl) processEngine.getProcessEngineConfiguration()).getProcessDefinitionCache();
    if (deploymentCache instanceof DefaultDeploymentCache) {
        metrics.put("cachedProcessDefinitionCount", ((DefaultDeploymentCache) deploymentCache).size());
    }
    return metrics;
}
Also used : DefaultDeploymentCache(org.activiti.engine.impl.persistence.deploy.DefaultDeploymentCache) HashMap(java.util.HashMap) ProcessDefinitionCacheEntry(org.activiti.engine.impl.persistence.deploy.ProcessDefinitionCacheEntry) ArrayList(java.util.ArrayList) ProcessDefinition(org.activiti.engine.repository.ProcessDefinition) Date(java.util.Date) ProcessEngineConfigurationImpl(org.activiti.engine.impl.cfg.ProcessEngineConfigurationImpl) ReadOperation(org.springframework.boot.actuate.endpoint.annotation.ReadOperation)

Aggregations

ProcessDefinitionCacheEntry (org.activiti.engine.impl.persistence.deploy.ProcessDefinitionCacheEntry)4 ProcessEngineConfigurationImpl (org.activiti.engine.impl.cfg.ProcessEngineConfigurationImpl)2 DefaultDeploymentCache (org.activiti.engine.impl.persistence.deploy.DefaultDeploymentCache)2 ProcessDefinitionEntity (org.activiti.engine.impl.persistence.entity.ProcessDefinitionEntity)2 ArrayList (java.util.ArrayList)1 Date (java.util.Date)1 HashMap (java.util.HashMap)1 BpmnModel (org.activiti.bpmn.model.BpmnModel)1 Process (org.activiti.bpmn.model.Process)1 ActivitiIllegalArgumentException (org.activiti.engine.ActivitiIllegalArgumentException)1 ActivitiObjectNotFoundException (org.activiti.engine.ActivitiObjectNotFoundException)1 CommandContext (org.activiti.engine.impl.interceptor.CommandContext)1 DeploymentEntity (org.activiti.engine.impl.persistence.entity.DeploymentEntity)1 Deployment (org.activiti.engine.repository.Deployment)1 ProcessDefinition (org.activiti.engine.repository.ProcessDefinition)1 ReadOperation (org.springframework.boot.actuate.endpoint.annotation.ReadOperation)1