CONNECTOR
AMB DOCUMENTUM
Introducció
Propósit
El propósit del connector és proporcionar una interfície
Java per accedir a Documentum. Permetent emmagatzemar i recuperar
documents a més d'altres operacions relacionades com crear carpetes i
associar propietats.
Context
i Escenaris d'Ús
El connector documentum es troba dins els Connectors de
Serveis Funcionals.
A
qui va dirigit
Aquest document va dirigit als següents perfils:
- Programador. Per conéixer l'ús del connector.
- Arquitecte. Per conéixer quins són els components i
la configuració del connector.
Documents
i Fonts de Referència
[1] |
Anàlisi Funcional -
Connector Serveis Funcionals - 16-Nov.doc |
Document d'anàlisi
dels connectors de serveis funcionals. |
[2] |
Documentum
Foundation Classes (DFC) |
http://www.dmdeveloper.com/articles/dfc/
|
Descripció
Detallada
Instal-
lació del DFC
Previ a la utilització del servei cal instal.lar a la
màquina de desenvolupament/servidor la DFC’s de la versió de Documentum
que es farà servirm, per aquest connector ha de ser Documentum 7.1 :
En cas de no comptar amb aquests instal·lable, es pot
sol·licitar a la bústia canigó oficina-tecnica.canigo.ctti@gencat.cat
Els passos a seguir en l’instal.lació són els següents:




Aquí indicarem el host i el port del docBroker que conté
el magatzem de claus.






Com a resultat de la instalació es generarà un arxiu amb
la configuració d’accés a documentum.
En el cas de Documentum 7.1, aquest es generarà
per
defecte a C:\Documentum\config\dfc.properties
i tindrà el format següent:
dfc.data.dir=C\:/Documentum dfc.registry.mode=windows dfc.search.ecis.enable=false dfc.search.ecis.host= dfc.search.ecis.port= dfc.tokenstorage.dir=C\:/Documentum/apptoken dfc.tokenstorage.enable=false dfc.docbroker.host[0]=nomHostDocumentum dfc.docbroker.port[0]=PortHostDocumentum dfc.globalregistry.repository=NomRepositoriClaus dfc.globalregistry.username=usernameRepositoriClaus dfc.globalregistry.password=passRepositoriClaus
Configuració de dependències
L'arxiu de configuració del projecte per Maven 2 (pom.xml)
ha d'incloure la dependència del connector.
<dependency> <groupId>openFrame.connectors</groupId> <artifactId>openFrame-connectors-documentum71</artifactId> <version>1.4.5</version> </dependency>
Els connector té dependències amb llibreries de la versió del DFC
instal·lat. Aquestes llibreries s’inclouen amb la instal·lació del DFC,
per defecte a la carpeta C:\Program Files\Documentum\Shared
(Windows). Caldrà afegir-les al repositori .m2 local per tal que Maven
les resolgui.
Per a la versió de DFC 7.1 , serà necessari instal·lar
les següents llibreries (cas que no hi figurin ja instal·lades):
mvn install:install-file -Dfile="dfc.jar" -DgroupId=dfc -DartifactId=dfc -Dversion=7.1 -Dpackaging=jar mvn install:install-file -Dfile="certj.jar" -DgroupId=certj -DartifactId=certj -Dversion=5.2 -Dpackaging=jar mvn install:install-file -Dfile="configservice-api.jar" -DgroupId=configservice -DartifactId=configservice-api -Dversion=7.1 -Dpackaging=jar mvn install:install-file -Dfile="configservice-impl.jar" -DgroupId=configservice -DartifactId=configservice-impl -Dversion=7.1 -Dpackaging=jar mvn install:install-file -Dfile="jcmFIPS.jar" -DgroupId=jcmFIPS -DartifactId=jcmFIPS -Dversion=6.1 -Dpackaging=jar mvn install:install-file -Dfile="jcifs-krb5-1.3.1.jar" -DgroupId=jcifs-krb5 -DartifactId=jcifs-krb5 -Dversion=1.3.1 -Dpackaging=jar mvn install:install-file -Dfile="cryptojce.jar" -DgroupId=cryptojce -DartifactId=cryptojce -Dversion=6.1 -Dpackaging=jar mvn install:install-file -Dfile="cryptojcommon.jar" -DgroupId=cryptojcommon -DartifactId=cryptojcommon -Dversion=6.1 -Dpackaging=jar
Configuració del connector
Serà necessari incloure al CLASSPATH del
projecte el dfc.properties
generat arrel la instal·lació del DFC, ja configurat amb les
dades del servidor de Documentum al que connectarà.
Ubicació: /src/main/resources/dfc.properties
Utilització
del Servei
La utilització del Connector es basa principalment en la
configuració. L'ús directe des dels clients es permet mitjançant les
interfícies definides.

Creació
de fitxer de propietats
Hem de crear un fitxer de propietats (p.e.
documentum.properties) amb els següents paràmetres:
documentum.user=usuari del treballamb documentum documentum.password=password de l'usuari documentum.docBase=docBase on connectar
Aquest fitxer de propietats l'inclourem al classpath de l'aplicació
mitjançant el servei de configuració:
<beans> <bean id="configurationService" class="net.opentrends.openframe.services.configuration.springframework.beans.factory.config.HostPropertyPlaceholderConfigurer"> <property name="basePropertyFiles"> <list> ... <value>classpath: Documentum/documentum.properties</value> ... </list> </property> </bean> </beans>
Creació
i injecció de beans d'Spring
Caldrà crear una sèrie de beans per tal d'utilitzar el
connector. Aquests els podrem crear p.e.
dins \spring\openFrame-connectors-documentum.xml:
<?xml version="1.0"
encoding="UTF-8" ?>
<!DOCTYPE beans PUBLIC "-//SPRING//DTD BEAN//EN"
"http://www.springframework.org/dtd/spring-beans.dtd">
<beans>
<!-- DOCUMENTUM Connector
-->
<bean lazy-init="true"
id="documentumBOTarget"
class="net.gencat.pilot.model.bo.impl.DocumentBOImpl">
<property name="documentumService"
ref="documentumService"/>
<property name="documentumConnector"
ref="documentumConnector"/>
<property name="documentumConfig"
ref="documentumConfig"/>
</bean>
<bean
name="documentumService"
class="net.soluziona.documentum.DocumentumServiceImpl"/>
<bean
name="documentumConnector"
class="net.soluziona.documentum.DocumentumConnectorImpl"/>
<bean id="documentumConfig"
class="net.gencat.pilot.connectors.documentum.DocumentumConfig">
<property name="user"
value="${documentum.user}"/>
<property name="password"
value="${documentum.password}"/>
<property name="docBase"
value="${documentum.docBase}"/>
</bean>
</beans>
On:
- documentumService:
s'ocuparà d'obrir la sessió amb Documentum
- documentumConnector:
es farà servir per operar amb Documentum
- documentumConfig:
conté la configuració per treballar amb Documentum
La implementació de DocumentumConfig.java
restaria com:
package net.gencat.ctti.canigo.connectors.domain;
public class DocumentumConfig {
private String user; private String password; private String docBase;
public String getUser() { return user; } public void setUser(String user) { this.user = user; } public String getPassword() { return password; } public void setPassword(String password) { this.password = password; } public String getDocBase() { return docBase; } public void setDocBase(String docBase) { this.docBase = docBase; } }
A l'action-servlet.xml
configurarem un bean de presentació on es faci servir documentumBOTarget
:
<bean name="/pageModulDocumentum" class="net.gencat.ctti.canigo.connectors.action.DocumentumAction"> ... <property name="documentumBO" ref="documentumBOTarget"/> ... </bean>
Inici
sessió Documentum i exemple d'ús
A DocumentumAction.java
invoquem els mètodes del BO. A l'exemple d'ús es consulta l'existència
d'un document ja pujat prèviament. La informació sobre el document a cercar i
carpeta dins Documentum on cercar arriben informades a partir d'un
formulari d'entrada a una jsp:
package net.gencat.ctti.canigo.connectors.action;
import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse;
import net.gencat.ctti.canigo.connectors.bo.DocumentumBO; import net.gencat.ctti.canigo.connectors.pojos.DocumentumPojo; import net.gencat.ctti.canigo.services.web.struts.DispatchActionSupport; import net.gencat.ctti.canigo.services.web.struts.SpringBindingActionForm;
import org.apache.struts.action.ActionForm; import org.apache.struts.action.ActionForward; import org.apache.struts.action.ActionMapping;
public class DocumentumAction extends DispatchActionSupport {
private DocumentumBO documentumBO;
public ActionForward doLogin(ActionMapping mapping, ActionForm form, HttpServletRequest request, HttpServletResponse response) throws Exception { try { documentumBO.doLogin(); } catch (Exception e) { e.printStackTrace(); } return mapping.findForward("successTestDoLogin"); }
public ActionForward doCercaDocument(ActionMapping mapping, ActionForm form, HttpServletRequest request, HttpServletResponse response) throws Exception { SpringBindingActionForm actionForm = (SpringBindingActionForm) form; DocumentumPojo pojo = (DocumentumPojo) actionForm.getTarget(); String idDocument; try { idDocument = documentumBO.cercaDocument(pojo.getNomDocument(), pojo.getCarpeta()); } catch (Exception e) { idDocument = "Error en intentar cercar un document a Documentum"; e.printStackTrace(); } pojo.setResultat(idDocument); return mapping.findForward("successTestDoCercaDocument"); }
public void setDocumentumBO(DocumentumBO documentumBO) { this.documentumBO = documentumBO; }
}
DocumentumBO.java:
package net.gencat.ctti.canigo.connectors.bo;
public interface DocumentumBO { public void doLogin(); public String cercaDocument(String sNomFitxer, String nomCarpeta);
}
DocumentumBOImpl.java :
package net.gencat.ctti.canigo.connectors.bo.impl;
import java.util.HashMap; import java.util.Vector;
import net.gencat.ctti.canigo.connectors.bo.DocumentumBO; import net.gencat.ctti.canigo.connectors.domain.DocumentumConfig; import net.soluziona.documentum.DocumentumConnector; import net.soluziona.documentum.DocumentumService; import net.soluziona.documentum.DocumentumServiceImpl; import net.soluziona.documentum.Session;
public class DocumentumBOImpl implements DocumentumBO {
private static String DM_SEARCH_FOR_PARAM_NAME="r_object_id"; private static String DM_OBJECT_TO_SEARCH_PARAM_NAME="dm_document"; private static String DM_OBJECT_PARAM_NAME="object_name"; DocumentumConfig documentumConfig; DocumentumConnector documentumConnector; DocumentumService documentumService; private Session sessio; public void doLogin(){ documentumService = DocumentumServiceImpl.getInstance(); sessio = documentumService.login(documentumConfig.getUser(), documentumConfig.getPassword(), documentumConfig.getDocBase(), documentumConnector);
} public String cercaDocument(String sNomFitxer, String nomCarpeta){ String idDocument=null; if (sessio == null){ doLogin(); } HashMap sHasMapDocuments = documentumConnector.buscarDocument( DM_SEARCH_FOR_PARAM_NAME, DM_OBJECT_TO_SEARCH_PARAM_NAME, DM_OBJECT_PARAM_NAME, sNomFitxer, nomCarpeta, true, "", sessio); if (sHasMapDocuments != null) { Vector vOut = (Vector) sHasMapDocuments.get(new Integer(1)); idDocument= (String) vOut.get(0); } return idDocument; }
public void setDocumentumConfig(DocumentumConfig documentumConfig) { this.documentumConfig = documentumConfig; }
public void setDocumentumConnector(DocumentumConnector documentumConnector) { this.documentumConnector = documentumConnector; }
public void setDocumentumService(DocumentumService documentumService) { this.documentumService = documentumService; } }
Integració
amb Altres Serveis
Integració
amb el Servei de Internacionalització
En els fitxers de configuració es defineixen claus que
permeten especificar quins missatges retornar en cas errors. Per a
poder traduir aquestes claus és necessari especificar que el connector
usarà el Servei d'Internacionalització (veure Configuració).
|