diff --git a/db/is2-insert-selemix.sql b/db/is2-insert-selemix.sql index 32955d67..e1c836ab 100644 --- a/db/is2-insert-selemix.sql +++ b/db/is2-insert-selemix.sql @@ -8,9 +8,9 @@ SET FOREIGN_KEY_CHECKS=0; -- ----------------------------------------------------- -- BUSINESS_PROCESS -- ----------------------------------------------------- -INSERT INTO `is2_business_process` (`ID`, `NAME`, `DESCR`, `LABEL`, `PARENT`, `ORDER`) VALUES (75,'Selezione Errori Influenti ','Esegue la stima, predizione e valuta gli errori influenti automaticamente in due step','Selezione2S',NULL,1); -INSERT INTO `is2_business_process` (`ID`, `NAME`, `DESCR`, `LABEL`, `PARENT`, `ORDER`) VALUES (160,'Stima e selezione','Esecuzione del processo di stima, predizione e selezione automatica','Bistep',75,1); - +INSERT INTO `is2_business_process` (`ID`, `NAME`, `DESCR`, `LABEL`, `PARENT`, `ORDER`) VALUES (80,'Selezione Errori Influenti multi process','Esegue la stima, predizione e valuta gli errori influenti in due processi successivi','Selezione2P',NULL,1); +INSERT INTO `is2_business_process` (`ID`, `NAME`, `DESCR`, `LABEL`, `PARENT`, `ORDER`) VALUES (110,'Stima e Predizione','Escuzione del processo di stima e predizione','Estimates',80,1); +INSERT INTO `is2_business_process` (`ID`, `NAME`, `DESCR`, `LABEL`, `PARENT`, `ORDER`) VALUES (130,'Editing Selettivo','Esecuzione del processo di selezione dei valori influenti','Selection',80,2); -- ----------------------------------------------------- -- CATALOGUE OF BUSINESS SERVICES -- ----------------------------------------------------- @@ -39,13 +39,13 @@ INSERT INTO `is2_process_step` (`ID`, `NAME`, `DESCR`, `BUSINESS_SERVICE_ID`) V -- MANY TO MANY RELATION -> BUSINESS_FUNCTION - BUSINESS_PROCESS -- ----------------------------------------------------- INSERT INTO `is2_link_function_process` (`BUSINESS_FUNCTION_ID`, `BUSINESS_PROCESS_ID`) - VALUES (2,75); + VALUES (2,80); -- ----------------------------------------------------- -- MANY TO MANY RELATION -> BUSINESS_PROCESS - PROCESS_STEP -- ----------------------------------------------------- INSERT INTO `is2_link_process_step` (`BUSINESS_PROCESS_ID`, `PROCESS_STEP_ID`) - VALUES (160,10),(160,30); + VALUES (110,10),(130,30); -- ----------------------------------------------------- -- -- SECTION PROCESS DESIGN - END diff --git a/src/main/java/it/istat/is2/workflow/batch/WorkFlowBatchDao.java b/src/main/java/it/istat/is2/workflow/batch/WorkFlowBatchDao.java index d38753b4..c6d027a9 100644 --- a/src/main/java/it/istat/is2/workflow/batch/WorkFlowBatchDao.java +++ b/src/main/java/it/istat/is2/workflow/batch/WorkFlowBatchDao.java @@ -16,6 +16,8 @@ public interface WorkFlowBatchDao extends CrudRepository { public List findByIdSessione(Long idSessione); + public void deleteByJobInstanceId(@Param("jobInstanceId")Long jobInstanceId); + @Query("SELECT batch.jobInstanceId FROM Batch batch WHERE batch.idElaborazione = :idElab") public List findJobInstanceIdByElabId(@Param("idElab")Long idElab); @@ -23,5 +25,12 @@ public interface WorkFlowBatchDao extends CrudRepository { @Query(value="DELETE FROM BATCH_JOB_INSTANCE WHERE JOB_INSTANCE_ID = ?1", nativeQuery=true) public void deleteJobInstanceById(@Param("jobInstanceId")Long jobInstanceId); + @Modifying + @Query(value="DELETE FROM batch_job_execution WHERE JOB_INSTANCE_ID = ?1", nativeQuery=true) + public void deleteBatchJobExecutionById(@Param("jobInstanceId")Long jobInstanceId); + + @Modifying + @Query(value="DELETE FROM batch_job_execution_context WHERE JOB_INSTANCE_ID = ?1", nativeQuery=true) + public void deleteBatchJobExecutionContextById(@Param("jobInstanceId")Long jobInstanceId); } diff --git a/src/main/java/it/istat/is2/workflow/service/WorkflowService.java b/src/main/java/it/istat/is2/workflow/service/WorkflowService.java index b622d2e5..e1e0284b 100644 --- a/src/main/java/it/istat/is2/workflow/service/WorkflowService.java +++ b/src/main/java/it/istat/is2/workflow/service/WorkflowService.java @@ -78,466 +78,472 @@ @Service public class WorkflowService { - @Autowired - private WorkSessionDao workSessionDao; - @Autowired - private DataProcessingDao dataProcessingDao; - @Autowired - private WorkSetDao workSetDao; - @Autowired - private StepRuntimeDao stepRuntimeDao; - @Autowired - private AppRoleDao appRoleDao; - @Autowired - private RulesetDao rulesetDao; - @Autowired - private DatasetColumnDao datasetColumnDao; - @Autowired - private StepInstanceDao stepInstanceDao; - @Autowired - private StepInstanceSignatureDao stepInstanceSignatureDao; - @Autowired - private DataTypeDao dataTypeDao; - @Autowired - private TypeIODao typeIODao; - @Autowired - private SqlGenericDao sqlGenericDao; - @Autowired - private WorkFlowBatchDao workFlowBatchDao; - - - public WorkSession findWorkSession(Long id) { - return workSessionDao.findById(id).get(); - } - - public DataProcessing findDataProcessing(Long id) { - return dataProcessingDao.findById(id).get(); - } - - public void eliminaDataProcessing(Long id) { - dataProcessingDao.deleteById(id); - } - - public String loadWorkSetValues(Long idDataProcessing, Integer length, Integer start, Integer draw) throws JSONException { - List dataList = workSetDao.findWorkSetDatasetColonnabyQuery(idDataProcessing, start, start + length); - Integer numRighe = 0; - if (!dataList.isEmpty()) { - numRighe = dataList.get(0).getContents().size(); - } - - JSONObject obj = new JSONObject(); - JSONArray data = new JSONArray(); - for (int i = 0; i < numRighe; i++) { - JSONObject obji = new JSONObject(); - for (int j = 0; j < dataList.size(); j++) { - obji.put(dataList.get(j).getName(), dataList.get(j).getContents().get(i)); - } - data.put(obji); - } - - obj.put("data", data); - obj.put("draw", draw); - obj.put("recordsTotal", numRighe); - obj.put("recordsFiltered", numRighe); - - return obj.toString(); - } - - public String loadWorkSetValoriByDataProcessing(Long idDataProcessing, Integer typeIO, Integer groupRole, - Integer length, Integer start, Integer draw, HashMap paramsFilter) throws JSONException { - - List dataList = sqlGenericDao.findWorkSetDatasetColumnByQuery(idDataProcessing, typeIO, groupRole, start, start + length, paramsFilter); - // start, start + length, query_filter); - Integer numRighe = 0; - Integer valueSize = 0; - if (!dataList.isEmpty()) { - numRighe = dataList.get(0).getContents().size(); - valueSize = dataList.get(0).getContentSize(); - } - JSONObject obj = new JSONObject(); - JSONArray data = new JSONArray(); - for (int i = 0; i < numRighe; i++) { - JSONObject obji = new JSONObject(); - for (int j = 0; j < dataList.size(); j++) { - obji.put(dataList.get(j).getName(), dataList.get(j).getContents().get(i)); - } - data.put(obji); - } - - obj.put("data", data); - obj.put("draw", draw); - obj.put("recordsTotal", valueSize); - obj.put("recordsFiltered", valueSize); - - return obj.toString(); - } - - public List loadWorkSetValoriByDataProcessing(Long idDataProcessing, Integer typeIO, Integer groupRole,HashMap paramsFilter) { - List dataList = sqlGenericDao.findWorkSetDatasetColumnByQuery(idDataProcessing, typeIO,groupRole, 0, null, paramsFilter); - return dataList; - } - - public Map> loadWorkSetValoriByDataProcessingRoleGroupMap(Long idDataProcessing,Integer groupRole) { - Map> ret = new LinkedHashMap<>(); - DataProcessing el = findDataProcessing(idDataProcessing); - AppRole groupAppRole = new AppRole(groupRole); - for (Iterator iterator = el.getStepRuntimes().iterator(); iterator.hasNext();) { - StepRuntime stepRuntime = (StepRuntime) iterator.next(); - if (groupAppRole.equals(stepRuntime.getRoleGroup())) { - ret.put(stepRuntime.getWorkset().getName(), stepRuntime.getWorkset().getContents()); - } - } - - return ret; - } - - /* public DataProcessing doStep(DataProcessing dataProcessing, StepInstance stepInstance) throws Exception { - EngineService engine = engineFactory.getEngine(stepInstance.getAppService().getInterfaccia()); - try { - engine.init(dataProcessing, stepInstance); - engine.doAction(); - engine.processOutput(); - - } catch (Exception e) { - Logger.getRootLogger().error(e.getMessage()); - notificationService.addErrorMessage("Error: " + e.getMessage()); - logService.save("Error: " + e.getMessage()); - throw (e); - } finally { - engine.destroy(); - } - - return dataProcessing; - } -*/ - public List getStepRuntimes(Long idDataProcessing) { - return stepRuntimeDao.findByDataProcessing(new DataProcessing(idDataProcessing)); - } - - public void creaAssociazioni(MappingVarsFormBean form, DataProcessing dataProcessing) { - - List appRolesAll = appRoleDao.findAll(); - Map appRolesAllMap = Utility.getMapRuoliById(appRolesAll); - List varList = dataProcessing.getStepRuntimes(); - Workset workset = null; - - for (int i = 0; i < form.getDataProcessing().length; i++) { - StepRuntime stepRuntime = new StepRuntime(); - stepRuntime.setDataProcessing(dataProcessing); - String idr = form.getRole()[i]; - String nomeVar = form.getValue()[i]; - AppRole sxruolo = appRolesAllMap.get(Integer.valueOf(idr)); - workset = null; - for (int y = 0; y < varList.size(); y++) { - if (varList.get(y).getWorkset() != null && nomeVar.equals(varList.get(y).getWorkset().getName()) - && sxruolo.getId().equals(varList.get(y).getAppRole().getId())) { - workset = varList.get(y).getWorkset(); - } - } - - if (workset == null) { - workset = new Workset(); - DatasetColumn dscolumn = datasetColumnDao.findById((Long.parseLong(form.getVariable()[i]))).get(); - workset.setName(dscolumn.getDatasetFile().getFileLabel() + "_" + dscolumn.getName().replaceAll("\\.", "_")); - workset.setContents(dscolumn.getContents()); - workset.setContentSize(workset.getContents().size()); - } - - stepRuntime.setAppRole(sxruolo); - stepRuntime.setOrderCode(sxruolo.getOrder()); - stepRuntime.setDataType(new DataTypeCls(IS2Const.DATA_TYPE_VARIABLE)); - workset.setDataType(new DataTypeCls(IS2Const.DATA_TYPE_VARIABLE)); - stepRuntime.setTypeIO(new TypeIO(IS2Const.TYPE_IO_INPUT)); - ArrayList listaStepV = new ArrayList<>(); - listaStepV.add(stepRuntime); - workset.setStepRuntimes(listaStepV); - stepRuntime.setWorkset(workset); - - stepRuntimeDao.save(stepRuntime); - } - } - - public void updateAssociazione(MappingVarsFormBean form, DataProcessing dataProcessing) { - - List appRolesAll = appRoleDao.findAll(); - Map appRolesAllMap = Utility.getMapRuoliById(appRolesAll); - List varList = dataProcessing.getStepRuntimes(); - Workset workset = null; - Integer idVar = Integer.parseInt(form.getVariable()[0]); - StepRuntime stepRuntime = stepRuntimeDao.findById(idVar).get(); - String idr = form.getRole()[0]; - String nomeVar = form.getValue()[0]; - String nomeOld = form.getValueOld(); - AppRole sxruolo = appRolesAllMap.get(Integer.valueOf(idr)); - workset = null; - - for (int y = 0; y < varList.size(); y++) { - if (varList.get(y).getWorkset() != null && nomeOld.equals(varList.get(y).getWorkset().getName())) { - workset = varList.get(y).getWorkset(); - } - } - - if (workset == null) { - workset = new Workset(); - DatasetColumn dscolumn = datasetColumnDao.findById((Long.parseLong(form.getVariable()[0]))).orElse(new DatasetColumn()); - workset.setName(dscolumn.getName().replaceAll("\\.", "_")); - workset.setContents(dscolumn.getContents()); - workset.setContentSize(workset.getContents().size()); - } - - workset.setName(nomeVar); - stepRuntime.setAppRole(sxruolo); - ArrayList listaStepV = new ArrayList<>(); - listaStepV.add(stepRuntime); - workset.setStepRuntimes(listaStepV); - stepRuntime.setWorkset(workset); - - stepRuntimeDao.save(stepRuntime); - } -/* - public DataProcessing doBusinessProc(DataProcessing dataProcessing, Long idBProc) throws Exception { - BusinessProcess businessProcess = businessProcessDao.findById(idBProc).orElse(new BusinessProcess()); - for (Iterator iterator = businessProcess.getBusinessSteps().iterator(); iterator.hasNext();) { - BusinessStep businessStep = (BusinessStep) iterator.next(); - for (Iterator iteratorStep = businessStep.getStepInstances().iterator(); iteratorStep.hasNext();) { - StepInstance stepInstance = (StepInstance) iteratorStep.next(); - dataProcessing = doStep(dataProcessing, stepInstance); - } - } - return dataProcessing; - } -*/ - public List getStepRuntimesNoValues(Long idDataProcessing, DataTypeCls dataType) { - return stepRuntimeDao.findByDataProcessingNoValues(new DataProcessing(idDataProcessing), dataType); - } - - public List getStepRuntimesDataTypeNoValues(Long idDataProcessing, DataTypeCls dataType, - TypeIO typeIO, AppRole appRole) { - return stepRuntimeDao.findByDataProcessingStatusNoValues(new DataProcessing(idDataProcessing), dataType, - typeIO, appRole); - } - - public void associaParametri(MappingVarsFormBean form, DataProcessing dataProcessing) { - - List appRolesAll = appRoleDao.findAll(); - Map appRolesAllMap = Utility.getMapRuoliById(appRolesAll); - - for (int i = 0; i < form.getDataProcessing().length; i++) { - String[] all_parametri = form.getParameters(); - String parametri = all_parametri[i]; - // String[] stringTokenizer = parametri.split("|"); - StringTokenizer stringTokenizer = new StringTokenizer(parametri, "|"); - - AppRole sxruolo = null; - String idparam = null; - String nomeparam = null; - String ruoloparam = null; - - while (stringTokenizer.hasMoreTokens()) { - // ordine: nomeParam, idParam, ruolo - nomeparam = stringTokenizer.nextToken(); - idparam = stringTokenizer.nextToken(); - ruoloparam = stringTokenizer.nextToken(); - } - sxruolo = appRolesAllMap.get(Integer.valueOf(ruoloparam)); - StepRuntime stepRuntime = new StepRuntime(); - stepRuntime.setDataProcessing(dataProcessing); - stepRuntime.setAppRole(sxruolo); - Workset workset = new Workset(); - workset.setName(nomeparam); - stepRuntime.setOrderCode(sxruolo.getOrder()); - stepRuntime.setDataType(new DataTypeCls(IS2Const.DATA_TYPE_PARAMETER)); - stepRuntime.setTypeIO(new TypeIO(IS2Const.TYPE_IO_INPUT)); - String value = form.getValue()[i]; - // String[] values = value.split(" "); - workset.setContents(Arrays.asList("1")); - workset.setParamValue(value); - workset.setContentSize(1); - workset.setDataType(new DataTypeCls(IS2Const.DATA_TYPE_PARAMETER)); - - ArrayList listaStepV = new ArrayList<>(); - listaStepV.add(stepRuntime); - workset.setStepRuntimes(listaStepV); - stepRuntime.setWorkset(workset); - stepRuntimeDao.save(stepRuntime); - } - } - - public void updateParametri(MappingVarsFormBean form, DataProcessing dataProcessing) { - for (int i = 0; i < form.getDataProcessing().length; i++) { - String[] all_parametri = form.getParameters(); - String idWorkset = all_parametri[i]; - - Workset workset = workSetDao.findById(Long.valueOf(idWorkset)).get(); - String value = form.getValue()[i]; - workset.setParamValue(value); - workSetDao.save(workset); - } - } - - public List getStepRuntimeParameters(Long idDataProcessing) { - return stepRuntimeDao.findStepRuntimes(new DataProcessing(idDataProcessing), - new DataTypeCls(IS2Const.DATA_TYPE_PARAMETER)); - } - - public List getStepRuntimesRuleset(Long idDataProcessing) { - return stepRuntimeDao.findStepRuntimes(new DataProcessing(idDataProcessing), - new DataTypeCls(IS2Const.DATA_TYPE_RULESET)); - } - - public List findAppRolesByProcess(BusinessProcess businessProcess, int flagIO, DataTypeCls dataType) { - List ret = new ArrayList<>(); - List ret2 = new ArrayList<>(); - List instanceBF = findAllStepInstanceByProcess(businessProcess); - AppRole sxappRoles = new AppRole(); - - for (Iterator iterator = instanceBF.iterator(); iterator.hasNext();) { - StepInstance stepInstance = (StepInstance) iterator.next(); - List stepSignatures = stepInstance.getStepInstanceSignatures(); - for (Iterator iterator2 = stepSignatures.iterator(); iterator2.hasNext();) { - StepInstanceSignature stepSignature = (StepInstanceSignature) iterator2.next(); - if (flagIO == 0) {// flagIO All - if ((stepSignature.getTypeIO().equals(new TypeIO(IS2Const.TYPE_IO_INPUT)) && stepSignature - .getAppRole().getDataType().equals(dataType))) { - ret.add(stepSignature.getAppRole()); - } - - } else { - if ((stepSignature.getTypeIO().equals(new TypeIO(IS2Const.TYPE_IO_INPUT)) && stepSignature - .getAppRole().getDataType().getId().intValue() == IS2Const.DATA_TYPE_VARIABLE) - || (stepSignature.getTypeIO().equals(new TypeIO(IS2Const.TYPE_IO_OUTPUT)) - && stepSignature.getAppRole().getDataType().equals(dataType))) { - ret.add(stepSignature.getAppRole()); - } - } - - } - } - // Rimuovo i appRoles duplicati nel caso si disponga di più variabili per processo - for (int i = 0; i < ret.size(); i++) { - sxappRoles = ret.get(i); - if (!ret2.contains(sxappRoles)) { - ret2.add(sxappRoles); - } - } - - return ret2; - } - - private List findAllStepInstanceByProcess(BusinessProcess businessProcess) { - return stepInstanceDao.findAllStepInstanceByProcess(businessProcess); - } - - private List findAllStepInstanceBySubBProcess(BusinessProcess subBusinessProcess) { - return stepInstanceDao.findAllStepInstanceBySubBProcess(subBusinessProcess); - } - - public List findParametersByProcess(BusinessProcess businessProcess) { - - List ret = new ArrayList<>(); - List instanceBF = findAllStepInstanceByProcess(businessProcess); - for (Iterator iterator = instanceBF.iterator(); iterator.hasNext();) { - StepInstance stepInstance = (StepInstance) iterator.next(); - List sxsetpppList = stepInstanceSignatureDao.findAllStepSignaturesByStepAndTypeIO(stepInstance, new TypeIO(IS2Const.TYPE_IO_INPUT), - new DataTypeCls(Integer.valueOf(IS2Const.DATA_TYPE_PARAMETER))); // INPUT 1; 1 PARAMETRO - ret.addAll(sxsetpppList); - } - return ret; - } - - public Map> findParametriAndSubProcessesByProcess(BusinessProcess businessProcess) { - - Map> ret = new HashMap<>(); - - for (Iterator iteratorb = businessProcess.getBusinessSubProcesses().iterator(); iteratorb.hasNext();) { - BusinessProcess suBusinessProcess = (BusinessProcess) iteratorb.next(); - - List paramsList = new ArrayList(); - List instanceBF = findAllStepInstanceBySubBProcess(suBusinessProcess); - - for (Iterator iterator = instanceBF.iterator(); iterator.hasNext();) { - StepInstance stepInstance = (StepInstance) iterator.next(); - List sxsetpppList = stepInstanceSignatureDao - .findAllStepSignaturesByStepAndTypeIO(stepInstance, - new TypeIO(IS2Const.TYPE_IO_INPUT), - new DataTypeCls(Integer.valueOf(IS2Const.DATA_TYPE_PARAMETER))); // INPUT 1; 1 PARAMETRO - paramsList.addAll(sxsetpppList); - } - ret.put(suBusinessProcess.getId(), paramsList); - } - - return ret; - } - - public boolean deleteWorkset(Workset workset) { - Long aa = workset.getId(); - workSetDao.deleteById(aa); - return true; - } - - public DataTypeCls getDataTypeById(Integer dataType) { - return dataTypeDao.findById(dataType).get(); - } - - public TypeIO getTypeIOById(Integer typeIo) { - return typeIODao.findById(typeIo).get(); - } - - public List getOutputRoleGroupsStepRuntimes(Long idDataProcessing, TypeIO typeIO,DataTypeCls dataType) { - return stepRuntimeDao.getOutputRoleGroupsStepRuntimes(idDataProcessing,dataType,typeIO); - } - - public HashMap> findMissingAppRoleySubProcessAndTipoVar(DataProcessing dataProcessing, DataTypeCls dataType) { - HashMap> ret = new HashMap<>(); - List stepRuntimes = getStepRuntimesNoValues(dataProcessing.getId(), dataType); - List stepRuntimesRoles = new ArrayList<>(); - for (StepRuntime stepRuntime : stepRuntimes) { - stepRuntimesRoles.add(stepRuntime.getAppRole()); - } - - for (Iterator iteratorb = dataProcessing.getBusinessProcess().getBusinessSubProcesses().iterator(); iteratorb.hasNext();) { - BusinessProcess suBusinessProcess = (BusinessProcess) iteratorb.next(); - - Set roleNameSet = new HashSet(); - List instanceBF = findAllStepInstanceBySubBProcess(suBusinessProcess); - - for (Iterator iterator = instanceBF.iterator(); iterator.hasNext();) { - StepInstance stepInstance = (StepInstance) iterator.next(); - - for (Iterator iteratorAppRoles = stepInstance.getStepInstanceSignatures() - .iterator(); iteratorAppRoles.hasNext();) { - { - StepInstanceSignature stepInstanceAppRole = iteratorAppRoles.next(); - if (stepInstanceAppRole.getTypeIO().equals(new TypeIO(IS2Const.TYPE_IO_INPUT)) - && stepInstanceAppRole.getIsRequerid()) { - AppRole ar = stepInstanceAppRole.getAppRole(); - if (ar.getDataType().equals(dataType) && !stepRuntimesRoles.contains(ar)) { - roleNameSet.add(ar.getName()); - } - } - } - } - - } - ret.put(suBusinessProcess.getId(), new ArrayList<>(roleNameSet)); - } - - return ret; - } - - public HashMap> findMissingVariablesParamsBySubProcess(DataProcessing dataProcessing) { - return null; - } + @Autowired + private WorkSessionDao workSessionDao; + @Autowired + private DataProcessingDao dataProcessingDao; + @Autowired + private WorkSetDao workSetDao; + @Autowired + private StepRuntimeDao stepRuntimeDao; + @Autowired + private AppRoleDao appRoleDao; + @Autowired + private RulesetDao rulesetDao; + @Autowired + private DatasetColumnDao datasetColumnDao; + @Autowired + private StepInstanceDao stepInstanceDao; + @Autowired + private StepInstanceSignatureDao stepInstanceSignatureDao; + @Autowired + private DataTypeDao dataTypeDao; + @Autowired + private TypeIODao typeIODao; + @Autowired + private SqlGenericDao sqlGenericDao; + @Autowired + private WorkFlowBatchDao workFlowBatchDao; + + public WorkSession findWorkSession(Long id) { + return workSessionDao.findById(id).get(); + } + + public DataProcessing findDataProcessing(Long id) { + return dataProcessingDao.findById(id).get(); + } + + public void eliminaDataProcessing(Long id) { + dataProcessingDao.deleteById(id); + } + + public String loadWorkSetValues(Long idDataProcessing, Integer length, Integer start, Integer draw) + throws JSONException { + List dataList = workSetDao.findWorkSetDatasetColonnabyQuery(idDataProcessing, start, start + length); + Integer numRighe = 0; + if (!dataList.isEmpty()) { + numRighe = dataList.get(0).getContents().size(); + } + + JSONObject obj = new JSONObject(); + JSONArray data = new JSONArray(); + for (int i = 0; i < numRighe; i++) { + JSONObject obji = new JSONObject(); + for (int j = 0; j < dataList.size(); j++) { + obji.put(dataList.get(j).getName(), dataList.get(j).getContents().get(i)); + } + data.put(obji); + } + + obj.put("data", data); + obj.put("draw", draw); + obj.put("recordsTotal", numRighe); + obj.put("recordsFiltered", numRighe); + + return obj.toString(); + } + + public String loadWorkSetValoriByDataProcessing(Long idDataProcessing, Integer typeIO, Integer groupRole, + Integer length, Integer start, Integer draw, HashMap paramsFilter) throws JSONException { + + List dataList = sqlGenericDao.findWorkSetDatasetColumnByQuery(idDataProcessing, typeIO, groupRole, + start, start + length, paramsFilter); + // start, start + length, query_filter); + Integer numRighe = 0; + Integer valueSize = 0; + if (!dataList.isEmpty()) { + numRighe = dataList.get(0).getContents().size(); + valueSize = dataList.get(0).getContentSize(); + } + JSONObject obj = new JSONObject(); + JSONArray data = new JSONArray(); + for (int i = 0; i < numRighe; i++) { + JSONObject obji = new JSONObject(); + for (int j = 0; j < dataList.size(); j++) { + obji.put(dataList.get(j).getName(), dataList.get(j).getContents().get(i)); + } + data.put(obji); + } + + obj.put("data", data); + obj.put("draw", draw); + obj.put("recordsTotal", valueSize); + obj.put("recordsFiltered", valueSize); + + return obj.toString(); + } + + public List loadWorkSetValoriByDataProcessing(Long idDataProcessing, Integer typeIO, Integer groupRole, + HashMap paramsFilter) { + List dataList = sqlGenericDao.findWorkSetDatasetColumnByQuery(idDataProcessing, typeIO, groupRole, 0, + null, paramsFilter); + return dataList; + } + + public Map> loadWorkSetValoriByDataProcessingRoleGroupMap(Long idDataProcessing, + Integer groupRole) { + Map> ret = new LinkedHashMap<>(); + DataProcessing el = findDataProcessing(idDataProcessing); + AppRole groupAppRole = new AppRole(groupRole); + for (Iterator iterator = el.getStepRuntimes().iterator(); iterator.hasNext();) { + StepRuntime stepRuntime = (StepRuntime) iterator.next(); + if (groupAppRole.equals(stepRuntime.getRoleGroup())) { + ret.put(stepRuntime.getWorkset().getName(), stepRuntime.getWorkset().getContents()); + } + } + + return ret; + } + + /* + * public DataProcessing doStep(DataProcessing dataProcessing, StepInstance + * stepInstance) throws Exception { EngineService engine = + * engineFactory.getEngine(stepInstance.getAppService().getInterfaccia()); try { + * engine.init(dataProcessing, stepInstance); engine.doAction(); + * engine.processOutput(); + * + * } catch (Exception e) { Logger.getRootLogger().error(e.getMessage()); + * notificationService.addErrorMessage("Error: " + e.getMessage()); + * logService.save("Error: " + e.getMessage()); throw (e); } finally { + * engine.destroy(); } + * + * return dataProcessing; } + */ + public List getStepRuntimes(Long idDataProcessing) { + return stepRuntimeDao.findByDataProcessing(new DataProcessing(idDataProcessing)); + } + + public void creaAssociazioni(MappingVarsFormBean form, DataProcessing dataProcessing) { + + List appRolesAll = appRoleDao.findAll(); + Map appRolesAllMap = Utility.getMapRuoliById(appRolesAll); + List varList = dataProcessing.getStepRuntimes(); + Workset workset = null; + + for (int i = 0; i < form.getDataProcessing().length; i++) { + StepRuntime stepRuntime = new StepRuntime(); + stepRuntime.setDataProcessing(dataProcessing); + String idr = form.getRole()[i]; + String nomeVar = form.getValue()[i]; + AppRole sxruolo = appRolesAllMap.get(Integer.valueOf(idr)); + workset = null; + for (int y = 0; y < varList.size(); y++) { + if (varList.get(y).getWorkset() != null && nomeVar.equals(varList.get(y).getWorkset().getName()) + && sxruolo.getId().equals(varList.get(y).getAppRole().getId())) { + workset = varList.get(y).getWorkset(); + } + } + + if (workset == null) { + workset = new Workset(); + DatasetColumn dscolumn = datasetColumnDao.findById((Long.parseLong(form.getVariable()[i]))).get(); + workset.setName( + dscolumn.getDatasetFile().getFileLabel() + "_" + dscolumn.getName().replaceAll("\\.", "_")); + workset.setContents(dscolumn.getContents()); + workset.setContentSize(workset.getContents().size()); + } + + stepRuntime.setAppRole(sxruolo); + stepRuntime.setOrderCode(sxruolo.getOrder()); + stepRuntime.setDataType(new DataTypeCls(IS2Const.DATA_TYPE_VARIABLE)); + workset.setDataType(new DataTypeCls(IS2Const.DATA_TYPE_VARIABLE)); + stepRuntime.setTypeIO(new TypeIO(IS2Const.TYPE_IO_INPUT)); + ArrayList listaStepV = new ArrayList<>(); + listaStepV.add(stepRuntime); + workset.setStepRuntimes(listaStepV); + stepRuntime.setWorkset(workset); + + stepRuntimeDao.save(stepRuntime); + } + } + + public void updateAssociazione(MappingVarsFormBean form, DataProcessing dataProcessing) { + + List appRolesAll = appRoleDao.findAll(); + Map appRolesAllMap = Utility.getMapRuoliById(appRolesAll); + List varList = dataProcessing.getStepRuntimes(); + Workset workset = null; + Integer idVar = Integer.parseInt(form.getVariable()[0]); + StepRuntime stepRuntime = stepRuntimeDao.findById(idVar).get(); + String idr = form.getRole()[0]; + String nomeVar = form.getValue()[0]; + String nomeOld = form.getValueOld(); + AppRole sxruolo = appRolesAllMap.get(Integer.valueOf(idr)); + workset = null; + + for (int y = 0; y < varList.size(); y++) { + if (varList.get(y).getWorkset() != null && nomeOld.equals(varList.get(y).getWorkset().getName())) { + workset = varList.get(y).getWorkset(); + } + } + + if (workset == null) { + workset = new Workset(); + DatasetColumn dscolumn = datasetColumnDao.findById((Long.parseLong(form.getVariable()[0]))) + .orElse(new DatasetColumn()); + workset.setName(dscolumn.getName().replaceAll("\\.", "_")); + workset.setContents(dscolumn.getContents()); + workset.setContentSize(workset.getContents().size()); + } + + workset.setName(nomeVar); + stepRuntime.setAppRole(sxruolo); + ArrayList listaStepV = new ArrayList<>(); + listaStepV.add(stepRuntime); + workset.setStepRuntimes(listaStepV); + stepRuntime.setWorkset(workset); + + stepRuntimeDao.save(stepRuntime); + } + + /* + * public DataProcessing doBusinessProc(DataProcessing dataProcessing, Long + * idBProc) throws Exception { BusinessProcess businessProcess = + * businessProcessDao.findById(idBProc).orElse(new BusinessProcess()); for + * (Iterator iterator = businessProcess.getBusinessSteps().iterator(); + * iterator.hasNext();) { BusinessStep businessStep = (BusinessStep) + * iterator.next(); for (Iterator iteratorStep = + * businessStep.getStepInstances().iterator(); iteratorStep.hasNext();) { + * StepInstance stepInstance = (StepInstance) iteratorStep.next(); + * dataProcessing = doStep(dataProcessing, stepInstance); } } return + * dataProcessing; } + */ + public List getStepRuntimesNoValues(Long idDataProcessing, DataTypeCls dataType) { + return stepRuntimeDao.findByDataProcessingNoValues(new DataProcessing(idDataProcessing), dataType); + } + + public List getStepRuntimesDataTypeNoValues(Long idDataProcessing, DataTypeCls dataType, TypeIO typeIO, + AppRole appRole) { + return stepRuntimeDao.findByDataProcessingStatusNoValues(new DataProcessing(idDataProcessing), dataType, typeIO, + appRole); + } + + public void associaParametri(MappingVarsFormBean form, DataProcessing dataProcessing) { + + List appRolesAll = appRoleDao.findAll(); + Map appRolesAllMap = Utility.getMapRuoliById(appRolesAll); + + for (int i = 0; i < form.getDataProcessing().length; i++) { + String[] all_parametri = form.getParameters(); + String parametri = all_parametri[i]; + // String[] stringTokenizer = parametri.split("|"); + StringTokenizer stringTokenizer = new StringTokenizer(parametri, "|"); + + AppRole sxruolo = null; + String idparam = null; + String nomeparam = null; + String ruoloparam = null; + + while (stringTokenizer.hasMoreTokens()) { + // ordine: nomeParam, idParam, ruolo + nomeparam = stringTokenizer.nextToken(); + idparam = stringTokenizer.nextToken(); + ruoloparam = stringTokenizer.nextToken(); + } + sxruolo = appRolesAllMap.get(Integer.valueOf(ruoloparam)); + StepRuntime stepRuntime = new StepRuntime(); + stepRuntime.setDataProcessing(dataProcessing); + stepRuntime.setAppRole(sxruolo); + Workset workset = new Workset(); + workset.setName(nomeparam); + stepRuntime.setOrderCode(sxruolo.getOrder()); + stepRuntime.setDataType(new DataTypeCls(IS2Const.DATA_TYPE_PARAMETER)); + stepRuntime.setTypeIO(new TypeIO(IS2Const.TYPE_IO_INPUT)); + String value = form.getValue()[i]; + // String[] values = value.split(" "); + workset.setContents(Arrays.asList("1")); + workset.setParamValue(value); + workset.setContentSize(1); + workset.setDataType(new DataTypeCls(IS2Const.DATA_TYPE_PARAMETER)); + + ArrayList listaStepV = new ArrayList<>(); + listaStepV.add(stepRuntime); + workset.setStepRuntimes(listaStepV); + stepRuntime.setWorkset(workset); + stepRuntimeDao.save(stepRuntime); + } + } + + public void updateParametri(MappingVarsFormBean form, DataProcessing dataProcessing) { + for (int i = 0; i < form.getDataProcessing().length; i++) { + String[] all_parametri = form.getParameters(); + String idWorkset = all_parametri[i]; + + Workset workset = workSetDao.findById(Long.valueOf(idWorkset)).get(); + String value = form.getValue()[i]; + workset.setParamValue(value); + workSetDao.save(workset); + } + } + + public List getStepRuntimeParameters(Long idDataProcessing) { + return stepRuntimeDao.findStepRuntimes(new DataProcessing(idDataProcessing), + new DataTypeCls(IS2Const.DATA_TYPE_PARAMETER)); + } + + public List getStepRuntimesRuleset(Long idDataProcessing) { + return stepRuntimeDao.findStepRuntimes(new DataProcessing(idDataProcessing), + new DataTypeCls(IS2Const.DATA_TYPE_RULESET)); + } + + public List findAppRolesByProcess(BusinessProcess businessProcess, int flagIO, DataTypeCls dataType) { + List ret = new ArrayList<>(); + List ret2 = new ArrayList<>(); + List instanceBF = findAllStepInstanceByProcess(businessProcess); + AppRole sxappRoles = new AppRole(); + + for (Iterator iterator = instanceBF.iterator(); iterator.hasNext();) { + StepInstance stepInstance = (StepInstance) iterator.next(); + List stepSignatures = stepInstance.getStepInstanceSignatures(); + for (Iterator iterator2 = stepSignatures.iterator(); iterator2.hasNext();) { + StepInstanceSignature stepSignature = (StepInstanceSignature) iterator2.next(); + if (flagIO == 0) {// flagIO All + if ((stepSignature.getTypeIO().equals(new TypeIO(IS2Const.TYPE_IO_INPUT)) + && stepSignature.getAppRole().getDataType().equals(dataType))) { + ret.add(stepSignature.getAppRole()); + } + + } else { + if ((stepSignature.getTypeIO().equals(new TypeIO(IS2Const.TYPE_IO_INPUT)) && stepSignature + .getAppRole().getDataType().getId().intValue() == IS2Const.DATA_TYPE_VARIABLE) + || (stepSignature.getTypeIO().equals(new TypeIO(IS2Const.TYPE_IO_OUTPUT)) + && stepSignature.getAppRole().getDataType().equals(dataType))) { + ret.add(stepSignature.getAppRole()); + } + } + + } + } + // Rimuovo i appRoles duplicati nel caso si disponga di più variabili per + // processo + for (int i = 0; i < ret.size(); i++) { + sxappRoles = ret.get(i); + if (!ret2.contains(sxappRoles)) { + ret2.add(sxappRoles); + } + } + + return ret2; + } + + private List findAllStepInstanceByProcess(BusinessProcess businessProcess) { + return stepInstanceDao.findAllStepInstanceByProcess(businessProcess); + } + + private List findAllStepInstanceBySubBProcess(BusinessProcess subBusinessProcess) { + return stepInstanceDao.findAllStepInstanceBySubBProcess(subBusinessProcess); + } + + public List findParametersByProcess(BusinessProcess businessProcess) { + + List ret = new ArrayList<>(); + List instanceBF = findAllStepInstanceByProcess(businessProcess); + for (Iterator iterator = instanceBF.iterator(); iterator.hasNext();) { + StepInstance stepInstance = (StepInstance) iterator.next(); + List sxsetpppList = stepInstanceSignatureDao.findAllStepSignaturesByStepAndTypeIO( + stepInstance, new TypeIO(IS2Const.TYPE_IO_INPUT), + new DataTypeCls(Integer.valueOf(IS2Const.DATA_TYPE_PARAMETER))); // INPUT 1; 1 PARAMETRO + ret.addAll(sxsetpppList); + } + return ret; + } + + public Map> findParametriAndSubProcessesByProcess( + BusinessProcess businessProcess) { + + Map> ret = new HashMap<>(); + + for (Iterator iteratorb = businessProcess.getBusinessSubProcesses().iterator(); iteratorb.hasNext();) { + BusinessProcess suBusinessProcess = (BusinessProcess) iteratorb.next(); + + List paramsList = new ArrayList(); + List instanceBF = findAllStepInstanceBySubBProcess(suBusinessProcess); + + for (Iterator iterator = instanceBF.iterator(); iterator.hasNext();) { + StepInstance stepInstance = (StepInstance) iterator.next(); + List sxsetpppList = stepInstanceSignatureDao + .findAllStepSignaturesByStepAndTypeIO(stepInstance, new TypeIO(IS2Const.TYPE_IO_INPUT), + new DataTypeCls(Integer.valueOf(IS2Const.DATA_TYPE_PARAMETER))); // INPUT 1; 1 PARAMETRO + paramsList.addAll(sxsetpppList); + } + ret.put(suBusinessProcess.getId(), paramsList); + } + + return ret; + } + + public boolean deleteWorkset(Workset workset) { + Long aa = workset.getId(); + workSetDao.deleteById(aa); + return true; + } + + public DataTypeCls getDataTypeById(Integer dataType) { + return dataTypeDao.findById(dataType).get(); + } + + public TypeIO getTypeIOById(Integer typeIo) { + return typeIODao.findById(typeIo).get(); + } + + public List getOutputRoleGroupsStepRuntimes(Long idDataProcessing, TypeIO typeIO, DataTypeCls dataType) { + return stepRuntimeDao.getOutputRoleGroupsStepRuntimes(idDataProcessing, dataType, typeIO); + } + + public HashMap> findMissingAppRoleySubProcessAndTipoVar(DataProcessing dataProcessing, + DataTypeCls dataType) { + HashMap> ret = new HashMap<>(); + List stepRuntimes = getStepRuntimesNoValues(dataProcessing.getId(), dataType); + List stepRuntimesRoles = new ArrayList<>(); + for (StepRuntime stepRuntime : stepRuntimes) { + stepRuntimesRoles.add(stepRuntime.getAppRole()); + } + + for (Iterator iteratorb = dataProcessing.getBusinessProcess().getBusinessSubProcesses().iterator(); iteratorb + .hasNext();) { + BusinessProcess suBusinessProcess = (BusinessProcess) iteratorb.next(); + + Set roleNameSet = new HashSet(); + List instanceBF = findAllStepInstanceBySubBProcess(suBusinessProcess); + + for (Iterator iterator = instanceBF.iterator(); iterator.hasNext();) { + StepInstance stepInstance = (StepInstance) iterator.next(); + + for (Iterator iteratorAppRoles = stepInstance.getStepInstanceSignatures() + .iterator(); iteratorAppRoles.hasNext();) { + { + StepInstanceSignature stepInstanceAppRole = iteratorAppRoles.next(); + if (stepInstanceAppRole.getTypeIO().equals(new TypeIO(IS2Const.TYPE_IO_INPUT)) + && stepInstanceAppRole.getIsRequerid()) { + AppRole ar = stepInstanceAppRole.getAppRole(); + if (ar.getDataType().equals(dataType) && !stepRuntimesRoles.contains(ar)) { + roleNameSet.add(ar.getName()); + } + } + } + } + + } + ret.put(suBusinessProcess.getId(), new ArrayList<>(roleNameSet)); + } + + return ret; + } + + public HashMap> findMissingVariablesParamsBySubProcess(DataProcessing dataProcessing) { + return null; + } @Transactional - public void creaAssociazionVarRole(DataProcessing dataProcessing, AssociazioneVarRoleBean[] associazioneVarRoleBean) { + public void creaAssociazionVarRole(DataProcessing dataProcessing, + AssociazioneVarRoleBean[] associazioneVarRoleBean) { List appRolesAll = appRoleDao.findAll(); Map appRolesAllMap = Utility.getMapRuoliById(appRolesAll); List varList = dataProcessing.getStepRuntimes(); for (AssociazioneVarRoleBean varRoleBean : associazioneVarRoleBean) { Ruolo ruolo = varRoleBean.getRuolo(); - boolean prefixDataset= varRoleBean.isPrefixDataset(); + boolean prefixDataset = varRoleBean.isPrefixDataset(); for (Variable variable : ruolo.getVariables()) { ArrayList listaStepV = new ArrayList<>(); @@ -578,68 +584,72 @@ public void creaAssociazionVarRole(DataProcessing dataProcessing, AssociazioneVa } } } - - @Transactional - public void cleanAllWorkset(Long idDataProcessing, Integer flagIO) { - - List list = getStepRuntimes(idDataProcessing); - for (StepRuntime step : list) { - if (flagIO.equals(Integer.valueOf(0)) || step.getDataType().getId().equals(flagIO)) { - stepRuntimeDao.deleteById(step.getId()); - } - } - - List jobInstanceIds = workFlowBatchDao.findJobInstanceIdByElabId(idDataProcessing); - if (jobInstanceIds != null && jobInstanceIds.size() > 0) { - for (int i = 0; i < jobInstanceIds.size(); i++) { - workFlowBatchDao.deleteJobInstanceById(jobInstanceIds.get(i)); - } - } - - } - - public void setRuleset(DataProcessing dataProcessing, Integer idResultset) throws NoSuchFieldException, SecurityException, IllegalArgumentException, IllegalAccessException { - - Ruleset ruleset = rulesetDao.findById(idResultset).get(); - AppRole appRole = appRoleDao.findByName(IS2Const.ROLE_NAME_RULESET); - - StepRuntime stepRuntimeID = new StepRuntime(); - stepRuntimeID.setDataProcessing(dataProcessing); - stepRuntimeID.setAppRole(appRole); - stepRuntimeID.setOrderCode(Short.valueOf("1")); - stepRuntimeID.setDataType(new DataTypeCls(IS2Const.DATA_TYPE_RULESET)); - stepRuntimeID.setTypeIO(new TypeIO(IS2Const.TYPE_IO_INPUT)); - Workset worksetID = new Workset(); - worksetID.setName("ID"); - worksetID.setParamValue(ruleset.getFileLabel()); - worksetID.setOrderCode(Short.valueOf("1")); - worksetID.setContents(Utility.convertToArrayListStringFieldOfObjects(ruleset.getRules(), Rule.class, "id")); - worksetID.setContentSize(ruleset.getRules().size()); - worksetID.setDataType(new DataTypeCls(IS2Const.DATA_TYPE_RULESET)); - ArrayList listaStepVID = new ArrayList<>(); - listaStepVID.add(stepRuntimeID); - worksetID.setStepRuntimes(listaStepVID); - stepRuntimeID.setWorkset(worksetID); - stepRuntimeDao.save(stepRuntimeID); - - StepRuntime stepRuntime = new StepRuntime(); - stepRuntime.setDataProcessing(dataProcessing); - stepRuntime.setAppRole(appRole); - stepRuntime.setOrderCode(Short.valueOf("2")); - stepRuntime.setDataType(new DataTypeCls(IS2Const.DATA_TYPE_RULESET)); - stepRuntime.setTypeIO(new TypeIO(IS2Const.TYPE_IO_INPUT)); - Workset workset = new Workset(); - workset.setName(IS2Const.TEXT_RULE); - workset.setOrderCode(Short.valueOf("1")); - workset.setParamValue(ruleset.getFileLabel()); - workset.setContents(Utility.convertToArrayListStringFieldOfObjects(ruleset.getRules(), Rule.class, "rule")); - workset.setContentSize(ruleset.getRules().size()); - workset.setDataType(new DataTypeCls(IS2Const.DATA_TYPE_RULESET)); - ArrayList listaStepV = new ArrayList<>(); - listaStepV.add(stepRuntime); - workset.setStepRuntimes(listaStepV); - stepRuntime.setWorkset(workset); - stepRuntimeDao.save(stepRuntime); - } + + @Transactional + public void cleanAllWorkset(Long idDataProcessing, Integer flagIO) { + + List list = getStepRuntimes(idDataProcessing); + for (StepRuntime step : list) { + if (flagIO.equals(Integer.valueOf(0)) || step.getDataType().getId().equals(flagIO)) { + stepRuntimeDao.deleteById(step.getId()); + } + } + + List jobInstanceIds = workFlowBatchDao.findJobInstanceIdByElabId(idDataProcessing); + if (jobInstanceIds != null && jobInstanceIds.size() > 0) { + for (int i = 0; i < jobInstanceIds.size(); i++) { + + workFlowBatchDao.deleteByJobInstanceId(jobInstanceIds.get(i)); + // workFlowBatchDao.deleteBatchJobExecutionById(jobInstanceIds.get(i)); + // workFlowBatchDao.deleteJobInstanceById(jobInstanceIds.get(i)); + } + } + + } + + public void setRuleset(DataProcessing dataProcessing, Integer idResultset) + throws NoSuchFieldException, SecurityException, IllegalArgumentException, IllegalAccessException { + + Ruleset ruleset = rulesetDao.findById(idResultset).get(); + AppRole appRole = appRoleDao.findByName(IS2Const.ROLE_NAME_RULESET); + + StepRuntime stepRuntimeID = new StepRuntime(); + stepRuntimeID.setDataProcessing(dataProcessing); + stepRuntimeID.setAppRole(appRole); + stepRuntimeID.setOrderCode(Short.valueOf("1")); + stepRuntimeID.setDataType(new DataTypeCls(IS2Const.DATA_TYPE_RULESET)); + stepRuntimeID.setTypeIO(new TypeIO(IS2Const.TYPE_IO_INPUT)); + Workset worksetID = new Workset(); + worksetID.setName("ID"); + worksetID.setParamValue(ruleset.getFileLabel()); + worksetID.setOrderCode(Short.valueOf("1")); + worksetID.setContents(Utility.convertToArrayListStringFieldOfObjects(ruleset.getRules(), Rule.class, "id")); + worksetID.setContentSize(ruleset.getRules().size()); + worksetID.setDataType(new DataTypeCls(IS2Const.DATA_TYPE_RULESET)); + ArrayList listaStepVID = new ArrayList<>(); + listaStepVID.add(stepRuntimeID); + worksetID.setStepRuntimes(listaStepVID); + stepRuntimeID.setWorkset(worksetID); + stepRuntimeDao.save(stepRuntimeID); + + StepRuntime stepRuntime = new StepRuntime(); + stepRuntime.setDataProcessing(dataProcessing); + stepRuntime.setAppRole(appRole); + stepRuntime.setOrderCode(Short.valueOf("2")); + stepRuntime.setDataType(new DataTypeCls(IS2Const.DATA_TYPE_RULESET)); + stepRuntime.setTypeIO(new TypeIO(IS2Const.TYPE_IO_INPUT)); + Workset workset = new Workset(); + workset.setName(IS2Const.TEXT_RULE); + workset.setOrderCode(Short.valueOf("1")); + workset.setParamValue(ruleset.getFileLabel()); + workset.setContents(Utility.convertToArrayListStringFieldOfObjects(ruleset.getRules(), Rule.class, "rule")); + workset.setContentSize(ruleset.getRules().size()); + workset.setDataType(new DataTypeCls(IS2Const.DATA_TYPE_RULESET)); + ArrayList listaStepV = new ArrayList<>(); + listaStepV.add(stepRuntime); + workset.setStepRuntimes(listaStepV); + stepRuntime.setWorkset(workset); + stepRuntimeDao.save(stepRuntime); + } }