Fork me on GitHub

Architecture (External Document Field Picker)


In Hippo CMS authoring application, the External Document Picker Base for Field Picker plugin and External Picker Folder Context Menu plugins are installed. Then you can configure field(s) in document template bootstrap files (a.k.a Hippo CMS 'namespace'), or you can configure folder workflow configurations for a custom folder context menu item. So, when you are editing a document or working on a folder in CMS authoring application, you will see those being displayed by this plugin.

Each document field or folder workflow must be configured with a custom domain-specific ExternalSearchServiceFacade implementation class name.

This plugin component instantiates your ExternalSearchServiceFacade class and invokes it like the following:

  • First of all, an ExternalSearchServiceFacade instance is in the same lifecycle of this plugin. In case External Document Picker Base for Field Picker is used, whenever a document (of the configured namespace) is opened or edited, the plugin will be instantiated. In case External Picker Folder Context Menu is used, whenever the folder context menu is pulled down on a folder (of the configured folder workflow type), the plugin will be instantiated. And the plugin will instantiate an ExternalSearchServiceFacade instance. When the document is closed, this plugin and the ExternalSearchServiceFacade instance will be destroyed.
  • When the plugin is instantiated, the plugin invokes the ExternalSearchServiceFacade instance to retrieve the currently-selected domain-specific external documents from the currently-viewed/edited CMS document or the selected folder node in the context.
  • When the plugin needs to display the linked external documents (e.g, title), it invokes the ExternalSearchServiceFacade with the current document context. The ExternalSearchServiceFacade should give a proper title or description string values for your domain-specific document object to the plugin.
  • The ExternalSearchServiceFacade instance is invoked from the External Document Field Browser Dialog in order to search domain-specific external documents and display document information such as title, description and icon in the dialog.
  • The dialog iterates the searched external document items to show the result in either the default Flat List View or Tree List View table by reading title, description and optionally icon image link from each external document item.
  • When a user selects single or multiple items in the table view and clicks on the OK button, the dialog saves the selections by invoking ExternalDocumentServiceFacade#setFieldExternalDocuments() method.

Here's an architectural overview. As you can see, you can care of only your custom ExternalDocumentServiceFacade implementation class with simple configurations for a specific document field without having to spend much effort on CMS Document Editor UI customization by yourself.

Architectural View

Here's a sequence diagram showing the interactions:

Sequence Diagram

See Javadocs for detail about the ExternalSearchServiceFacade.