public ActivityInstance toActivityInstance() { return toActivityInstance(false); }
/** writes the given activityInstances to db format, preserving the hierarchy and including the workState. */ protected BasicDBList writeActiveActivityInstances(List<ActivityInstanceImpl> activityInstances) { if (activityInstances==null || activityInstances.isEmpty()) { return null; } BasicDBList dbActivityInstances = new BasicDBList(); for (ActivityInstanceImpl activityInstance: activityInstances) { BasicDBObject dbActivityInstance = mongoMapper.write(activityInstance.toActivityInstance(true)); dbActivityInstances.add(dbActivityInstance); } return dbActivityInstances; }
/** writes the given activityInstances to db format, preserving the hierarchy and including the workState. */ protected BasicDBList writeActiveActivityInstances(List<ActivityInstanceImpl> activityInstances) { if (activityInstances==null || activityInstances.isEmpty()) { return null; } BasicDBList dbActivityInstances = new BasicDBList(); for (ActivityInstanceImpl activityInstance: activityInstances) { BasicDBObject dbActivityInstance = mongoMapper.write(activityInstance.toActivityInstance(true)); dbActivityInstances.add(dbActivityInstance); } return dbActivityInstances; }
/** recursively removes the archivable activities from the scopeInstance, serializes them to DB format and adds them to the dbArchivedActivityInstances as a flat list */ protected void collectArchivedActivities(ScopeInstanceImpl scopeInstance, BasicDBList dbArchivedActivityInstances) { if (scopeInstance.activityInstances!=null) { List<ActivityInstanceImpl> activeActivityInstances = new ArrayList<>(); for (ActivityInstanceImpl activityInstance: scopeInstance.activityInstances) { if (activityInstance.workState!=null) { // null means ready to be archived activeActivityInstances.add(activityInstance); } else { activityInstance.activityInstances = null; BasicDBObject dbActivity = mongoMapper.write(activityInstance.toActivityInstance()); String parentId = (activityInstance.parent.isWorkflowInstance() ? null : ((ActivityInstanceImpl) activityInstance.parent).id); writeString(dbActivity, PARENT, parentId); dbArchivedActivityInstances.add(dbActivity); } collectArchivedActivities(activityInstance, dbArchivedActivityInstances); } scopeInstance.activityInstances = activeActivityInstances; } }
/** recursively removes the archivable activities from the scopeInstance, serializes them to DB format and adds them to the dbArchivedActivityInstances as a flat list */ protected void collectArchivedActivities(ScopeInstanceImpl scopeInstance, BasicDBList dbArchivedActivityInstances) { if (scopeInstance.activityInstances!=null) { List<ActivityInstanceImpl> activeActivityInstances = new ArrayList<>(); for (ActivityInstanceImpl activityInstance: scopeInstance.activityInstances) { if (activityInstance.workState!=null) { // null means ready to be archived activeActivityInstances.add(activityInstance); } else { activityInstance.activityInstances = null; BasicDBObject dbActivity = mongoMapper.write(activityInstance.toActivityInstance()); String parentId = (activityInstance.parent.isWorkflowInstance() ? null : ((ActivityInstanceImpl) activityInstance.parent).id); writeString(dbActivity, PARENT, parentId); dbArchivedActivityInstances.add(dbActivity); } collectArchivedActivities(activityInstance, dbArchivedActivityInstances); } scopeInstance.activityInstances = activeActivityInstances; } }
protected void toScopeInstance(ScopeInstance scopeInstance, boolean includeWorkState) { scopeInstance.setStart(start); scopeInstance.setEnd(end); scopeInstance.setEndState(endState); scopeInstance.setDuration(duration); if (activityInstances!=null && !activityInstances.isEmpty()) { List<ActivityInstance> activityInstanceApis = new ArrayList<>(); for (ActivityInstanceImpl activityInstanceImpl: this.activityInstances) { activityInstanceApis.add(activityInstanceImpl.toActivityInstance(includeWorkState)); } scopeInstance.setActivityInstances(activityInstanceApis); } if (variableInstances!=null && !variableInstances.isEmpty()) { List<VariableInstance> variableInstanceApis = new ArrayList<>(); for (VariableInstanceImpl variableInstanceImpl: this.variableInstances) { variableInstanceApis.add(variableInstanceImpl.toVariableInstance()); } scopeInstance.setVariableInstances(variableInstanceApis); } scopeInstance.setProperties(this.properties); }