Skip to content

Business Object Data Search

Nate Weisz edited this page Aug 16, 2016 · 5 revisions

Distinguishing between Search and Availability

  • Availability includes business logic
    • Results include elements for Available and NotAvailable
    • Only returns on VALID status
    • Always takes PartitionKeyGroup into account when considering ranges
    • Returns only latest versions
  • Search just does what you tell it
    • Has no clue about what availability means
    • Makes no judgement based on status
    • Ignores PartitionKeyGroup
    • no baked-in logic about versions (but will allow you to filter on latestVersion)

Interface Definition

  • The businessObjectFormatKeys will allow various key parts to be specified depending on story requirements (e.g. namespace and bdef name).
  • Will try to adhere to API Standards when it comes to Sorting, Field Limiting, and Pagination.
  • We will have to determine the max page size and make it a system configuration (e.g. 100 per page).
  • Individual field names will have to be determined for each sortable and field limiting field (e.g. partitionValue, businessObjectDataStatusCreationDate, etc.).
  • Each resultant business object data object will only contain the key fields by default unless additional fields are specified in the "fields" query parameter.
  • The default sort would most likely be "business object data status creation date" descending, but this should be evaluated based on performance. The most recent status changes to the oldest ones.
  • When multiple values are allowed within a specific filter, they are "OR"ed. When different filters are added, they are "AND"ed. For example, if multiple business object definition keys and business object data statuses are both specified, that would mean where business object definition = a OR b AND business object data status = status1 OR status2.
  • No filters are required which will simply return all business object data keys from newest to oldest in a paginated result. We need to decide whether this is possible for performance reasons.

Request Example

<businessObjectDataSearchRequest>
    <businessObjectDataSearchFilters>
        <businessObjectDataSearchFilter>
            <businessObjectFormatKeys>
                <businessObjectFormatKey>
                    <namespace>DATAMGT</namespace>
                    <businessObjectDefinitionName>NYX_BADGE</businessObjectDefinitionName>
                    <businessObjectFormatUsage>PRC</businessObjectFormatUsage>
                    <businessObjectFormatFileType>GZ</businessObjectFormatFileType>
                    <businessObjectFormatVersion>1</businessObjectFormatVersion>
                </businessObjectFormatKey>
                ...
            </businessObjectFormatKeys>
            <businessObjectDataStatuses>
                <businessObjectDataStatus>VALID</businessObjectDataStatus>
                ...
            </businessObjectDataStatuses>
            <businessObjectDataAttributes>
                <businessObjectDataAttribute>
                    <businessObjectDataAttributeKey>myKey</businessObjectDataAttributeKey>
                    <businessObjectDataAttributeValue>myValue</businessObjectDataAttributeValue>
                </businessObjectDataAttribute>
                ...
            </businessObjectDataAttributes>
            <partitionValueFilters>
                ...similar to availability...
            </partitionValueFilters>
            <latestBusinessObjectDataVersion>true</latestBusinessObjectDataVersion>
        </businessObjectDataSearchFilter>
    </businessObjectDataSearchFilters>
</businessObjectDataSearchRequest>

Response Example

<businessObjectDataSearchResult>
    <businessObjectDataElements>
        <businessObjectData>
            <id>1</id>
            <namespace>DATAMGT</namespace>
            <businessObjectDefinitionName>NYX_BADGE</businessObjectDefinitionName>
            <businessObjectFormatUsage>PRC</businessObjectFormatUsage>
            <businessObjectFormatFileType>GZ</businessObjectFormatFileType>
            <businessObjectFormatVersion>1</businessObjectFormatVersion>
            <partitionKey>TDATE</partitionKey>
            <partitionValue>20140401</partitionValue>
            <status>VALID</status>
            <subPartitionValues>
                <partitionValue>A</paritionValue>
                <partitionValue>B</paritionValue>
            </subPartitionValues>
            <version>0</version>
            ...
        </businessObjectData>
        ...
    </businessObjectDataElements>
</businessObjectDataSearchResult>
Clone this wiki locally