Integrating a custom Domino database into IBM Digital Experience
by user
Comments
Transcript
Integrating a custom Domino database into IBM Digital Experience
Integrating a custom Domino database into IBM Digital Experience using the Digital Data Connector Kai Brennenstuhl [email protected] December, 2015 This article is about the integration of a custom IBM Domino database into IBM Digital Experience (DX). Besides the IBM Web Content Manager (WCM) the capabilities of the Digital Data Connector (DDC) are used. This article starts with outlining the integration options. After that a sample implementation follows. This demonstration is divided into two parts. Part one shows the integration of a sample database. A custom DDC plugin implementation is provided that connects to the database using the Java API of the Domino server. Part two connects to the same database. However, the REST service of the Domino server as well as the DDC JSON profile is used for integrating the data. In addition the Credential Vault is used to store necessary credentials. Moreover both solutions support a paging mechanism which splits up the data requested from the Domino server. 1 Table of Contents Preliminary Considerations..................................................................................................................3 The role of the Digital Data Connector...........................................................................................3 Domino connection data..................................................................................................................3 Presentation templates.....................................................................................................................4 Personalization Components............................................................................................................4 HTML Details View Link................................................................................................................4 Alternative Domino Connections....................................................................................................5 Domino Java API and custom DDC plugin................................................................................5 Domino REST API and JSON DDC plugin................................................................................5 Paging..............................................................................................................................................5 Common Setup instructions.................................................................................................................6 Install sample Domino database......................................................................................................6 Install and deploy paa......................................................................................................................7 (Optional) Setup shared Credential Vault Slot.................................................................................7 Part 1 - Using the Java API of the IBM Domino Server......................................................................9 Setup Domino Server.......................................................................................................................9 Activate and start Domino IIOP service.....................................................................................9 Setting Domino host, database location and access credentials..................................................9 Details of WCM items...................................................................................................................11 Content......................................................................................................................................11 Presentation Templates..............................................................................................................11 Components..............................................................................................................................13 Personalization Components................................................................................................13 HTML – Domino Document Details Link...........................................................................13 Java Implementation .....................................................................................................................14 Paging........................................................................................................................................14 Extension Points and profile.properties....................................................................................15 Extracting attributes from BeanListRequest.............................................................................16 Part 2 - Using the REST Service of IBM Domino Server.................................................................18 Setup instructions...........................................................................................................................18 Activate the Data REST service on the IBM Domino sever.....................................................18 Setup the Ajax proxy configuration..........................................................................................18 Edit WCM “Domino Connection Details” content item...........................................................19 WP ListRenderingProfileService Configuration...........................................................................20 Details of WCM items...................................................................................................................22 Presentation Templates..............................................................................................................22 Personalization components......................................................................................................22 HTML Components..................................................................................................................23 Removing the DDC Domino Sample PAA........................................................................................24 2 Preliminary Considerations A use case of Digital Experience is the integration of data from different applications in one portal. A Domino database can be one source which can be integrated into Digital Experience. One option to integrate the Domino database is developing a custom portlet. This might be time consuming and a lot of development activity is required. Another option is leveraging the capabilities of the Digital Data Connector framework. This article shows how to use DDC to integrate a custom Domino database into DX. The role of the Digital Data Connector The Digital Data Connector (DDC) framework helps rendering data from external sources within IBM Web Content Manager components. Therefore this article uses DDC to integrate the data from a Domino database into Digital Experience. The benefit is that the external data i.e. the information from the Domino documents is styled with WCM so that for visualization of this data the same workflow and consistent design templates can be used like in other WCM components within DX. On the one hand DDC renders the overview over the documents from the Domino database. This overview shows the most important information of each document like for example the subject of each document. On the other hand a details view is rendered by DDC too. This view displays all properties of a single Domino document. Because DDC renders a list of items, for the details view a list containing only one item i.e. a single document is rendered. Furthermore a list rendering profile describes which properties i.e. fields the Domino document contains. Domino connection data To connect to the Domino database following information is required: • • • • Domino host Database name and path on the Domino host Domino view that is accessed optional: username and password necessary for accessing the Domino database In the following example a WCM content element stores this information. The benefit is that within other WCM items it is possible to access this information. For the integration using the JSON REST API this means no additional Java code needs to be deployed. Moreover, the information can be changed during run time. However, the username and password necessary for accessing the Domino database are stored in the Credential Vault of IBM WebSphere Portal. There the password is saved but still can be included in the requests that connect to the Domino host. To reference the Credential Vault its ID is added to the other properties in the WCM content item. In case the database is moved to another server or the credentials for accessing the database are changed the values of the WCM content item respectively the Credential Vault values can be changed easily. If the database allows anonymous access the Credential Vault can be omitted. 3 Presentation templates The presentation templates are used to initialize the list rendering context of the DDC plugin. This means they contain a Plugin:ListRenderingContext WCM tag which sets 1. the extension ID of the DDC plugin i.e. defines which plugin is used. For a custom implementation this is equal to the return value of the getExtensionID method of the implementation of the BeanListProvider listed in the plugin.xml 2. attributes containing the Domino host, database location and the name of the Domino view that needs to be accessed 3. optionally an attribute containing the Credential Vault ID where the Domino server access credentials are stored The values of the attributes mentioned in 2. are referenced indirectly since they are saved in a WCM content item. Furthermore, the presentation templates include the personalization component which renders the BeanListResponse returned by the DDC plugin. Personalization Components The personalization component renders the list of items provided by the DDC plugin. A personalization component consists of the three sections: header, result design and footer. Within the result design AttributeResource tags render the properties of the ResourceBean. In the sample used in this article these are the fields of the Domino document. HTML Details View Link The result design of the personalization component which renders the list of documents contains an HTML component that creates the link to the details view. This details view is a separate page. Therefore the Plugin:RenderURL WCM tag, that is used to create this link, contains the uri attribute which contains the unique page name of the details view. Moreover, a public render parameter is set that contains the id of the document which should be displayed. 4 Alternative Domino Connections There are two alternative ways to connect the Domino server. One is using the Domino Java API however a custom DDC plugin is required for that. The other alternative uses the JSON DDC plugin and connects to the Domino server via its REST API. Domino Java API and custom DDC plugin The advantage of using the Domino Java API is that the data from the Domino database can be modified before displayed in DX. For example different fields can be aggregated or additional values can be computed. The disadvantage compared to using the JSON REST API is that Java programming skills are necessary. A custom DDC plugin needs to be developed which uses the Domino Java API and provides the bean list rendered by DDC. The effort of the Java implementation is higher compared to using a standardized REST API. Domino REST API and JSON DDC plugin In this part an alternative way of integrating a custom Domino database is demonstrated. The benefit of this solution is that no Java Code needs to be written for the DDC plugin. The reason for that is that it leverages the built-in DDC JSON plugin. A list rendering profile is still needed to describe the structure i.e. the fields of the Domino database. The following example shows how to use the WP ListRenderingProfileService resource environment provider to maintain this profile. Furthermore, an Ajax proxy configuration entry needs to be added to access the Domino database server. Paging In order to request only the information from the documents that are displayed paging needs to be implemented. This means an offset and page size parameter are included into the requests to the custom DDC plugin implementation which calls the Domino Java API. The same is true for the Domino REST API a start and count1 parameter determine which documents are requested from the database. The specific paging implementation is described in the following example. 1 http://www-10.lotus.com/ldd/ddwiki.nsf/xpAPIViewer.xsp? action=openDocument&res_title=Specifying_a_request_URL_with_IBM_Domino_Access_Services_das901&cont ent=apicontent 5 Common Setup instructions These setup instructions describe how to install the Domino database on which this article is based on. The sample database is a shopping list storing 20 documents that have fields like name, count, location, price, date and comments. In addition to that config tasks show how to import the Portal Application Archive which comes with in this article. Furthermore the setup of the Credential Vault in DX is described. That step is necessary to access restricted Domino databases. Install sample Domino database 1. Copy the ShoppingList.nsf into your data directory of your Domino server 2. Restart your sever 3. Optional: After you import the Domino database you might want to restrict access. (a) Select the application in the Domino Admin, right click and go to Access Control → Manage (Figure 1). Figure 1: Manage Access Control (b) Select the Default user and set the Access attribute to No Access (Figure 2). Figure 2: Access Control List assistant (c) Select your user (you might need to add the user entry first) and assign Manager access. You can add a further user for read access only. This user can be used later to access the Domino server. However, one user in the Access Control List needs to have Manager access assigned. (d) To save your changes in the access control list, click OK. 6 Install and deploy paa To install and deploy the DDC Domino Sample PAA package run the following commands: 1. wp_profile_root/ConfigEngine/ConfigEngine.sh install-paa -DPAALocation=path_to_DDCDominoSample.paa -DWasPassword=password -DPortalAdminPwd=password 2. wp_profile_root/ConfigEngine/ConfigEngine.sh deploy-paa -DappName=DDCDominoSample -DWasPassword=password -DPortalAdminPwd=password If you deploy to a virtual portal, you need to include the context root or host name parameters for the virtual portal. Add the -DVirtualPortalHostName or -DVirtualPortalContext parameters to the deploy-paa task. For example: wp_profile_root/ConfigEngine/ConfigEngine.sh deploy-paa -DappName=DDCDominoSample -DvirtualPortalContext=vp1 -DWasPassword=password -DPortalAdminPwd=password Note: If the package has been installed to a WebSphere Portal server once you don't need to run the install-paa task again. Instead only run the deploy-paa task again to deploy the package to a different virtual portal. At the end of this article it is described how you can uninstall and remove the paa again. (Optional) Setup shared Credential Vault Slot This step is only necessary if anonymous users cannot access your database. (ShoppingList.nsf has no access restrictions unless applied like described above) The user name and password for accessing the Domino database are stored in the Credential Vault of DX. 1. Login as administrator into Digital Experience. 2. Open the portal administration and select Access → Credential Vault. Select the Add a vault segment option (Figure 3). 3. Enter a vault segment name for example Domino Segment. To create the vault segment click the OK button. 4. Select the Add a vault slot option. 5. Enter a vault slot name e.g. DominoSlot (this is the Vault Slot Id) (Figure 4) Do not use a space nor a special character in the slot name. 6. Create a new vault resource by selecting the radio button new. 7. Enter a resource name e.g. Domino Resource 8. Check the Vault slot is shared box and enter the Domino user name and password that is required to connect to the Domino database. Confirm your information by clicking on the OK button. Now you have set up a Credential Vault Slot. For further information about the Credential Vault read Using credential vault to provide single sign-on for portlets by Konduru2. 2 http://www.ibm.com/developerworks/websphere/library/techarticles/0211_konduru/konduru.html#N102DD 7 Figure 3: Credential Vault in DX administration menu 1. 2. 3. 4. 5. Figure 4: Add a vault slot form 8 Part 1 - Using the Java API of the IBM Domino Server In part one the sample database (ShoppingList.nsf) is integrated into DX using a custom DDC implementation which connects to the Domino server through the Domino Java API. In this sample the documents of the database are presented on two pages in DX. One page shows an overview over the documents of the Domino database i.e. a list of documents. Whereas the other page serves as details view and displays one single document with its properties. The underlying DDC implementation is separated similarly. There are two list rendering profiles, one for the list of documents while the other provides access to the properties of a single document that was selected in the list. Setup Domino Server Activate and start Domino IIOP service In order to use the Java API on the Domino server the Domino IIOP service has to be loaded and configured correctly. If the Domino IIOP service is not running start it by executing the load diiop command in the IBM Domino Console. For further information how to set up the DIIOP service on your Domino server read section Administration in the article about Java access to the Domino Objects, Part 13. This section explains also on which port the DIIOP service runs. You will need this information later. Setting Domino host, database location and access credentials The Domino connection details i.e. Domino host, database location and Domino view that is accessed but also the Credential Vault Slot ID are stored in the content item “Domino Connection Details”. Follow these steps to configure the content item according to your environment: 1. Log into DX 2. Open the Web Content Authoring portlet 3. Navigate to the “Domino Connection Details” content item in the “DDC Domino Sample” library. 4. Enter the Domino host where the database is located as well as the database path including the file name and the Domino view you want to access (Figure 5). 3 http://www.ibm.com/developerworks/lotus/library/ls-Java_access_pt1/#N100DD 9 Figure 5: WCM Content item: Domino Connection Details 5. If your database allows anonymous access leave the Credential Vault Slot Id field empty. Otherwise enter the vault slot ID you have given in (Optional) Setup shared Credential Vault Slot. Now the setup is completed and you can access the “Domino Database” page. Open the site menu and click on DDC Samples (Figure 6). 1. 2. Figure 6: Domino Database page 10 Details of WCM items Content The DDC Domino Sample library contains three content items. The content item ”Domino Connection Details”, which you used in the previous step, holds the information for accessing the Domino server. The content item “Domino Database” is mapped to the presentation template “PT – Domino Database” and references the component “PZN – Domino DB” in the list appearance property. Whereas the content item “Domino Document” is mapped to the presentation template “PT – Single Domino Document” and references the component “PZN – Details View” in the list appearance property. Presentation Templates In the sample used in this article there are two presentation templates. The presentation template “PT – Domino Database” initializes the list rendering context for the list view of the documents in the database. Figure 7 to Figure 9 visualize this relationship between presentation template, BeanListProvider implementation and plugin.xml. The plugin.xml is used to register the extension points with the specific implementations of BeanListProvider. The other attributes of the WCM Plugin:ListRenderingContext tag refer to the attributes in content item ”Domino Connection Details“ and set Domino host, Domino database location, Domino view as well as the Credential Vault Slot ID. The last WCM tag not mentioned yet in the presentation template “PT – Domino Database” is a component tag which references the personalization component “PZN – Domino Database”. The presentation template “PT – Single Domino Document” contains almost the same Plugin:ListRenderingContext WCM tag as the previously described presentation template “PT – Domino Database”. The only difference is the value of the extension-id attribute. Whereas “PT – Domino Database” refers to ibm.samples.domino.document.list this presentation template contains the value ibm.samples.domino.details.view. That's why this presentation template refers to the BeanListProviderDetailsView. 11 Figure 7: "PT - Domino Database" presentation template Figure 8: Extension ID property in BeanListProvider Figure 9: plugin.xml listing BeanListProvider as an extension point 12 Components Personalization Components While the personalization component “PZN – Domino DB” renders the list of all documents the component “PZN – Details View” renders a list with only one item i.e. a single Domino document. In the list presentation markup of the personalization component it is possible to access the list properties of the rendered list. These properties are defined in the implementation of BeanList and made accessible by the getListProperty(String key) method. The result design renders the attributes of each list item. In “PZN – Domino DB” only the name and the serial number are included. The HTML component “HTML – Domino Document Details Link”, which is described later, generates a link to the details view. The footer section contains paging links (see Paging). Figure 10: Insert Tag assistant The “PZN – Details View” renders the properties of a Domino document. The corresponding WCM tags can be inserted using the Insert Tag button. In the form Insert a Tag the tag type Attribute Resource needs to be selected as well as Domino Details View as the target component (Figure 10). In the Java implementation the attribute names like “id”, “title” or “name” are implemented in ResourceBeanDetailsViewImpl which extends the ResourceBeanAdapter. HTML – Domino Document Details Link [Plugin:RenderURL pr.mode="set" copyCurrentParams="true" uri="nm:oid:domino.document" pr.key="sources" pr.type="public" pr.value="com.ibm.sample.domino.document:[AttributeResource attributeName='serialNumber' separator=',']"] Code 1: HTML - Domino Document Details Link Component The component “HTML Domino Document Details Link” creates the URL to the details view of each Domino document. This HTML component is referenced in the result design of the component “PZN – Domino DB”. Code 1 shows that this component contains a Plugin:RenderURL tag. The value of the parameter with the key sources is an uri scheme followed by the serial number of the current document. The source uri scheme is defined in BeanListProviderDetailsView. Moreover the uri parameter contains the unique name of the Domino Document page (Figure 11) where the link is redirected to. For further information how to resolve a DDC list item to its details view refer to Resolving a DDC list item to its details view4. 4 https://ibm.biz/resolving-a-item-to-its-details-view 13 Figure 11: Pages in DDC Sample unique name of page "Domino Document" highlighted Java Implementation When importing the source files of the DDC Domino Sample into your IDE you might need to configure your build path. Ensure the jar libraries in the folder PortalServer/doc/compile are in your build path. Furthermore, add NSCO.jar from your Domino installation (installation_folder/ data/domino/java/NSCO.jar). As already mentioned in the Components section there are two lists rendered in this DDC Domino Sample. One list contains the Domino documents while the other is used in the details view and contains a single Domino document with all its properties. The packages com.ibm.portal.samples.ddc.domino.details.view and com.ibm.portal.samples.ddc.domino.document.list reflect this separation too. Moreover, there are two implementations of BeanListProvider as well as two implementations of ResourceBean, two implementations of BeanResponse and two implementations of BeanList. Paging Although the sample database used in this article does not contain many documents this DDC implementation supports advanced paging. This means not all documents are fetched from the Domino database though only the ones which are displayed on the page the user is looking at. This is the major difference compared to the built in WCM paging component. That component enables paging too, however only on a rendering basis. In that case still the total list of documents is requested but only a part of it is displayed. The approach used in this sample fetches only list items that are currently displayed and therefore can be used when working with lists that contain a high number of list items. 14 In the footer of the personalization component “PZN – Domino DB” there are references to components generating the links for paging. The BeanList which is rendered by the personalization component has list properties that contain attributes for the document offset, the page size, the number of total documents in the database and a flag for determining if the last document on the requested document list is the last document of the database view. Furthermore, the page size and document offset i.e. the serial number of the first document on the displayed list are included as URL parameters in the paging links in the footer of the personalization component. For the previous and first link a minus-sign is added in the WCM attribute in front of the page size parameter. These parameters are extracted from the request and used for returning a list of documents fetched from the Domino database (Code 4 & Code 5). Since with this paging approach only a subset of the total documents is requested and subsequent requests have to show predictable results it is necessary that the list of all documents is sorted. Therefore a view containing all documents is accessed using the Domino Java API. The document offset and page size determine the amount and position of the requested documents (Code 2). Database dominoDatabase = DatabaseHelper.getDatabase(session); View v = DatabaseHelper.getDominoView(dominoDatabase); ViewEntryCollection vc = v.getAllEntries(); ViewEntry ve = vc.getNthEntry(offset); Code 2: Requesting a document from the Domino database using the offset parameter When caching is enabled and the Domino database is updated frequently, checks need to be implemented to invalidate or change the cache key as soon as the requested list of documents has been changed. Change the page size To change the page size the presentation template “PT – Domino Database” needs to be modified. The references personalization component includes the resultsPerPage parameter. Update the value of this parameter to change the page size. Furthermore the number component “PageSize” in the “Paging” component folder has to reflect this change. Extension Points and profile.properties The plugin.xml in the src directory lists the three extension points that are plugged into DX. The first two refer to the bean list providers implementing the list of documents respectively the single document list. The third extension point refers to the implementation of the ListRenderingProfileProvider. This provider parses the profile.properties file which defines the item attributes of the lists provided by the bean list provider. These item attributes can be selected in the WCM insert tag assistant (see Figure 12). Depending on the database these properties have to be changed. However changing (adding/removing) a property has the implication to modify the resource bean implementation i.e. the class extending the ResourceBeanAdapter. This implementation provides the get methods for the attributes defined in the profile.properties file. In this DDC Domino Sample there are two resource bean implementations one is the ResourceBeanDocumentListImpl containing only the properties shown in the list of documents while the ResourceBeanDetailsViewImpl contains all properties of the Domino 15 document which are displayed on the details view page. Figure 12: Insert Tag assistant (left) and profile.properties (right) Extracting attributes from BeanListRequest The BeanListRequest contains the attributes and properties set in different WCM tags such as the Plugin:RenderURL or Plugin:ListRenderingContext tags. Depending on WCM tag and attribute used different steps are necessary to extract the delivered information from the Java object. The setDatabaseParameters (Code 3) method in DatabaseHelper gives an example how to extract the attributes set in the presentation templates (Figure 7). public static void setDatabaseParameters(BeanListRequest request) { […] DOMINO_HOST = request.getAttributes().get("DominoHost"); DOMINO_VIEW = request.getAttributes().get("DominoView"); DOMINO_DATABASE_FILE_LOCATION = request.getAttributes().get( "DominoDatabaseLocation"); CREDENTIAL_VAULT_SLOT_ID = request.getAttributes().get( "CredentialVaultSlotId"); } Code 3: setDatabaseParameters from DatabaseHelper.java (logging statements left out) The URL parameters set in the paging HTML components (Code 4) are extracted differently from the BeanListRequest (Code 5). 16 [Plugin:RenderURL p1.type="private" p1.mode="set" p1.key="documentOffset" p1.value="10" p2.type="private" p2.mode="set" p2.key="pageSize" p2.value="-10" copyCurrentParams="false" compute="once"] Code 4: HTML First Link Component private int getPageSize(Map<?,?> requestParameterMap){ int pageSize = 10; String pageSizeS = ((String[])requestParameterMap.get(PAGE_SIZE))[0]; pageSize = getIntFromString(pageSizeS); return pageSize; } Code 5: Method in BeanDocumentListResponseImpl to extract page size Extracting the serial number set in the component “HTML – Domino Document Details View” (Code 6) works different again because here the sources parameter is used to transport the serial number from one page to another. private int getDocumentSerialNumberFromRequest(BeanListRequest request){ int serialNoRequestedDoc = 0; List<Addressable> sources = request.getListRenderState().getSources(); if (sources != null) { URI uri = null; for (Addressable source : sources) { try { uri = source.getURI(); } catch (URISyntaxException e) { [...] } if (uri != null) { //SOURCE_URI_SCHEME=com.ibm.sample.domino.document if (SOURCE_URI_SCHEME.equals(uri.getScheme())) { serialNoRequestedDoc = Integer.valueOf(uri.getSchemeSpecificPart()); break; } } } } return serialNoRequestedDoc; } Code 6: Method in BeanDetailsViewResponseImpl to extract serial number from request 17 Part 2 - Using the REST Service of IBM Domino Server The following sections describe how to use the REST service of the Domino server as well as the DDC JSON plugin to integrate the same example database into DX. Setup instructions Follow the Common Setup instructions if not already applied. Activate the Data REST service on the IBM Domino sever To access the REST service of your Domino server it is necessary that the Data service is enabled on the server. Read the section Enable your REST service in the article Create your own Domino REST service using DAS5 for further information on how to enable the Data REST service of your Domino server. Moreover the Data service needs to be enabled for the database and the view you want to access. The ShoppingList.nsf does meet these requirements. Slide 26 in REST services in Domino - Domino Access Services6 shows how to enable the Domino Data service for your own database and the view of the database. Setup the Ajax proxy configuration To access the REST service of your Domino server through Digital Experience you have to set up an Ajax proxy configuration. 1. Log in as administrator into your WebSphere Integrated Solutions Console 2. Go to Resources → Resource Environment → Resource Environment Providers. 3. Select the WP ConfigService entry and click on Custom properties in the additional properties section. 4. Click the New button and enter wp.proxy.config.urlreplacement.digital_data_connector_policy. json_domino_sample in the Name field and http://your.domino.server/* as a value. Figure 13: Setting up the Ajax proxy configuration 5. Click the OK button and in the following dialog on Save Now you have to restart the Ajax Proxy service. 5 http://www-10.lotus.com/ ldd/ddwiki.nsf/dx/Create_your_own_Domino_REST_service_using_DAS#Enable+your+REST+service 6 https://ibm.biz/domino-access-services-pdf 18 6. In your WebSphere Integrated Solution Console go to Applications → Application Types → WebSphere enterprise applications. 7. Select the AJAX Proxy Configuration entry and click on the Stop button 8. Select the AJAX Proxy Configuration entry again and click on the Start button Edit WCM content item “Domino Connection Details” Similar to part one a WCM content item is used to store the information about Domino host, database location, database view as well as the ID of the Credential Vault that holds the password and username that is necessary to access the Domino database. In the next step you need to enter your Domino Connection details in the WCM content element. 1. Log in DX 2. Go to the library “DDC Domino JSON Sample” and open the content item “Domino Connection Details” (Figure 14) Figure 14: JSON Lists: Domino Connection Details 3. Enter the Domino Host you used previously when setting up the Ajax Proxy 4. In the field DominoDatabaseLocation you might need to add the path to the database on 19 your Domino server 5. In the field CredentialVaultSlotId enter the vault slot ID you have used in (Optional) Setup shared Credential Vault Slot. If you did not set up a Credential Vault and your database as well as the Domino data REST service can be accessed by the anonymous user leave the field empty. 6. Click Save and Close. Now you can open the Domino JSON page. Go to your site menu and open the DDC Samples section there you can navigate to the Domino JSON page (Figure 15). 1. 2. Figure 15: Domino JSON page WP ListRenderingProfileService Configuration When deploying the PAA a new list rendering profile is installed. The properties of this profile can be displayed, changed or also created in the WebSphere Integrated Solution Console. 1. Login as administrator into the WebSphere Integrated Solution Console 2. Go to Resources → Resource Environment → Resource Environment Providers. Select the WP ListRenderingProfileService entry and click on Custom properties in the Figure 16: Properties of list rendering profile additional properties section. 3. Scroll down until you see the entries starting with domino. Figure 16 shows the extension-id of the list rendering profile that is defined here as well as the type of the profile. Within WCM the profile name value appears in the profile attribute of the Plugin:ListRenderingContext tag in the presentation template (Code 7). The entries that contain ItemAttribute (Figure 19) in their name are shown in the Insert a tag assistant (Figure 18) and relate to the JSON properties of the Domino data REST service JSON feed (Figure 17). Depending on the fields of the database the list rendering profile needs to be adjusted. This means new property entries have to be added to the WP ListRenderingProfileService or existing once need to be modified. 20 { "@href":"http:\/\/localhost:80\/ShoppingList.nsf\/api\/data\/col lections\/name\/all\/unid\/95A8ED5884491995C1257EFB0050A5E2", "@link": { "rel":"document", "href":"http:\/\/localhost:80\/ShoppingList.nsf\/api\/data\/docum ents\/unid\/95A8ED5884491995C1257EFB0050A5E2" }, "@entryid":"12-95A8ED5884491995C1257EFB0050A5E2", "@unid":"95A8ED5884491995C1257EFB0050A5E2", "@noteid":"922", "@position":"12", "@siblings":20, "@form":"Item", "Name":"bread", "Count":1, "Location":"bakery", "Comments":"a fresh bread", "Price":"2", "Date":"2015-11-19T16:00:56Z" } Figure 17: Snippet from the response of the Domino data REST service Figure 18: Insert a Tag form showing the Domino JSON list rendering profile Figure 19: ItemAttribute properties of the list rendering profile 21 Details of WCM items Similar to part 1 there are two presentation templates and two personalization components. One template respectively component renders the list of all documents while the other shows the properties of a single document. Presentation Templates The “JSON List” presentation template initializes the ListRenderingContext of the list view. In Code 7 the extension-id as well as the profile attributes are highlighted. The later one is equal to the name visible in the WP ListRenderingProfileService properties (Figure 16). The attribute starting with source defines the JSON REST service URL of the Domino server. This request includes values from the WCM content item “Domino Connection Details”, which has been set up previously. In addition to this a private Plugin:RenderParameter which is set by the paging components is read in order to set the correct offset of the requested document list. [Plugin:ListRenderingContext action="set" extensionid="ibm.portal.ddc.json" profile="sample.domino.profile.json" attribute="source=..."] Code 7: Plugin:ListRenderingContext of the JSON List presentation template The last tag in this presentation template is a component tag and references the personalization component “PZN – JSON List”. The “JSON Details View” presentation template is structured similarly. However the URL for the JSON REST service is constructed differently since only a single document is requested and not a list of documents. Furthermore, the personalization component “PZN – JSON Details View” is referenced at the end which renders the properties of a single document. 1. http://localhost/ShoppingList.nsf/api/data/collections/name/all ?start=5 2. http://localhost/ShoppingList.nsf/api/data/documents/unid/... Figure 20: Requests to the Domino Data REST service API Figure 20 shows two different HTTP requests using the Domino Data REST service API. The first request URL contains the file name ShoppingList.nsf. It requests documents from the view all starting with the sixth document (the parameter start is zero based). However, the second request fetches a single document (the unique ID is left out for readability reasons). 22 Personalization components The personalization component“PZN – JSON List” renders the list of documents. In the result design there are AttributeResource tags. The attribute names of these tags are defined in the WP ListRenderingProfileService property (Figure 19). Moreover two request attributes are set which are read in the paging links referenced in the footer. These request attributes are overwritten for each list item so that only the values of the last list item are used. This solution was chosen because the JSON feed provided by the Domino server does not have properties in the root element itself but only in the objects within the root array. The footer of the personalization component includes the HTML components that generate the paging links. The personalization component “PZN – JSON Details View” renders only one list item. However, in contrast to the personalization component “JSON List” all properties of the list item are rendered. Therefore more AttributeResource tags are used in the result design of this personalization component. HTML Components There are three HTML components creating the <a href=...> tags for the paging links. The component “Previous Link” generates the link to go to the page of documents which come before the currently displayed documents. Like the “Next Link” component this component sets the private render parameter with the key offset. This render parameter is read in the presentation template and included in the request to the Domino REST API. Therefore the correct subset of documents is requested from the Domino server. However, for generating the value of the offset parameter a custom rendering plugin is called. This plugin is installed during the PAA deployment. Based on the current position and the page size it returns the offset which is needed to display the previous page ( previousOffset=currentPosition−2∗ pageSize ). The HTML component “First Link” removes the offset parameter from the request. The Domino server REST API provides by default the first documents when the request does not contain a start parameter. Moreover, there is an HTML component which generates the link to the details view. Similarly to part one a Plugin:RenderURL WCM tag is used which sets a public parameter containing the unique id of the Domino document and the unique name of the Domino JSON Details View page. [Plugin:RenderURL copyCurrentParams="true" uri="nm:oid:domino.json.details.view" pr.key="{http://ibm.com}unid" pr.type="public" pr.mode="set" pr.value="[AttributeResource attributeName='documentId' separator=',']"] Code 8: ComponentHTML - Details View Changing the Page Size The presentation template “JSON List” needs to be modified to change the page size. Alter the value of the resultsPerPage parameter in the referenced personalization component. Furthermore, 23 change the component item Page Size in the Paging component folder. Removing the DDC Domino Sample PAA To remove the DDCDominoSample PAA package run the following command: 1. wp_profile_root/ConfigEngine/ConfigEngine.sh remove-paa -DappName=DDCDominoSample -DforceRemove=true -DWasPassword=password -DPortalAdminPwd=password 2. wp_profile_root/ConfigEngine/ConfigEngine.sh uninstall-paa -DappName=DDCDominoSample -DforceUninstall=true -DWasPassword=password -DPortalAdminPwd=password To remove the package from a virtual portal, you need to include the context root or host name parameters for the virtual portal. Add the -DVirtualPortalHostName or -DVirtualPortalContext parameters to the remove-paa task. For example: wp_profile_root/ConfigEngine/ConfigEngine.sh remove-paa -DappName=DDCDominoSample -DforceRemove=true -DvirtualPortalContext=vp1 After running the uninstall-paa task and removing the assembly from the ConfigEngine registry, the PAA content remains in the PAA directory. To remove any remaining content run the delete-paa command. This command inspects the PAA directory and removes content that is not registered. wp_profile_root/ConfigEngine/ConfigEngine.sh delete-paa -DassemblyList=DDCDominoSample -DWasPassword=password -DPortalAdminPwd=password 24