Broadleaf Microservices
  • v1.0.0-latest-prod

Bulk Operations Services

Architecture Overview

Key Flows

This diagram is designed to illustrate the orchestration performed by the BulkOperations service and resource tier services for the overall execution of Bulk Operations.

Bulk Operation Flow
Figure 1. Execution of Bulk Operations Sequence Diagram

Durable Messaging

BulkOperationsService was designed to use a datasource for support of Detached Durable Messaging. Messages sent from BulkOperationsService will store a detached notification state to support message retries.

Providers

Bulk Operations service serves as an orchestration service to determine business logic & gathers/persists the necessary data to/from resource tier services.

In order for BulkOperationsService to communicate with these resource tier services, hook points known as "providers" are needed to interact. Default out-of-box providers are implemented to communicate with Broadleaf resource tier services.

Catalog Provider

Provider to interface with Catalog entities. This is used in BulkOperationsService to perform CRUD operations on Bulk Operations, Bulk Operation Items, and the entities saved on those items.

The default implementation, ExternalCatalogProvider, is designed to interact with Broadleaf’s Catalog Services. It is responsible for creating the bulk operation, finding supported bulk operations, initializing bulk operation items, and updating the bulk operations’s total record count.

Catalog Provider Properties

ExternalCatalogProperties defines the properties needed to configure ExternalCatalogProvider. These include:

  • broadleaf.bulkoperations.catalogprovider.url: The base url for an external catalog service.

  • broadleaf.bulkoperations.catalogprovider.bulk-operation-uri: The context path to the bulk operation endpoint.

  • broadleaf.bulkoperations.catalogprovider.bulk-operation-items-uri: The context path to the bulk operation items endpoint.

  • broadleaf.bulkoperations.catalogprovider.bulk-operation-total-records-uri: The context path to update the bulk operation total records.

  • broadleaf.bulkoperations.catalogprovider.supported-bulk-ops-uri: The context path to the supported bulk operations endpoint.

  • broadleaf.bulkoperations.catalogprovider.service-client: The service client to use when calling catalog. Default is "bulkopsclient".

Example of building request from properties
UriComponentsBuilder.fromHttpUrl(properties.getUrl())
        .path(properties.getBulkOperationUri())
        .toUriString();

Search Provider

Provider to interface with Search Engine to supply catalog search results. This is used in BulkOperationsService to lookup search engine results for the given bulk operation.

The default implementation, ExternalSearchProvider, is designed to interact with Broadleaf’s Search Services. It is responsible for looking up the search engine results from the provided search filters & query on the bulk operation request.

Search Provider Properties

ExternalSearchProperties defines the properties needed to configure ExternalSearchProvider. These include:

  • broadleaf.bulkoperations.searchprovider.url: The base url for an external search engine service.

  • broadleaf.bulkoperations.searchprovider.search-uri: The context path to the catalog search endpoint.

  • broadleaf.bulkoperations.searchprovider.service-client: The service client to use when calling search. Default is "bulkopsclient".

Example of building request from properties
UriComponentsBuilder.fromHttpUrl(properties.getUrl())
        .path(properties.getSearchUri())
        .queryParams(searchParams)
        .toUriString();