BDPI implementation into your product


General Intro

BECS Dynamic Packaged Integration (BDPI) is general enabling one step integration with unlimited amount of user enterprise systems from ERPs like SAP, IBM Maximo or IFS via DMS (SharePoint, OpenText, Documentum, ….) up to IoT, Spatial or GIS systems (ESRI, AutoDesk, Hexagon, …). Learn more about BDPI here and at "Mastering in BDPI" section here. The Step-by-step guide how to implement BDPI into your app is available in Downloads section at the bottom of this page.

Section structure

In this section you can find all needed knowledge in following structure:

​​​​​​​General principle of BECS Dynamic (BDPI) adaptation

BECS Dynamic Integration is invented to offer universal integration gateway for your product to any of possible user systems. This platform is designed with focus on 3 major principles:


Thanks to all of those principles is implementation of BECS Dynamic in your product very simple and BECS will massively enhance your integration capabilities once for all.

Integration with your product will be working as shown on following schema:

General structure of BDPI interaction

There is expected to have 2 major flows implemented:

    

​​​​​​​Supported types of BDPI interactions

Major interactions

BDPI supports 3 major interactions:

Interaction Name

Brief Description

Trigger initiating the call

Expected visualization in your system

Read the property data

BDPI will read property data from integrated user enterprise systems. Property data are one unique set of attributes to selected object (for example “Asset Details from SAP for selected object”.

Click on object in user solution

Data are shown in “Property Window” in a form “Attribute – Value”

Sample of result:

Read multiline data

BDPI will read multiline data from integrated user enterprise systems. Multiline data are list of rows (“table”) for selected object (for example “All documents from SharePoint for object”.

Click on object in user solution

Data are shown in “GRID Window” in a form of multirow table

Sample of result:

Execute User Query

BDPI will resolve query across all relevant user enterprise systems and return object identifiers which fits to the query result

Finalization of query in some query builder

Sample of result:

​​​​​​​Minor interactions (supportive calls for major interactions)

In respect of executing the major interactions we prepared also supportive REST API calls as follows:

Major interaction

Support call

Description of support call

Result

Read multiline data

Read Grid TAB Names

BDPI will deliver list of all TABs and its structure (fields) for featured GRID calls

Json with a list of TAB Names

Sample of Result visualization:

Execute User Query

Read attributes for Query Builder

BDPI will deliver all attributes defined in BDPI for building the User Queries

Json with a list of Attributes

Sample of Result visualization:

Execute User Query

Read Value List for selected attribute

BDPI will deliver Value List defined in BDPI for concrete Attribute (if exist), which can be used in building the User Queries

Json with a Value List for concrete Attribute

Sample of Result visualization:

​​​​​​​Interactions in detail

In following sections, you can find real detail of each interaction. Please understand endpoints and concrete data used as samples. Real usage in your project may vary.

Read the property data

  • BECS EndPoint to call:

  • ​​​​​​​Input json to use

In a call is needed to provide following json:

{

   "returnAsXML":false,

   "projectName":"PS_D_DISPATCHER",

   "projectVariables":[

      {

         "name":"CODE",

         "value":"0x30000001d11"

      },

      {

         "name":"EventType",

         "value":"PROPERTIES"

      },

      {

         "name":"TabName",

         "value":""

      },

      {

         "name":"organizationID",

         "value":"fab9774b-b338-4cc2-a6c9-458bdf7f966a"

      },

      {

         "name":"iModelID",

         "value":"a9ac27e8-793e-434c-9365-da069eac0ddb"

      }

   ]

}

Attribute Name

Attribute Description

Values

"returnAsXML"

Switch using to define format of BECS Service response (json/XML)

false – json

true – XML

"projectName"

Technical Name of BECS Project executing relevant calls (please use only BECS project names listen in this document)

PS_D_DISPATCHER

PS_D_SEARCH_OBJECTS

PS_D_SEARCH_OBJECTS

PS_D_FILTER_FIELDS

PS_D_VALUE_LIST

"CODE"

Unique identifier of selected object in your solution (object you want to ask data for)

"EventType"

Identification of BECS Interaction you want to run

PROPERTIES

GRID

TabName

Name of the GRID Tab Name you are asking data for (on which was clicked in your solution)

organizationID

GUID of caller’s Organization

iModelID

GUID of caller’s iModel

Read multiline data

In a call is needed to provide following json:

{

   "returnAsXML":false,

   "projectName":"PS_D_DISPATCHER",

   "projectVariables":[

      {

         "name":"CODE",

         "value":"0x30000001d11"

      },

      {

         "name":"EventType",

         "value":"GRID"

      },

      {

         "name":"TabName",

         "value":"SharePoint"

      },

      {

         "name":"organizationID",

         "value":"fab9774b-b338-4cc2-a6c9-458bdf7f966a"

      },

      {

         "name":"iModelID",

         "value":"a9ac27e8-793e-434c-9365-da069eac0ddb"

      }

   ]

}​​​​​​​

Read Grid TAB Names

For reading all existing TAB Names for your featured Multiline data read you can use exactly the same call as described in previous section “Read multiline data”, just use blank TabName in input json (because in truth you do not know the TAB Name until reading them):

Execute User Query

In a call is needed to provide following json:

{

   "returnAsXML":false,

   "projectName":"PS_D_SEARCH_OBJECTS",

   "projectVariables":[

      {

         "name":"condition",

         "value":"<conditions><condition><field>Manufacturer of asset</field><value>A*</value></condition><coloredBy>Year of construction</coloredBy></conditions>"

      },

      {

         "name":"iModelID",

         "value":"b8c32999-e571-468b-9584-85cd1ae97369"

      },

      {

         "name":"organizationID",

         "value":"72adad30-c07c-465d-a1fe-2f2dfac950a4"

      }

   ]

}

This input attribute is used for definition of user query, where query is always defined in following structure:

<condition>

<field>Manufacturer of asset</field>

<value>A*</value>

</condition>

Every condition has operator “EQUAL” only and between conditions is only “AND” operator.

BDPI supports one attribute selection for colouring of output in format:

<coloredBy>Year of construction</coloredBy>

BDPI sends payload in following structure:​​​​​​​

Result brings for each found element:

Name of returned attribute

Description (usability of attribute)

"Code"

Unique Element identifier (same as in input json)

"color"

Color of element defined by BDPI according selected “coloredBy” attribute

"GroupByValue"

Identifier of value for this colour – recommended to use for Legend definition in your system

"Blinking"

Flag identifying request to blink for particular element

​​​​​​​Read attributes for Query Builder

  • BECS EndPoint to call:​​​​​​​

  • ​​​​​​​Input json to use

In a call is needed to provide following json:

{

   "returnAsXML":false,

   "organizationUUID":"72adad30-c07c-465d-a1fe-2f2dfac950a4",

   "projectName":"PS_D_FILTER_FIELDS",

   "projectVariables":[

      {

         "name":"iModelID",

         "value":"b8c32999-e571-468b-9584-85cd1ae97369"

      },

      {

         "name":"organizationID",

         "value":"72adad30-c07c-465d-a1fe-2f2dfac950a4"

      }

   ]

}​​​​​​​

  • Output json to receive

  • ​​​​​​​TabName attribute in output json

This attribute identifies the integration section in which is this attribute to be able to distinguish same named attributes from different integrations (SAP EQ can have “Description” as well as SharePoint document or Maximo Asset…).

We recommend using this as a grouping attribute in your query builder.

Read Value List for selected attribute

  • BECS EndPoint to call:

  • ​​​​​​​Input json to use

In a call is needed to provide following json:

{

    "returnAsXML": false,

    "projectName": "PS_D_VALUE_LIST",

    "projectVariables": [

        {

            "name":"USER_NAME",

            "value":"Manufacturer of asset"

        },

        {

            "name":"TAB",

            "value":"Equipment Data - SAP via BECS"

        },

        {

            "name":"organizationID",

            "value":"72adad30-c07c-465d-a1fe-2f2dfac950a4"

        },

        {

            "name":"iModelID",

            "value":"1ba3d302-e4b9-41fa-bd64-f4962a156fe6"

        }

    ]

}​​​​​​​

  • Output json to receive​​​​​​​


Read IoT TAB Names

For reading all existing TAB Names for your featured Multiline data read you can use exactly the same call as described in previous section “Read multiline data”, just use blank TabName in input json (because in truth you do not know the TAB Name until reading them):

  • BECS EndPoint to call:

  • Input json to use:

In a call is needed to provide following json:

{

   "returnAsXML":false,

   "projectName":"PS_D_DISPATCHER",

   "projectVariables":[

      {

         "name":"CODE",

         "value":"0x20000039f56"

      },

      {

         "name":"EventType",

         "value":"IoT"

      },

      {

         "name":"TabName",

         "value":""

      },

      {

         "name":"organizationID",

         "value":"fab9774b-b338-4cc2-a6c9-458bdf7f966a"

      },

      {

         "name":"iModelID",

         "value":"a9ac27e8-793e-434c-9365-da069eac0ddb"

      }

   ]

}

  • Output json to receive

Read IoT data

  • BECS EndPoint to call:

  • Input json to use

In a call is needed to provide following json:

{

   "returnAsXML":false,

   "projectName":"PS_D_DISPATCHER",

   "projectVariables":[

      {

         "name":"CODE",

         "value":"0x2000002a89e"

      },

      {

         "name":"EventType",

         "value":"IoT"

      },

      {

         "name":"TabName",

         "value":"4D IoT data - Temperature"

      },

      {

         "name":"organizationID",

         "value":"fab9774b-b338-4cc2-a6c9-458bdf7f966a"

      },

      {

         "name":"iModelID",

         "value":"a9ac27e8-793e-434c-9365-da069eac0ddb"

      }

   ]

}

  • Output json to receive

Security

All of the calls are requiring using valid IMS TOKEN in Authorization section of Call Header:

Real Postman for you to test

To simplify your implementation, we prepared all of the calls in a format of PostMan import without IMS validation. We expect that this will streamline your implementation, but keep in mind that for productive usage only IMS TOKEN Authorized calls will be enabled on real BECS Cloud End Point. You can download the PostMan collection below in Downloads section.