protected void addTaskToRepository(TaskRunTime taskRunTime) { Repository repository = EnvTool.getRepository(); repository.addTask(taskRunTime); taskRunTime.ready(); }
@Override protected boolean executeBusinessLogic(Execution execution) { Repository repository = EnvTool.getRepository(); final XpdlProcess process = repository.findLatestProcessById(subProcessId); if (process == null) { throw new BonitaRuntimeException("SubFlow : process not found " + subProcessId);
public void removeClass(final String className) throws DeploymentException { FacadeUtil.checkArgsNotNull(className); final Repository repository = EnvTool.getRepository(); if (repository.getGlobalClassData(className) == null) { throw new DeploymentException("There is no class defined in global class repository with name: ", className); } // check that no process is still using this class final Set<PackageDependency> packageDependencies = repository.getPackageDependencies(className); if (packageDependencies != null && !packageDependencies.isEmpty()) { for (final PackageDependency packageDependency : packageDependencies) { final PackageClassData data = repository.getPackageClassData(packageDependency.getPackageDefinitionUUID()); if (data == null || !data.getClasses().containsKey(className)) { throw new DeploymentException("Package is still using global class. " + "Cannot undeploy class.", className, packageDependency.getPackageDefinitionUUID()); } } } repository.removeGlobalClassData(className); ClassDataLoader.removeGlobalClassLoader(className); }
public void handleFinishedInstance(XpdlInstance instance) { ProcessInstanceUUID instanceUUID = instance.getUUID(); if (instance.getChildInstances() != null) { for (XpdlInstance child : instance.getChildInstances()) { handleFinishedInstance(child); } } Repository repository = EnvTool.getRepository(); Set<TaskRunTime> taskRuntimes = repository.getInstanceTasks(instanceUUID); if (taskRuntimes != null) { for (TaskRunTime task : taskRuntimes) { repository.removeTask(task); } } repository.removeXpdlInstance(instanceUUID); }
public void deployClass(final byte[] clazz) throws DeploymentException { FacadeUtil.checkArgsNotNull(clazz); String className; try { className = Tool.visitClass(clazz).getClassName(); } catch (final ArrayIndexOutOfBoundsException e) { throw new DeploymentException("The byte table is not correct parameter."); } final Repository repository = EnvTool.getRepository(); final GlobalClassData globalClassData = repository.getGlobalClassData(className); if (globalClassData != null) { // this class was already deployed throw new DeploymentException("There is already a deployed class with this name: ", className); } repository.storeGlobalClassData(new GlobalClassData(className, clazz)); }
String lastPackageVersion = repository.getLastPackageVersion(packageId); if (lastPackageVersion != null && lastPackageVersion.compareTo(packageVersion) >= 0) { throw new DeploymentRuntimeException("A package with id = " + packageId + " has already been deployed with version = " String processId = process.getProcessId(); String processVersion = process.getVersion(); String lastProcessVersion = repository.getLastProcessVersion(processId, packageId); if (lastProcessVersion != null && lastProcessVersion.compareTo(processVersion) >= 0) { throw new DeploymentRuntimeException("A process with id = " + processId repository.storePackageClassData(packageClassData); repository.addPackageDependencies(packageDef.getUUID(), packageDef.getClassDependencies()); repository.storePackageVersion(packageId, packageVersion); workflowProcess); Misc.badStateIfNull(xpdlProcess, "XpdlProcessBuilder returned null!"); repository.storeXpdlProcess(xpdlProcess); repository.storeProcessVersion(workflowProcess.getProcessId(), workflowProcess.getVersion(), packageDef.getPackageId());
Set<Timer> timers = repository.getInstanceTimers(instanceUUID); if (timers != null) { for (Timer timer : timers) { repository.removeTimer(timer); Set<TaskRunTime> tasks = repository.getInstanceTasks(instanceUUID); if (tasks != null) { for (TaskRunTime task : tasks) { repository.removeTask(task); repository.removeXpdlInstance(instanceUUID); Recorder recorder = EnvTool.getRecorder(); recorder.remove(processInst);
public static ClassLoader getGlobalClassLoader(Repository repository, String className) { GlobalClassData globalClassData = repository.getGlobalClassData(className); if (globalClassData != null) { if (LOG.isLoggable(Level.FINE)) { LOG.fine("Class " + className + " is defined as a global class"); } if (!globalClassLoaders.containsKey(className)) { Map<String, byte[]> datas = new HashMap<String, byte[]>(); datas.put(globalClassData.getClassName(), globalClassData.getClassData()); BonitaClassLoader bonitaClassLoader = new BonitaClassLoader(datas); globalClassLoaders.put(className, bonitaClassLoader); if (LOG.isLoggable(Level.FINE)) { LOG.fine("BonitaClassLoader added to globalClassLoaders for class " + className); } } return globalClassLoaders.get(className); } return null; }
XpdlExecution execution = repository.getExecutionPointingOnNode( instanceUUID, activityId, activity.getIterationId(), activity.getActivityInstanceId()); if (execution == null) {
public void recordEnterActivity(final AbstractActivity activity, final XpdlExecution xpdlExecution) { Misc.checkArgsNotNull(activity, xpdlExecution); final NodeImpl node = xpdlExecution.getNode(); XpdlInstance instance = xpdlExecution.getXpdlInstance(); final String id = node.getName(); final PackageDefinitionUUID packageUUID = instance.getPackageDefinitionUUID(); final ProcessDefinitionUUID processUUID = instance.getProcessDefinitionUUID(); final ProcessInstanceUUID instanceUUID = instance.getUUID(); final String iterationId = xpdlExecution.getIterationId(); final String activityInstanceId = xpdlExecution.getActivityInstanceId(); final ActivityFullInstanceImpl<ActivityBody> activityRecord = new ActivityFullInstanceImpl<ActivityBody>( new ActivityInstanceUUID(instanceUUID, activity.getActivityId(), EnvTool.getRepository().getNextActivityInstanceNb(instanceUUID, activity.getActivityId())), id, packageUUID, processUUID, instanceUUID, iterationId, activityInstanceId); ActivityBody body = activity.getBody(xpdlExecution, activityRecord); activityRecord.setBody(body); ProcessFullInstance processInstance = getProcessInstance(instanceUUID); processInstance.addActivity(activityRecord); activityRecord.setVariablesBeforeReady(xpdlExecution.getScopeVariables()); }
processParameters = createProcessParameters(subProcess); } else { XpdlProcess externalSubProcess = EnvTool.getRepository().findLatestProcessById(subProcessId); if (externalSubProcess == null) { throw new DeploymentRuntimeException("Unable to find process \"" + subProcessId + "\" used in subFlow. "