One of the action you can add to ResultMatrix is a button which will navigate users to another page to perform an action with the list of items selected from the matrix.
To perform the action, there has to be a definition of the action – it is either a deep link or a context link. The BackEndAction logic is called to retrieve the definition.
Logic API
Logic Nature: generic (null)
Logic Type: Calculation/Pricing
Execution Types
Standard – Logic is only executed via normal execution.
Information provided to the logic
Inputs:
InputMatrix input with a list of items selected in the ResultMatrix. The name of this input is set when calling the rowSelectionBackEndAction() method.
Expected logic execution outcome
The first visible element (with Display Mode = Everywhere) is expected to return a Map with definition of the action link. It can be either deep link or context link. See the code sample below.
If the logic fails with an exception:
Redirection to another page will not happen.
The frontend can display an error which was set via withFailureMessage().
Code Samples
Example of BackEndAction logic:
def products = api.inputMatrix('productsDataSet', 'sku') return [ targetPage : AppPages.QC_NEW_QUOTE, targetPageState: [ targetPageItems: products.collect { it -> return it.sku }, targetPageTab: 'items' ]
Example of a logic to build the Result Matrix which creates the action button calling the BackEndAction logic:
def products= api.find("P", 0, 10, null, ["sku", "label", "currency"]) def resultMatrix = api.newMatrix().withColumnFormats([ "sku" : FieldFormatType.TEXT, "label":FieldFormatType.TEXT, "currency": FieldFormatType.TEXT ]).withRows(products); resultMatrix.rowSelectionBackEndAction("productsDataSet") .withLogicName("BackEndActionLogic") .withColumns("sku") .withButtonLabel("New Quote") return resultMatrix