Search in sources :

Example 1 with HistoricActivityInstanceQueryImpl

use of org.activiti.engine.impl.HistoricActivityInstanceQueryImpl in project Activiti by Activiti.

the class DefaultHistoryManager method recordExecutionReplacedBy.

/* (non-Javadoc)
 * @see org.activiti.engine.impl.history.HistoryManagerInterface#recordExecutionReplacedBy(org.activiti.engine.impl.persistence.entity.ExecutionEntity, org.activiti.engine.impl.pvm.runtime.InterpretableExecution)
 */
@Override
@SuppressWarnings({ "unchecked", "rawtypes" })
public void recordExecutionReplacedBy(ExecutionEntity execution, InterpretableExecution replacedBy) {
    if (isHistoryLevelAtLeast(HistoryLevel.ACTIVITY)) {
        // Update the cached historic activity instances that are open
        List<HistoricActivityInstanceEntity> cachedHistoricActivityInstances = getDbSqlSession().findInCache(HistoricActivityInstanceEntity.class);
        for (HistoricActivityInstanceEntity cachedHistoricActivityInstance : cachedHistoricActivityInstances) {
            if ((cachedHistoricActivityInstance.getEndTime() == null) && (execution.getId().equals(cachedHistoricActivityInstance.getExecutionId()))) {
                cachedHistoricActivityInstance.setExecutionId(replacedBy.getId());
            }
        }
        // Update the persisted historic activity instances that are open
        List<HistoricActivityInstanceEntity> historicActivityInstances = (List) new HistoricActivityInstanceQueryImpl(Context.getCommandContext()).executionId(execution.getId()).unfinished().list();
        for (HistoricActivityInstanceEntity historicActivityInstance : historicActivityInstances) {
            historicActivityInstance.setExecutionId(replacedBy.getId());
        }
    }
}
Also used : HistoricActivityInstanceEntity(org.activiti.engine.impl.persistence.entity.HistoricActivityInstanceEntity) HistoricActivityInstanceQueryImpl(org.activiti.engine.impl.HistoricActivityInstanceQueryImpl) List(java.util.List)

Example 2 with HistoricActivityInstanceQueryImpl

use of org.activiti.engine.impl.HistoricActivityInstanceQueryImpl in project Activiti by Activiti.

the class DefaultHistoryManager method findActivityInstance.

/*
   * (non-Javadoc)
   * 
   * @see
   * org.activiti.engine.impl.history.HistoryManagerInterface#findActivityInstance
   * (org.activiti.engine.impl.persistence.entity.ExecutionEntity)
   */
protected HistoricActivityInstanceEntity findActivityInstance(ExecutionEntity execution, String activityId, boolean checkPersistentStore) {
    String executionId = execution.getId();
    // search for the historic activity instance in the dbsqlsession cache
    List<HistoricActivityInstanceEntity> cachedHistoricActivityInstances = getDbSqlSession().findInCache(HistoricActivityInstanceEntity.class);
    for (HistoricActivityInstanceEntity cachedHistoricActivityInstance : cachedHistoricActivityInstances) {
        if (executionId.equals(cachedHistoricActivityInstance.getExecutionId()) && activityId != null && (activityId.equals(cachedHistoricActivityInstance.getActivityId())) && (cachedHistoricActivityInstance.getEndTime() == null)) {
            return cachedHistoricActivityInstance;
        }
    }
    List<HistoricActivityInstance> historicActivityInstances = null;
    if (checkPersistentStore) {
        historicActivityInstances = new HistoricActivityInstanceQueryImpl(Context.getCommandContext()).executionId(executionId).activityId(activityId).unfinished().listPage(0, 1);
    }
    if (historicActivityInstances != null && !historicActivityInstances.isEmpty()) {
        return (HistoricActivityInstanceEntity) historicActivityInstances.get(0);
    }
    if (execution.getParentId() != null) {
        return findActivityInstance((ExecutionEntity) execution.getParent(), activityId, checkPersistentStore);
    }
    return null;
}
Also used : HistoricActivityInstanceEntity(org.activiti.engine.impl.persistence.entity.HistoricActivityInstanceEntity) HistoricActivityInstanceQueryImpl(org.activiti.engine.impl.HistoricActivityInstanceQueryImpl) HistoricActivityInstance(org.activiti.engine.history.HistoricActivityInstance)

Example 3 with HistoricActivityInstanceQueryImpl

use of org.activiti.engine.impl.HistoricActivityInstanceQueryImpl in project Activiti by Activiti.

the class TerminateEndEventActivityBehavior method endAllHistoricActivities.

protected void endAllHistoricActivities(String processInstanceId) {
    if (!Context.getProcessEngineConfiguration().getHistoryLevel().isAtLeast(HistoryLevel.ACTIVITY)) {
        return;
    }
    Map<String, HistoricActivityInstanceEntity> historicActivityInstancMap = new HashMap<String, HistoricActivityInstanceEntity>();
    List<HistoricActivityInstance> historicActivityInstances = new HistoricActivityInstanceQueryImpl(Context.getCommandContext()).processInstanceId(processInstanceId).unfinished().list();
    for (HistoricActivityInstance historicActivityInstance : historicActivityInstances) {
        historicActivityInstancMap.put(historicActivityInstance.getId(), (HistoricActivityInstanceEntity) historicActivityInstance);
    }
    // Cached version overwites entity
    List<HistoricActivityInstanceEntity> cachedHistoricActivityInstances = Context.getCommandContext().getDbSqlSession().findInCache(HistoricActivityInstanceEntity.class);
    for (HistoricActivityInstanceEntity cachedHistoricActivityInstance : cachedHistoricActivityInstances) {
        if (processInstanceId.equals(cachedHistoricActivityInstance.getProcessInstanceId()) && (cachedHistoricActivityInstance.getEndTime() == null)) {
            historicActivityInstancMap.put(cachedHistoricActivityInstance.getId(), cachedHistoricActivityInstance);
        }
    }
    for (HistoricActivityInstanceEntity historicActivityInstance : historicActivityInstancMap.values()) {
        historicActivityInstance.markEnded(null);
        // Fire event
        ProcessEngineConfigurationImpl config = Context.getProcessEngineConfiguration();
        if (config != null && config.getEventDispatcher().isEnabled()) {
            config.getEventDispatcher().dispatchEvent(ActivitiEventBuilder.createEntityEvent(ActivitiEventType.HISTORIC_ACTIVITY_INSTANCE_ENDED, historicActivityInstance));
        }
    }
}
Also used : HistoricActivityInstanceEntity(org.activiti.engine.impl.persistence.entity.HistoricActivityInstanceEntity) HashMap(java.util.HashMap) HistoricActivityInstanceQueryImpl(org.activiti.engine.impl.HistoricActivityInstanceQueryImpl) ProcessEngineConfigurationImpl(org.activiti.engine.impl.cfg.ProcessEngineConfigurationImpl) HistoricActivityInstance(org.activiti.engine.history.HistoricActivityInstance)

Aggregations

HistoricActivityInstanceQueryImpl (org.activiti.engine.impl.HistoricActivityInstanceQueryImpl)3 HistoricActivityInstanceEntity (org.activiti.engine.impl.persistence.entity.HistoricActivityInstanceEntity)3 HistoricActivityInstance (org.activiti.engine.history.HistoricActivityInstance)2 HashMap (java.util.HashMap)1 List (java.util.List)1 ProcessEngineConfigurationImpl (org.activiti.engine.impl.cfg.ProcessEngineConfigurationImpl)1