Jul 30, 2011

ADF ΑΝΤ scripts και MDS

Σε αυτό το άρθρο θα περιγράψω τα απαραίτητα βήματα προκειμένου να γίνει το deploy μιας ADF εφαρμογής, διαμέσου ANT scripts, ώστε παράλληλα να υπάρξει εκμετάλλευση του MDS για την καλύτερη εξατομίκευση (personalization) της εμπειρίας των χρηστών. Υπάρχουν διάφορα σημεία που περιγράφουν το MDS καθώς και οδηγίες ως προς το JDeveloper και το deployment του (http://download.oracle.com/docs/cd/E21764_01/web.1111/b31974/ad_persist.htm#CIHHEHCF) αλλά όχι από την σκοπιά customized ΑΝΤ scripts. Τα παρακάτω βήματα έχουν δοκιμαστεί στην έκδοση 11.1.1.4 του ADF.

Στο web.xml του deployment unit μας θα χρειαστεί να έχουμε τις ακόλουθες γραμμές:

<context-param>
<param-name>
org.apache.myfaces.trinidad.CHANGE_PERSISTENCE
</param-name>
<param-value>
oracle.adf.view.rich.change.FilteredPersistenceChangeManager
</param-value>
</context-param>
<context-param>
<param-name>
oracle.adf.jsp.provider.0
</param-name>
<param-value>
oracle.mds.jsp.MDSJSPProviderHelper
</param-value>
</context-param>

ενώ στο adf-config.xml επισυνάπτουμε κάτι σαν το ακόλουθο (τα πιο σημαντικά σημεία είναι σε έντονη γραφή):

<adf-faces-config xmlns="http://xmlns.oracle.com/adf/faces/config">
<persistent-change-manager>
<persistent-change-manager-class>
oracle.adf.view.rich.change.MDSDocumentChangeManager
</persistent-change-manager-class>
</persistent-change-manager>
<taglib-config>
<taglib uri="http://xmlns.oracle.com/adf/faces/rich">
<tag name="column">
<attribute name="displayIndex">
<persist-changes>
true
</persist-changes>
</attribute>
<attribute name="visible">
<persist-changes>
true
</persist-changes>
</attribute>
<attribute name="width">
<persist-changes>
true
</persist-changes>
</attribute>
</tag>
</taglib>
</taglib-config>
</adf-faces-config>
<adf-mds-config xmlns="http://xmlns.oracle.com/adf/mds/config">
<mds-config xmlns="http://xmlns.oracle.com/mds/config" version="11.1.1.000">
<cust-config>
<match path="/">
<customization-class name="oracle.adf.share.config.ADFUserCC"/>
</match>
</cust-config>
<persistence-config>
<metadata-namespaces>
<namespace metadata-store-usage="mdsstore" path="/persdef"/>
</metadata-namespaces>
<metadata-store-usages>
<metadata-store-usage id="mdsstore" default-cust-store="true" deploy-target="true">
<metadata-store class-name="oracle.mds.persistence.stores.db.DBMetadataStore">
<property name="repository-name" value="@mds.repository@" />
<property name="jndi-datasource" value="@mds.ds@" />
<property name="partition-name" value="@mds.partition@" />
</metadata-store>
</metadata-store-usage>
</metadata-store-usages>
</persistence-config>
</mds-config>
</adf-mds-config>

Έτσι ορίζουμε για ποια components θα χρειαστούμε τις υπηρεσίες του MDS (πχ για το column στο συγκεκριμένο παράδειγμα) Λίγο παρακάτω, προσδιορίζουμε τις πληροφορίες σύνδεσης με το MDS repository, το οποίο φυσικά ήδη έχουμε κάνει register στον Weblogic Server με κάποιο όνομα (repository-name) και με κάποιο jndi datasource. Το partition-name μπορεί να είναι κάτι αυθαίρετο, που θα κατασκευαστεί πρώτη φορά με το deployment της εφαρμογής. Αν πρόκειται να χρησιμοποιήσουμε ένα file-based repository τότε θα έπρεπε να ορίσουμε τις αντίστοιχες γραμμές ως εξής:

<metadata-store class-name="oracle.mds.persistence.stores.file.FileMetadataStore">
<property name="repository-name" value="@mds.repository@" />
<property name="partition-name" value="@mds.partition@" />
<property name="metadata-path" value="@mds.directory@" />

Τα ANT scripts που έχω κατασκευάσει, φροντίζουν να περάσουν όλες τις κατάλληλες παραμέτρους στο mds.repository, mds.ds και mds.partition σύμφωνα με το περιβάλλον προορισμού (πχ development, staging, production)

No comments: