Broadleaf Microservices
  • v1.0.0-latest-prod

Metadata Release Notes

2.0.4-GA

Features/Notable Changes

  • Amended export related metadata to accommodate new filter parameters and fields

    • Added ability to define passFilterStringAsParam attribute for SelectTargetEntityGridView and ExportGridAction.

    • Set passFilterStringAsParam attribute to false by default for ExportGrid.

    • Deprecated filterTargetEntities for filterTargetEntitiesField, which adds QueryBuilderField as a field to SelectTargetEntityGridView for the passing of a filter to the export endpoint.

    • Added ability to fetch all fields from QueryBuilderFilterAction.

    • Added new URI/endpoint definitions to CommonStartExportAction for starting an export that includes the filter string from the QueryBuilderField as the filter parameter value for backwards compatibility.

  • Amended Grid validation logic to allow SelectTargetEntityGridView to have QueryBuilderField as a field component without having to be a column component

2.0.3-GA

Features/Notable Changes

  • Added ability to define displayShowInQueryBuilder attribute for AugmentableView.

2.0.2-GA

Features/Notable Changes

  • Added ability to define refreshButton attribute for FetchGrid.

2.0.1-GA

Important
Requires AdminWeb 1.10.7 for admin compatibility.

Features/Notable Changes

  • Added support to use Search Facets on Entity Browse List Grids.

    • Allowed defining attribute to enable faceted search, useFacetedSearch

    • Allowed defining a fallback endpoint to use if search is disabled or in a problem state

      • This may be configured similarly to any read endpoint using #fallbackEndpoint builder methods.

    • Allowed defining search-appropriate parameters for the main read endpoint

      • FilterableGrid.FilterParams#FACET_RULES: Allows passing Facet Rules to Search. Value is cq.

      • FilterableGrid.FilterParams#FACETABLE_TYPE: Allows passing the indexable type to Search. Value is indexableType.

      • FilterableGrid.FilterParams#FACET_QUERY: Allows passing regular a text query. Value is query.

        entityGridView
                // for fallback endpoint
                .filterByTextQuery(FilterableGrid.FilterParams.QUERY,
                        UnaryOperator.identity(),
                        FilterableGrid.EndpointTypes.FACETED_SEARCH_FALLBACK)
                .filterByQueryBuilder(FilterableGrid.FilterParams.QUERY_BUILDER,
                        UnaryOperator.identity(),
                        FilterableGrid.EndpointTypes.FACETED_SEARCH_FALLBACK)
                .facetedSearch("PRODUCT",
                        readEndpoint -> readEndpoint
                                .narrowedPaging()
                                .uri(ProductPaths.PRODUCTS)
                                .scope(ProductScopes.PRODUCT))
                .readEndpoint(readEndpoint -> readEndpoint
                        .numberedPaging()
                        .uri(ProductPaths.CATALOG_SEARCH)
                        .scope(ProductScopes.PRODUCT));
  • Enable search group tracking & discrimination via metadata

    • This works similarly to Catalog and Profile discrimination using searchGroupTrackable().

      DefaultSearchSettingsFormView formView = new DefaultSearchSettingsFormView()
              .searchGroupTrackable()
              .sandboxTrackable(SearchSettingsChangeContainers.SEARCH_SETTINGS)
              .addExternal(SearchSettingsGrids.FACET_GROUPS, Externals.grid()
                      .id("facetGroups")
                      .label("search-settings.external-grid.facet-groups")
                      .searchGroupTrackable()
                      .sandboxTrackable(
                              SearchSettingsChangeContainers.SETTINGS_FACET_GROUP)
  • Allow adding Form Views to EntityBrowseView easily Forms added to views will appear as separate "tabs".

  • Added support for defining "Action Groups" on ActionGrids. These are used to create a dropdown with the included actions rather than listing them in line in the grid header.

    .addGridActionGroup("Bulk Operations",
            Actions.bulkAction()
                    .bulkOperationType("SET_ACTIVE_PRODUCT")
                    .entityType(entityType)
                    .generateFriendlyName()
                    .label("product.bulk-operation.update-active")
                    .addField(ProductProps.ONLINE, Fields.bool()
                            .label("product.columns.online")
                            .required())
                    .addField(ProductProps.ACTIVE_START_DATE, Fields.date()
                            .label("product.fields.active-start-date"))
                    .addField(ProductProps.ACTIVE_END_DATE, Fields.date()
                            .label("product.fields.active-end-date")
                            .validationSchema(ValidationSchemas.date()
                                    .method(ValidationMethods.isAfter(
                                            "product.fields.active-end-date.must-be-after")
                                            .arg(ProductProps.ACTIVE_START_DATE))))
                    .addSubmitEndpoint(Endpoints.post()
                            .uri(BulkOperationPaths.EXECUTE_BULK_OPERATION)
                            .scope(BulkOperationScopes.BULK_OPERATION)),
            Actions.bulkAction()
                    .bulkOperationType("ARCHIVE_PRODUCT")
                    .entityType(entityType)
                    .generateFriendlyName()
                    .label("product.bulk-operation.archive")
                    .addGroup("warning", Groups.inline()
                            .addMessage("deleteWarning", Messages.warningMessage()
                                    .message("product.bulk-operation.archive.warning")
                                    .order(1000)))
                    .addSubmitEndpoint(Endpoints.post()
                            .uri(BulkOperationPaths.EXECUTE_BULK_OPERATION)
                            .scope(BulkOperationScopes.BULK_OPERATION)))
  • Added support for "singleValue" flag to the ResidentMapField and removed grid column validation if the grid has the "singleValue" attribute.

2.0.0-GA

Spring Boot Upgrade

  • As of Broadleaf Release Train 2.0.0-GA, all common libraries have been upgraded to Spring Boot 3.

  • This version includes all changes up to 1.7.16-GA

Release Notes for 1.7.16-GA

Features/Notable Changes

  • Added new Action class ConditionalAction to allow for rendering actions based on specified conditions.

    • This is currently only implemented for secondary entity actions.

Bug Fixes

  • Added missing locale definitions for correct metadata rendering

Release Notes for 1.7.15-GA

Features/Notable Changes

  • Added Message metadata classifier and class

    • Added WARNING message type

  • Added type field to ExplanatoryMessage metadata class

  • Changes to ImplicitFilter metadata:

    • Added attributes map field.

    • Added attribute and removeAttribute methods.

  • Add support to build implicit filters using metadata

    • Added targetField, operator, objectPath, and objectAttributeKey metadata attributes to ImplicitFilter

    • The values specified by these attributes will later be used to dynamically build a query string, for instance:

      • The following metadata definition of an implicit filter

    ----
    .implicitFilters(ImplicitFilter.customFilter("cq")
        .targetField("contextId")
        .operator("=out=")
        .objectPath("parent.$parent.isolatedCatalogs")
        .objectAttributeKey("id"))
    ----
  • Will result in a cq string result like the following: contextId=out=(isolatedCatalogId1,isolatedCatalogId2,isolatedCatalogId3)

  • If the system fails to build a filter string using these attributes, the implicit filter will not be added

    • Add MODAL_SIZE attribute to ModalFormAction

Bug Fixes

  • Fix price data showing incorrect currency due to missing components in PriceDataHelpers

    • Add PRICE_LIST_CURRENCY to PriceDataProps

    • Add CURRENCY to PriceListProps

Release Notes for 1.7.14

Features/Notable Changes

  • Update LookupField metadata to add catalog selector attributes

  • Improved DerivedFields:

    • Allow derived values other than strings. Use .fieldType(String). Default is DerivedField.SupportedFieldTypes.STRING.

      • Boolean, Color Picker, Date, Decimal, HTML, Integer, Long, Money, String Array, and Text Area

    • Allow specifying more transformation types for strings

      • Upper, lower, start, and pascal case and capitalize

    • Allow specifying if a derived field’s value should actually be persisted or if the derived value should merely be displayed. Use .persist(boolean). Default is true.

  • Added DerivedColumn component:

    • Takes a source and columnType similar to DerivedField

    • Can set deriveIfNull to allow deriving the value if the column’s value is null

    • Does not support transformations like DerivedField

  • Added applicationTrackable flag to Trackable

  • Added decorated flag to Field

  • Added creatable and catalogSelector flags to LookupField

Release Notes for 1.7.13

  • Notes consolidated with 1.7.14

Release Notes for 1.7.12

Bug Fixes

  • Updated validation methods to skip endpoint and orderable checks on resident grids

    • Fixes startup validation warnings that do not apply to resident grids

Release Notes for 1.7.11

Features/Notable Changes

  • Updated Option Template terminology from "generate" to "add"

  • Support only ISO 639-1 two-letter language code and ISO 3166 two-letter country code based locales for Broadleaf system compatibility when using the SelectOption for all available languages.

Bug Fixes

  • Fixed external form components to have read-only properties

Release Notes for 1.7.10

Features/Notable Changes

  • Add java documentation on how to swap the colors for the boolean Column

Release Notes for 1.7.9

Features/Notable Changes

  • Support adding templates by reference

  • Added support for none-type for derived fields

Release Notes for 1.7.8

Bug Fixes

  • Added supported validation methods and brief docs

Release Notes for 1.7.7

Features/Notable Changes

  • Added JDK 17 support

Release Notes for 1.7.6

Features/Notable Changes

  • Make individual validation errors more visible

  • Add color attribute to RowModalFormAction

  • Add filter key to param map endpoint

Bug Fixes

  • Fixed ComponentValidatorManager not reporting the actual errors by printing the actual individual error messages from the Validator

  • Fixed readonly conditionals issue

Release Notes for 1.7.5

Features/Notable Changes

  • Added quantity information to RuleBuilders

Release Notes for 1.7.4

Features/Notable Changes

  • Added RSQL rule column type

Release Notes for 1.7.3

Features/Notable Changes

  • Added SpEL rule column type

Release Notes for 1.7.2

  • Added support for arabic translations

  • Added support for view filters

Release Notes for 1.7.1

  • Add ability to show or hide a label

  • Support flag indicating a rule-builder can target a collection

  • Support toggle for integer fields where 0 means unlimited

Release Train Compatibility

Compatible with all Release Trains after 1.7 unless otherwise noted.