public static ProcessDeploymentInfo toProcessDeploymentInfo(final SProcessDefinitionDeployInfo processDefinitionDI) { return new ProcessDeploymentInfoImpl(processDefinitionDI.getId(), processDefinitionDI.getProcessId(), processDefinitionDI.getName(), processDefinitionDI.getVersion(), processDefinitionDI.getDescription(), new Date(processDefinitionDI.getDeploymentDate()), processDefinitionDI.getDeployedBy(), ActivationState.valueOf(processDefinitionDI.getActivationState()), ConfigurationState.valueOf(processDefinitionDI.getConfigurationState()), processDefinitionDI.getDisplayName(), new Date( processDefinitionDI.getLastUpdateDate()), processDefinitionDI.getIconPath(), processDefinitionDI.getDisplayDescription()); }
public SProcessDefinitionNotFoundException(final Throwable cause, final SProcessDefinitionDeployInfo processDefinitionDeployInfo) { this(cause, processDefinitionDeployInfo.getId()); setProcessDefinitionNameOnContext(processDefinitionDeployInfo.getName()); setProcessDefinitionVersionOnContext(processDefinitionDeployInfo.getVersion()); }
private void ensureProcessIsEnabled(final SProcessDefinition sProcessDefinition) throws SProcessDefinitionNotFoundException, SBonitaReadException, SProcessDefinitionException { final SProcessDefinitionDeployInfo deployInfo = processDefinitionService.getProcessDeploymentInfo(sProcessDefinition.getId()); if (ActivationState.DISABLED.name().equals(deployInfo.getActivationState())) { throw new SProcessDefinitionException("The process " + deployInfo.getName() + " " + deployInfo.getVersion() + " is not enabled.", deployInfo.getProcessId(), deployInfo.getName(), deployInfo.getVersion()); } }
@Override public void disableProcess(long processId, boolean failIfAlreadyDisabled) throws SProcessDefinitionNotFoundException, SProcessDisablementException{ SProcessDefinitionDeployInfo processDefinitionDeployInfo; try { processDefinitionDeployInfo = getProcessDeploymentInfo(processId); } catch (final SBonitaReadException e) { throw new SProcessDisablementException(e); } if (failIfAlreadyDisabled && ActivationState.DISABLED.name().equals(processDefinitionDeployInfo.getActivationState())) { throw new SProcessDisablementException("Process " + processDefinitionDeployInfo.getName() + " with version " + processDefinitionDeployInfo.getVersion() + " is already disabled"); } final EntityUpdateDescriptor descriptor = new EntityUpdateDescriptor(); descriptor.addField(BuilderFactory.get(SProcessDefinitionDeployInfoBuilderFactory.class).getActivationStateKey(), ActivationState.DISABLED.name()); final SPersistenceLogBuilder logBuilder = getQueriableLog(ActionType.UPDATED, "Disabling the process"); try { update(processId, processDefinitionDeployInfo, getUpdateRecord(descriptor, processDefinitionDeployInfo), PROCESSDEFINITION_IS_DISABLED); log(processDefinitionDeployInfo.getId(), SQueriableLog.STATUS_OK, logBuilder, "disableProcess"); } catch (final SRecorderException | SCacheException e) { log(processDefinitionDeployInfo.getId(), SQueriableLog.STATUS_FAIL, logBuilder, "disableProcess"); throw new SProcessDisablementException(e); } }
@Override public void resolveProcess(final long processId) throws SProcessDefinitionNotFoundException, SProcessDisablementException { SProcessDefinitionDeployInfo processDefinitionDeployInfo; try { processDefinitionDeployInfo = getProcessDeploymentInfo(processId); } catch (final SBonitaReadException e) { throw new SProcessDisablementException(e); } if (!ConfigurationState.UNRESOLVED.name().equals(processDefinitionDeployInfo.getConfigurationState())) { throw new SProcessDisablementException("Process " + processDefinitionDeployInfo.getName() + " with version" + processDefinitionDeployInfo.getVersion() + " is not unresolved"); } final EntityUpdateDescriptor descriptor = new EntityUpdateDescriptor(); descriptor .addField(BuilderFactory.get(SProcessDefinitionDeployInfoBuilderFactory.class).getConfigurationStateKey(), ConfigurationState.RESOLVED.name()); final SPersistenceLogBuilder logBuilder = getQueriableLog(ActionType.UPDATED, "Resolved the process"); try { update(processId, processDefinitionDeployInfo, getUpdateRecord(descriptor, processDefinitionDeployInfo), PROCESSDEFINITION_IS_RESOLVED); log(processDefinitionDeployInfo.getId(), SQueriableLog.STATUS_OK, logBuilder, "resolveProcess"); } catch (final SRecorderException | SCacheException e) { log(processDefinitionDeployInfo.getId(), SQueriableLog.STATUS_FAIL, logBuilder, "resolveProcess"); throw new SProcessDisablementException(e); } }
@Override public void enableProcess(final long processId, boolean failIfAlreadyEnabled) throws SProcessDefinitionNotFoundException, SProcessEnablementException { SProcessDefinitionDeployInfo processDefinitionDeployInfo; try { processDefinitionDeployInfo = getProcessDeploymentInfo(processId); } catch (final SBonitaReadException e) { throw new SProcessEnablementException(e); } if (failIfAlreadyEnabled && ActivationState.ENABLED.name().equals(processDefinitionDeployInfo.getActivationState())) { throw new SProcessEnablementException("Process " + processDefinitionDeployInfo.getName() + " with version " + processDefinitionDeployInfo.getVersion() + " is already enabled"); } if (ConfigurationState.UNRESOLVED.name().equals(processDefinitionDeployInfo.getConfigurationState())) { throw new SProcessEnablementException("Process " + processDefinitionDeployInfo.getName() + " with version " + processDefinitionDeployInfo.getVersion() + " can't be enabled since all dependencies are not resolved yet"); } final EntityUpdateDescriptor descriptor = new EntityUpdateDescriptor(); descriptor.addField(BuilderFactory.get(SProcessDefinitionDeployInfoBuilderFactory.class).getActivationStateKey(), ActivationState.ENABLED.name()); final SPersistenceLogBuilder logBuilder = getQueriableLog(ActionType.UPDATED, "Enabling the process"); try { update(processId, processDefinitionDeployInfo, getUpdateRecord(descriptor, processDefinitionDeployInfo), PROCESSDEFINITION_IS_ENABLED); log(processId, SQueriableLog.STATUS_OK, logBuilder, "enableProcess"); } catch (final SRecorderException | SCacheException e) { log(processId, SQueriableLog.STATUS_FAIL, logBuilder, "enableProcess"); throw new SProcessEnablementException(e); } }
@Override protected void setExceptionContext(final SBonitaException sBonitaException, final Map<String, Object> context) throws SBonitaException { final TenantServiceAccessor tenantAccessor = getTenantAccessor(context); final ProcessDefinitionService processDefinitionService = tenantAccessor.getProcessDefinitionService(); final SProcessDefinitionDeployInfo processDeploymentInfo = processDefinitionService.getProcessDeploymentInfo(processDefinitionId); sBonitaException.setProcessDefinitionIdOnContext(processDefinitionId); sBonitaException.setProcessDefinitionNameOnContext(processDeploymentInfo.getName()); sBonitaException.setProcessDefinitionVersionOnContext(processDeploymentInfo.getVersion()); }
SProcessDefinition readSProcessDefinitionFromDatabase(long processId, SProcessDefinitionDeployInfo processDeploymentInfo) throws IOException, SReflectException, SCacheException { final DesignProcessDefinition objectFromXML = processDefinitionBARContribution.convertXmlToProcess(processDeploymentInfo.getDesignContent() .getContent()); SProcessDefinition sProcessDefinition = convertDesignProcessDefinition(objectFromXML); setIdOnProcessDefinition(sProcessDefinition, processId); storeProcessDefinitionInCache(sProcessDefinition, processDeploymentInfo.getLastUpdateDate()); return sProcessDefinition; }
boolean isSProcessDefinitionUpToDate(SProcessDefinitionDeployInfo processDeploymentInfo, Pair<Long, SProcessDefinition> processWithTimestamp) { return processWithTimestamp == null || processWithTimestamp.getKey() != processDeploymentInfo.getLastUpdateDate(); }
@Override public void delete(final long processId) throws SProcessDefinitionNotFoundException, SProcessDeletionException, SDeletingEnabledProcessException { final SProcessDefinitionLogBuilder logBuilder = getQueriableLog(ActionType.DELETED, "Deleting a Process definition"); final SProcessDefinitionDeployInfo processDefinitionDeployInfo; try { processDefinitionDeployInfo = getProcessDeploymentInfo(processId); if (ActivationState.ENABLED.name().equals(processDefinitionDeployInfo.getActivationState())) { throw new SDeletingEnabledProcessException("Process is enabled.", processDefinitionDeployInfo); } } catch (final SBonitaReadException e) { log(processId, SQueriableLog.STATUS_FAIL, logBuilder, "delete"); throw new SProcessDeletionException(e, processId); } try { recorder.recordDelete(new DeleteRecord(processDefinitionDeployInfo), PROCESSDEFINITION); log(processId, SQueriableLog.STATUS_OK, logBuilder, "delete"); } catch (final SRecorderException e) { log(processId, SQueriableLog.STATUS_FAIL, logBuilder, "delete"); throw new SProcessDeletionException(e, processDefinitionDeployInfo); } }
@Override public long getLatestProcessDefinitionId(final String processName) throws SBonitaReadException, SProcessDefinitionNotFoundException { final List<SProcessDefinitionDeployInfo> sProcessDefinitionDeployInfos = getProcessDeploymentInfosOrderByTimeDesc(processName, 0, 1); if (sProcessDefinitionDeployInfos.isEmpty()) { throw new SProcessDefinitionNotFoundException(processName); } return sProcessDefinitionDeployInfos.get(0).getProcessId(); }
public void changeResolutionStatus(final long processDefinitionId, final ProcessDefinitionService processDefinitionService, final boolean resolved) throws SBonitaException { final SProcessDefinitionDeployInfo processDefinitionDeployInfo = processDefinitionService.getProcessDeploymentInfo(processDefinitionId); if (resolved) { if (ConfigurationState.UNRESOLVED.name().equals(processDefinitionDeployInfo.getConfigurationState())) { processDefinitionService.resolveProcess(processDefinitionId); } } else { if (ConfigurationState.RESOLVED.name().equals(processDefinitionDeployInfo.getConfigurationState())) { final EntityUpdateDescriptor updateDescriptor = BuilderFactory.get(SProcessDefinitionDeployInfoUpdateBuilderFactory.class).createNewInstance() .updateConfigurationState(ConfigurationState.UNRESOLVED).done(); processDefinitionService.updateProcessDefinitionDeployInfo(processDefinitionId, updateDescriptor); } } }
private void ensureProcessIsEnabled(final SProcessDefinition sProcessDefinition) throws SProcessDefinitionNotFoundException, SBonitaReadException, SProcessDefinitionException { final SProcessDefinitionDeployInfo deployInfo = processDefinitionService.getProcessDeploymentInfo(sProcessDefinition.getId()); if (ActivationState.DISABLED.name().equals(deployInfo.getActivationState())) { throw new SProcessDefinitionException("The process " + deployInfo.getName() + " " + deployInfo.getVersion() + " is not enabled.", deployInfo.getProcessId(), deployInfo.getName(), deployInfo.getVersion()); } }
public SProcessDeletionException(final Throwable cause, final SProcessDefinitionDeployInfo processDefinitionDeployInfo) { this(cause, processDefinitionDeployInfo.getId()); setProcessDefinitionNameOnContext(processDefinitionDeployInfo.getName()); setProcessDefinitionVersionOnContext(processDefinitionDeployInfo.getVersion()); }
@Override public void disableProcess(long processId, boolean failIfAlreadyDisabled) throws SProcessDefinitionNotFoundException, SProcessDisablementException{ SProcessDefinitionDeployInfo processDefinitionDeployInfo; try { processDefinitionDeployInfo = getProcessDeploymentInfo(processId); } catch (final SBonitaReadException e) { throw new SProcessDisablementException(e); } if (failIfAlreadyDisabled && ActivationState.DISABLED.name().equals(processDefinitionDeployInfo.getActivationState())) { throw new SProcessDisablementException("Process " + processDefinitionDeployInfo.getName() + " with version " + processDefinitionDeployInfo.getVersion() + " is already disabled"); } final EntityUpdateDescriptor descriptor = new EntityUpdateDescriptor(); descriptor.addField(BuilderFactory.get(SProcessDefinitionDeployInfoBuilderFactory.class).getActivationStateKey(), ActivationState.DISABLED.name()); final SPersistenceLogBuilder logBuilder = getQueriableLog(ActionType.UPDATED, "Disabling the process"); try { update(processId, processDefinitionDeployInfo, getUpdateRecord(descriptor, processDefinitionDeployInfo), PROCESSDEFINITION_IS_DISABLED); log(processDefinitionDeployInfo.getId(), SQueriableLog.STATUS_OK, logBuilder, "disableProcess"); } catch (final SRecorderException | SCacheException e) { log(processDefinitionDeployInfo.getId(), SQueriableLog.STATUS_FAIL, logBuilder, "disableProcess"); throw new SProcessDisablementException(e); } }
@Override public void resolveProcess(final long processId) throws SProcessDefinitionNotFoundException, SProcessDisablementException { SProcessDefinitionDeployInfo processDefinitionDeployInfo; try { processDefinitionDeployInfo = getProcessDeploymentInfo(processId); } catch (final SBonitaReadException e) { throw new SProcessDisablementException(e); } if (!ConfigurationState.UNRESOLVED.name().equals(processDefinitionDeployInfo.getConfigurationState())) { throw new SProcessDisablementException("Process " + processDefinitionDeployInfo.getName() + " with version" + processDefinitionDeployInfo.getVersion() + " is not unresolved"); } final EntityUpdateDescriptor descriptor = new EntityUpdateDescriptor(); descriptor .addField(BuilderFactory.get(SProcessDefinitionDeployInfoBuilderFactory.class).getConfigurationStateKey(), ConfigurationState.RESOLVED.name()); final SPersistenceLogBuilder logBuilder = getQueriableLog(ActionType.UPDATED, "Resolved the process"); try { update(processId, processDefinitionDeployInfo, getUpdateRecord(descriptor, processDefinitionDeployInfo), PROCESSDEFINITION_IS_RESOLVED); log(processDefinitionDeployInfo.getId(), SQueriableLog.STATUS_OK, logBuilder, "resolveProcess"); } catch (final SRecorderException | SCacheException e) { log(processDefinitionDeployInfo.getId(), SQueriableLog.STATUS_FAIL, logBuilder, "resolveProcess"); throw new SProcessDisablementException(e); } }
@Override public void enableProcess(final long processId, boolean failIfAlreadyEnabled) throws SProcessDefinitionNotFoundException, SProcessEnablementException { SProcessDefinitionDeployInfo processDefinitionDeployInfo; try { processDefinitionDeployInfo = getProcessDeploymentInfo(processId); } catch (final SBonitaReadException e) { throw new SProcessEnablementException(e); } if (failIfAlreadyEnabled && ActivationState.ENABLED.name().equals(processDefinitionDeployInfo.getActivationState())) { throw new SProcessEnablementException("Process " + processDefinitionDeployInfo.getName() + " with version " + processDefinitionDeployInfo.getVersion() + " is already enabled"); } if (ConfigurationState.UNRESOLVED.name().equals(processDefinitionDeployInfo.getConfigurationState())) { throw new SProcessEnablementException("Process " + processDefinitionDeployInfo.getName() + " with version " + processDefinitionDeployInfo.getVersion() + " can't be enabled since all dependencies are not resolved yet"); } final EntityUpdateDescriptor descriptor = new EntityUpdateDescriptor(); descriptor.addField(BuilderFactory.get(SProcessDefinitionDeployInfoBuilderFactory.class).getActivationStateKey(), ActivationState.ENABLED.name()); final SPersistenceLogBuilder logBuilder = getQueriableLog(ActionType.UPDATED, "Enabling the process"); try { update(processId, processDefinitionDeployInfo, getUpdateRecord(descriptor, processDefinitionDeployInfo), PROCESSDEFINITION_IS_ENABLED); log(processId, SQueriableLog.STATUS_OK, logBuilder, "enableProcess"); } catch (final SRecorderException | SCacheException e) { log(processId, SQueriableLog.STATUS_FAIL, logBuilder, "enableProcess"); throw new SProcessEnablementException(e); } }
@Override protected void setExceptionContext(final SBonitaException sBonitaException, final Map<String, Object> context) throws SBonitaException { final TenantServiceAccessor tenantAccessor = getTenantAccessor(context); final ProcessDefinitionService processDefinitionService = tenantAccessor.getProcessDefinitionService(); final SProcessDefinitionDeployInfo processDeploymentInfo = processDefinitionService.getProcessDeploymentInfo(processDefinitionId); sBonitaException.setProcessDefinitionIdOnContext(processDefinitionId); sBonitaException.setProcessDefinitionNameOnContext(processDeploymentInfo.getName()); sBonitaException.setProcessDefinitionVersionOnContext(processDeploymentInfo.getVersion()); }
SProcessDefinition readSProcessDefinitionFromDatabase(long processId, SProcessDefinitionDeployInfo processDeploymentInfo) throws IOException, SReflectException, SCacheException { final DesignProcessDefinition objectFromXML = processDefinitionBARContribution.convertXmlToProcess(processDeploymentInfo.getDesignContent() .getContent()); SProcessDefinition sProcessDefinition = convertDesignProcessDefinition(objectFromXML); setIdOnProcessDefinition(sProcessDefinition, processId); storeProcessDefinitionInCache(sProcessDefinition, processDeploymentInfo.getLastUpdateDate()); return sProcessDefinition; }
boolean isSProcessDefinitionUpToDate(SProcessDefinitionDeployInfo processDeploymentInfo, Pair<Long, SProcessDefinition> processWithTimestamp) { return processWithTimestamp == null || processWithTimestamp.getKey() != processDeploymentInfo.getLastUpdateDate(); }