/** * Obtiene la instancia de documentación asociada al proceso especificado. * * @param process Proceso de interés * @param container Contenedor de versiones de la documentación asociado al proceso. * @return Instancia de la documentación del proceso especificado. */ public static DocumentationInstance getDocumentationInstanceByProcess( Process process, TemplateContainer container) { DocumentationInstance di = null; ProcessSite model = process.getProcessSite(); DocumentTemplate dt = container.getActualTemplate(); Iterator<DocumentationInstance> itdi = DocumentationInstance.ClassMgr.listDocumentationInstanceByProcessRef(process); if (itdi.hasNext()) { // Obtener DocumentationInstance de plantilla actual while (itdi.hasNext()) { DocumentationInstance dit = itdi.next(); if (dit.getDocTypeDefinition() != null && dt != null && dit.getDocTypeDefinition().getURI().equals(dt.getURI())) { di = dit; Map map = getDocumentSectionInstanceMap(di); Iterator<DocumentSection> itds = di.getDocTypeDefinition().listDocumentSections(); while (itds.hasNext()) { DocumentSection ds = itds.next(); if (!map.containsKey(ds.getURI())) { DocumentSectionInstance dsi = DocumentSectionInstance.ClassMgr.createDocumentSectionInstance(model); dsi.setSecTypeDefinition(ds); dsi.setDocumentationInstance(dit); di.addDocumentSectionInstance(dsi); dsi.setIndex(ds.getIndex()); SemanticClass cls = SWBPlatform.getSemanticMgr() .getVocabulary() .getSemanticClass(dsi.getSecTypeDefinition().getSectionType().getURI()); if (FreeText.sclass.getClassId().equals(cls.getClassId())) { FreeText ft = FreeText.ClassMgr.createFreeText(model); ft.setText(""); ft.setDocumentTemplate(dt); ft.setDocumentSectionInst(dsi); SectionElement se = (SectionElement) ft.getSemanticObject().createGenericInstance(); dsi.addDocuSectionElementInstance(se); } if (Activity.sclass.getClassId().equals(cls.getClassId())) { Iterator<GraphicalElement> itge = di.getProcessRef().listAllContaineds(); while (itge.hasNext()) { GraphicalElement ge = itge.next(); if (ge instanceof org.semanticwb.process.model.SubProcess || ge instanceof Task) { String urige = ge.getURI(); org.semanticwb.process.model.Activity act = (org.semanticwb.process.model.Activity) SWBPlatform.getSemanticMgr().getOntology().getGenericObject(urige); ActivityRef actRef = ActivityRef.ClassMgr.createActivityRef(model); actRef.setProcessActivity(act); Activity actFin = Activity.ClassMgr.createActivity(model); actFin.setTitle(act.getTitle()); actFin.setDocumentTemplate(dt); actFin.setActivityRef(actRef); actFin.setIndex(ge.getIndex()); actFin.setDocumentSectionInst(dsi); dsi.addDocuSectionElementInstance(actFin); } } } } } break; } } } if (di == null) { // Crear DocumentationInstance di = DocumentationInstance.ClassMgr.createDocumentationInstance(process.getProcessSite()); di.setDocTypeDefinition(dt); di.setProcessRef(process); Iterator<DocumentSection> itdsi = di.getDocTypeDefinition().listDocumentSections(); while (itdsi.hasNext()) { DocumentSection ds = itdsi.next(); DocumentSectionInstance dsi = DocumentSectionInstance.ClassMgr.createDocumentSectionInstance(model); dsi.setSecTypeDefinition(ds); dsi.setDocumentationInstance(di); di.addDocumentSectionInstance(dsi); dsi.setIndex(ds.getIndex()); SemanticClass cls = SWBPlatform.getSemanticMgr() .getVocabulary() .getSemanticClass(dsi.getSecTypeDefinition().getSectionType().getURI()); if (FreeText.sclass.getClassId().equals(cls.getClassId())) { FreeText ft = FreeText.ClassMgr.createFreeText(model); ft.setText(""); dsi.addDocuSectionElementInstance(ft); ft.setParentSection(ds); ft.setDocumentTemplate(dt); ft.setDocumentSectionInst(dsi); } if (Activity.sclass.getClassId().equals(cls.getClassId())) { Iterator<GraphicalElement> itge = di.getProcessRef().listAllContaineds(); while (itge.hasNext()) { GraphicalElement ge = itge.next(); if (ge instanceof org.semanticwb.process.model.SubProcess || ge instanceof Task) { String urige = ge.getURI(); org.semanticwb.process.model.Activity act = (org.semanticwb.process.model.Activity) SWBPlatform.getSemanticMgr().getOntology().getGenericObject(urige); ActivityRef actRef = ActivityRef.ClassMgr.createActivityRef(model); actRef.setProcessActivity(act); Activity actFin = Activity.ClassMgr.createActivity(model); actFin.setTitle(act.getTitle()); actFin.setDocumentTemplate(dt); actFin.setActivityRef(actRef); actFin.setIndex(ge.getIndex()); dsi.addDocuSectionElementInstance(actFin); actFin.setParentSection(ds); actFin.setDocumentSectionInst(dsi); } } } } } return di; }