Technology Blogs by SAP
Learn how to extend and personalize SAP applications. Follow the SAP technology blog for insights into SAP BTP, ABAP, SAP Analytics Cloud, SAP HANA, and more.
cancel
Showing results for 
Search instead for 
Did you mean: 

From SAP BPM 7.31 SP16, we provision the integration of any external process repositories with BPM. It brings in the flavor of seamless integration across products. For example, you can use Power Designer to model the process, save it in the repository and then using Process Composer of BPM, the process modeled in power designer can be implemented. This feature is extremely useful especially with the availability of Intelligent Business Operations (IBO) bundle which includes multiple products like Power Designer, SAP Process Orchestration and Operational Process Intelligence. In addition to that, the scope of this feature also goes beyond IBO and any process repository can be integrated with BPM.

This blog focuses on the implementation details in the BPM side on how this integration can be achieved. If you are looking for details on "how to" use the feature, please have a look at the documentation on SAP help portal.

Majorly, there are two steps:

  1. Availability of APIs/OData service to access the process definition related data from the repository. This includes list of process definitions and its BPMN content from the process repository (If these are not readily available, then they should be implemented. These implementation details is beyond the scope of this article.)
  2. Implement extensions of Search Console in SAP Netweaver Developer Studio (NWDS)

Prerequisites

The development workspace is setup and you have already decided the eclipse plugin (new or existing) in NWDS in which these extensions will be provided.  Ensure that the dependencies to the following plugins are added:

com.sap.ide.discovery.runtime.objecttype

com.sap.ide.discovery.runtime.destinationcategory

com.sap.ide.discovery.runtime.destinationsprovider

com.sap.ide.discovery.runtime.searchprovider

com.sap.ide.discovery.integration.searchexplorer

Implement extensions of Search Console in NWDS

Before we see the technical details, the question of why do we use search console might be ringing in your minds. Think about the use case in question - from SAP BPM, the user must be able to "Search, Discover and Configure" the process definition(s) residing in an external repository. The search console in NWDS provides a very sophisticated way in order to achieve the - Search and Discovery of artifacts(in this case, process definitions; the configuration will be done using SAP BPM's Process Composer).

For more details on search console, please refer this link

Lets see in details the various extensions points that needs to be implemented:

Step 1. Define a new object type

Object type is used to define a new option in the "Search for" drop down of Search console view. First make sure that nobody else has already defined such an object type.

Extension point id: com.sap.ide.discovery.runtime.objecttype

Defined in plugin: com.sap.ide.discovery.integration

Example:


<extension point="com.sap.ide.discovery.runtime.objecttype">
  <objecttype displayname="<<Name to be displayed>>" id="<<ID of the object type>>" />
</extension>



Step 2. Define a destination category

As the name implies, destination category is used to combine destinations under a category. This extension point is used to define categories in the "Search in" option of Search console view. First make sure that nobody else has already defined such a destination category.

Extension point id: com.sap.ide.discovery.runtime.destinationcategory

Defined in plugin: com.sap.ide.discovery.runtime

Example:


<extension point="com.sap.ide.discovery.runtime.destinationcategory">
  <destinationcategory destinationclass="<<Class referring the destination>>" displayname="<<Name of the destination category>>"
id="<<ID of the destination category>>">
  </destinationcategory>
</extension>



where "destinationclass" refers to the fully qualified name of the class defined to represent a destination in which the process definition will be searched  and "displayname" represents the name of the category.

Step 3. Create a destinations provider

Destinations provider is responsible for retrieving all the destinations defined in the given destination category.

Extension point id: com.sap.ide.discovery.runtime.destinationsprovider

Defined in plugin: com.sap.ide.discovery.runtime

Example:


<extension point="com.sap.ide.discovery.runtime.destinationsprovider">
  <destinationsprovider destcategoryid="<<ID of the destination category as described in the above step>>" id="<<ID of the destinations provider>>"
  provider="<<Class referring the destinations provider>>">
  </destinationsprovider>
</extension>



where "provider" represents the fully qualified name of the class defined to combine destinations to the destination category defined above.

Step 4. Create a search provider

This is the extension point through which the actual destination will be contacted and the requested artifacts will be retrieved.

Extension point ID: com.sap.ide.discovery.runtime.searchprovider

Defined in plugin: com.sap.ide.discovery.runtime

Example:


<extension point="com.sap.ide.discovery.runtime.searchprovider">
  <searchprovider id="<<ID of the search provider>>" instance="<<Class referring the search provider>>"
objecttypeid="<<ID of the object type as defined in step 1>>" supportstextsearch="true">
  <category categoryid="<<ID of the destination category as defined in step 2>>"></category>
  </searchprovider>
</extension>



where "instance" refers to the class using which the search operation will be performed.

Note that the resultant object returned from the search must have implemented the interface com.sap.glx.ide.bpmn.util.IBPMN2ContentProvider defined in the plugin: bpem.ide/com.sap.glx.ide in order for the integration to work.

Step 5. Customize/Create search results UI

As a final step, the search results should be displayed in the UI. This extension point is used to contribute customization to the generic search result UI.

Extension point id: com.sap.ide.discovery.integration.searchexplorer

Defined in plugin: com.sap.ide.discovery.integration

One can contribute the following artifacts via view customizations:

  • Content provider - provides content to be displayed in the search view for a given search result
  • Label provider - provides text and images for the displayed result entries
  • Tooltip provider - provides tool tips for the displayed result entries

Example:


<extension point="com.sap.ide.discovery.integration.searchexplorer">
  <viewcustomization customizationimpl="<<Class referring the UI>>" id="<<ID of the view customization>>">
  </viewcustomization>
</extension>



where "customizationimpl" refers the fully qualified name of the class which implements the UI.

If you interested in creating in your own UI to display search results from your search provider, then contribute to the following extension point:

Extension point id: com.sap.ide.discovery.ui.customresultui

Defined in plugin: com.sap.ide.discovery.ui

Example:


<extension point="com.sap.ide.discovery.ui.customresultui">
  <contributor creator="<<Class referring the custom UI>>" id="<<ID of the custom UI>>"
searchproviderid="<<ID of the search provider defined above>>">
  </contributor>
</extension>