protected void updateActivityInstanceVariables(final List<Operation> operations, final Map<String, Serializable> operationsContext, final long activityInstanceId, final Long processDefinitionID) throws SOperationExecutionException { SExpressionContext sExpressionContext = buildExpressionContext(operationsContext, activityInstanceId, processDefinitionID); List<SOperation> sOperations = ServerModelConvertor.convertOperations(operations); getOperationService().execute(sOperations, activityInstanceId, DataInstanceContainer.ACTIVITY_INSTANCE.name(), sExpressionContext); }
protected void updateActivityInstanceVariables(final List<Operation> operations, final Map<String, Serializable> operationsContext, final long activityInstanceId, final Long processDefinitionID) throws SOperationExecutionException { SExpressionContext sExpressionContext = buildExpressionContext(operationsContext, activityInstanceId, processDefinitionID); List<SOperation> sOperations = ServerModelConvertor.convertOperations(operations); getOperationService().execute(sOperations, activityInstanceId, DataInstanceContainer.ACTIVITY_INSTANCE.name(), sExpressionContext); }
operationService.execute(sOperations, containerId == null ? -1 : containerId, expressionContext.getContainerType(), expressionContext);
operationService.execute(sOperations, containerId == null ? -1 : containerId, expressionContext.getContainerType(), expressionContext);
protected void executeOperations(final List<SOperation> operations, final Map<String, Object> context, SExpressionContext expressionContext, final SExpressionContext expressionContextToEvaluateOperations, final SProcessInstance sProcessInstance) throws SBonitaException { if (operations != null && !operations.isEmpty()) { SExpressionContext currentExpressionContext = expressionContextToEvaluateOperations != null ? expressionContextToEvaluateOperations : expressionContext; currentExpressionContext.setInputValues(context); if (currentExpressionContext.getContainerId() == null) { currentExpressionContext.setContainerId(sProcessInstance.getId()); currentExpressionContext.setContainerType(DataInstanceContainer.PROCESS_INSTANCE.name()); } operationService.execute(new ArrayList<>(operations), sProcessInstance.getId(), DataInstanceContainer.PROCESS_INSTANCE.name(), currentExpressionContext); } }
protected void executeOperations(final List<SOperation> operations, final Map<String, Object> context, SExpressionContext expressionContext, final SExpressionContext expressionContextToEvaluateOperations, final SProcessInstance sProcessInstance) throws SBonitaException { if (operations != null && !operations.isEmpty()) { SExpressionContext currentExpressionContext = expressionContextToEvaluateOperations != null ? expressionContextToEvaluateOperations : expressionContext; currentExpressionContext.setInputValues(context); if (currentExpressionContext.getContainerId() == null) { currentExpressionContext.setContainerId(sProcessInstance.getId()); currentExpressionContext.setContainerType(DataInstanceContainer.PROCESS_INSTANCE.name()); } operationService.execute(new ArrayList<>(operations), sProcessInstance.getId(), DataInstanceContainer.PROCESS_INSTANCE.name(), currentExpressionContext); } }
@Override public void executeOutputOperation(final List<SOperation> outputs, final SExpressionContext expressionContext, final ConnectorResult result) throws SConnectorException { final long startTime = System.currentTimeMillis(); try { expressionContext.putAllInputValues(result.getResult()); operationService.execute(outputs, expressionContext.getContainerId(), expressionContext.getContainerType(), expressionContext);// data is in disconnect(result); } catch (final SOperationExecutionException e) { throw new SConnectorException(e); } finally { if (timeTracker.isTrackable(TimeTrackerRecords.EXECUTE_CONNECTOR_OUTPUT_OPERATIONS)) { final long endTime = System.currentTimeMillis(); String desc = "ConnectorResult: " + result; timeTracker.track(TimeTrackerRecords.EXECUTE_CONNECTOR_OUTPUT_OPERATIONS, desc, endTime - startTime); } } }
@Override public void executeOutputOperation(final List<SOperation> outputs, final SExpressionContext expressionContext, final ConnectorResult result) throws SConnectorException { final long startTime = System.currentTimeMillis(); try { expressionContext.putAllInputValues(result.getResult()); operationService.execute(outputs, expressionContext.getContainerId(), expressionContext.getContainerType(), expressionContext);// data is in disconnect(result); } catch (final SOperationExecutionException e) { throw new SConnectorException(e); } finally { if (timeTracker.isTrackable(TimeTrackerRecords.EXECUTE_CONNECTOR_OUTPUT_OPERATIONS)) { final long endTime = System.currentTimeMillis(); String desc = "ConnectorResult: " + result; timeTracker.track(TimeTrackerRecords.EXECUTE_CONNECTOR_OUTPUT_OPERATIONS, desc, endTime - startTime); } } }
@Override public void updateActivityInstanceVariables(final List<Operation> operations, final long activityInstanceId, final Map<String, Serializable> expressionContexts) throws UpdateException { final TenantServiceAccessor tenantAccessor = getTenantAccessor(); final OperationService operationService = tenantAccessor.getOperationService(); final ActivityInstanceService activityInstanceService = tenantAccessor.getActivityInstanceService(); final ClassLoaderService classLoaderService = tenantAccessor.getClassLoaderService(); final ClassLoader contextClassLoader = Thread.currentThread().getContextClassLoader(); try { final SActivityInstance activityInstance = activityInstanceService.getActivityInstance(activityInstanceId); final ClassLoader processClassLoader = classLoaderService.getLocalClassLoader(ScopeType.PROCESS.name(), activityInstance.getProcessDefinitionId()); Thread.currentThread().setContextClassLoader(processClassLoader); final List<SOperation> sOperations = convertOperations(operations); final SExpressionContext sExpressionContext = new SExpressionContext(activityInstanceId, DataInstanceContainer.ACTIVITY_INSTANCE.toString(), activityInstance.getProcessDefinitionId()); sExpressionContext.setSerializableInputValues(expressionContexts); operationService.execute(sOperations, sExpressionContext); } catch (final SBonitaException e) { throw new UpdateException(e); } finally { Thread.currentThread().setContextClassLoader(contextClassLoader); } }
@Override public void updateActivityInstanceVariables(final List<Operation> operations, final long activityInstanceId, final Map<String, Serializable> expressionContexts) throws UpdateException { final TenantServiceAccessor tenantAccessor = getTenantAccessor(); final OperationService operationService = tenantAccessor.getOperationService(); final ActivityInstanceService activityInstanceService = tenantAccessor.getActivityInstanceService(); final ClassLoaderService classLoaderService = tenantAccessor.getClassLoaderService(); final ClassLoader contextClassLoader = Thread.currentThread().getContextClassLoader(); try { final SActivityInstance activityInstance = activityInstanceService.getActivityInstance(activityInstanceId); final ClassLoader processClassLoader = classLoaderService.getLocalClassLoader(ScopeType.PROCESS.name(), activityInstance.getProcessDefinitionId()); Thread.currentThread().setContextClassLoader(processClassLoader); final List<SOperation> sOperations = convertOperations(operations); final SExpressionContext sExpressionContext = new SExpressionContext(activityInstanceId, DataInstanceContainer.ACTIVITY_INSTANCE.toString(), activityInstance.getProcessDefinitionId()); sExpressionContext.setSerializableInputValues(expressionContexts); operationService.execute(sOperations, sExpressionContext); } catch (final SBonitaException e) { throw new UpdateException(e); } finally { Thread.currentThread().setContextClassLoader(contextClassLoader); } }
private void executeFlowNode(final long flowNodeInstanceId, final OperationsWithContext operations) throws SFlowNodeReadException, SFlowNodeExecutionException { // in same thread because we delete the message instance after triggering the catch event. The data is of the message // is deleted so we will be unable to execute the flow node instance if (operations.getOperations() != null && !operations.getOperations().isEmpty()) { try { operationService.execute(operations.getOperations(), flowNodeInstanceId, DataInstanceContainer.ACTIVITY_INSTANCE.name(), operations.getContext()); } catch (SOperationExecutionException e) { throw new SFlowNodeExecutionException("Unable to execute operation before executing flow node " + flowNodeInstanceId, e); } } containerRegistry.executeFlowNodeInSameThread(flowNodeInstanceId, operations.getContainerType()); }
private void executeFlowNode(final long flowNodeInstanceId, final OperationsWithContext operations) throws SFlowNodeReadException, SFlowNodeExecutionException { // in same thread because we delete the message instance after triggering the catch event. The data is of the message // is deleted so we will be unable to execute the flow node instance if (operations.getOperations() != null && !operations.getOperations().isEmpty()) { try { operationService.execute(operations.getOperations(), flowNodeInstanceId, DataInstanceContainer.ACTIVITY_INSTANCE.name(), operations.getContext()); } catch (SOperationExecutionException e) { throw new SFlowNodeExecutionException("Unable to execute operation before executing flow node " + flowNodeInstanceId, e); } } containerRegistry.executeFlowNodeInSameThread(flowNodeInstanceId, operations.getContainerType()); }
public void executeOperations(final SProcessDefinition processDefinition, final SActivityInstance activityInstance) throws SActivityStateExecutionException { try { final SFlowElementContainerDefinition processContainer = processDefinition.getProcessContainer(); final SFlowNodeDefinition flowNode = processContainer.getFlowNode(activityInstance.getFlowNodeDefinitionId()); if (flowNode instanceof SActivityDefinition) { final SActivityDefinition activityDefinition = (SActivityDefinition) flowNode; final List<SOperation> sOperations = activityDefinition.getSOperations(); final SExpressionContext sExpressionContext = new SExpressionContext(activityInstance.getId(), DataInstanceContainer.ACTIVITY_INSTANCE.name(), processDefinition.getId()); operationService.execute(sOperations, sExpressionContext); } } catch (final SOperationExecutionException e) { throw new SActivityStateExecutionException(e); } }
public void executeOperations(final SProcessDefinition processDefinition, final SActivityInstance activityInstance) throws SActivityStateExecutionException { try { final SFlowElementContainerDefinition processContainer = processDefinition.getProcessContainer(); final SFlowNodeDefinition flowNode = processContainer.getFlowNode(activityInstance.getFlowNodeDefinitionId()); if (flowNode instanceof SActivityDefinition) { final SActivityDefinition activityDefinition = (SActivityDefinition) flowNode; final List<SOperation> sOperations = activityDefinition.getSOperations(); final SExpressionContext sExpressionContext = new SExpressionContext(activityInstance.getId(), DataInstanceContainer.ACTIVITY_INSTANCE.name(), processDefinition.getId()); operationService.execute(sOperations, sExpressionContext); } } catch (final SOperationExecutionException e) { throw new SActivityStateExecutionException(e); } }
private void executeDataOutputOperations(final SProcessDefinition processDefinition, final SFlowNodeInstance instance) throws SActivityStateExecutionException { final SFlowElementContainerDefinition processContainer = processDefinition.getProcessContainer(); final SCallActivityDefinition callActivityDef = (SCallActivityDefinition) processContainer.getFlowNode(instance.getFlowNodeDefinitionId()); try { final SProcessInstance childProcInst = processInstanceService.getChildOfActivity(instance.getId()); final SExpressionContext expressionContext = new SExpressionContext(childProcInst.getId(), DataInstanceContainer.PROCESS_INSTANCE.name(), childProcInst.getProcessDefinitionId()); expressionContext.setParentProcessDefinitionId(instance.getProcessDefinitionId()); operationService.execute(callActivityDef.getDataOutputOperations(), instance.getId(), DataInstanceContainer.ACTIVITY_INSTANCE.name(), expressionContext); // archive child process instance new ProcessArchiver().archiveProcessInstance(childProcInst, archiveService, processInstanceService, documentService, logger, commentService, processDefinitionService, connectorInstanceService, classLoaderService, refBusinessDataService); } catch (final SBonitaException e) { throw new SActivityStateExecutionException(e); } }
private void executeDataOutputOperations(final SProcessDefinition processDefinition, final SFlowNodeInstance instance) throws SActivityStateExecutionException { final SFlowElementContainerDefinition processContainer = processDefinition.getProcessContainer(); final SCallActivityDefinition callActivityDef = (SCallActivityDefinition) processContainer.getFlowNode(instance.getFlowNodeDefinitionId()); try { final SProcessInstance childProcInst = processInstanceService.getChildOfActivity(instance.getId()); final SExpressionContext expressionContext = new SExpressionContext(childProcInst.getId(), DataInstanceContainer.PROCESS_INSTANCE.name(), childProcInst.getProcessDefinitionId()); expressionContext.setParentProcessDefinitionId(instance.getProcessDefinitionId()); operationService.execute(callActivityDef.getDataOutputOperations(), instance.getId(), DataInstanceContainer.ACTIVITY_INSTANCE.name(), expressionContext); // archive child process instance new ProcessArchiver().archiveProcessInstance(childProcInst, archiveService, processInstanceService, documentService, logger, commentService, processDefinitionService, connectorInstanceService, classLoaderService, refBusinessDataService); } catch (final SBonitaException e) { throw new SActivityStateExecutionException(e); } }