Structure Management ─ Deployment and Administration
Applying custom BOMLine SOAs to the elements on Active Workspace
Active Workspace provides several business objects to represent the structure occurrences. In Active Workspace, Awb0Element is the root type. Each Awb0Element has a backing BOMLine. However, the BOMLine object is not directly accessible to the customizers of Active Workspace. Therefore, custom SOAs that are authored for BOMLines may not be directly reused in Active Workspace.
Customizers can use the getBackingObjects helper JavaScript API to access the backing BOMLine object for BVR structures. Once the backing BOMLine object is accessed, customizers can invoke any existing custom SOAs to make updates to the BOMLines.
The getBackingObjects helper JavaScript API accepts an array of Awb0Elements as input and returns BOMLines in the same order. This API works for non-indexed BVR structures only; for any other inputs, the output is null.
The getBackingObjects API is an asynchronous API and is used in the batch action declarative style. Batch actions can be configured to pass data from one action to another, executed in the exact sequence defined in the configuration.
Note: When a custom SOA is executed, only update and delete actions are reflected immediately in the Active Content view — visible if the corresponding Awb0Elements are visible in the currently loaded structure.
Batch action syntax
"BatchActionName": {
"actionType": "batchJob",
"steps":[
{
"action":"NameOfAction1",
"outputArg":["Array of String"]
},
{
"action":"NameOfAction1",
"inputArg":{ "parameterName": "{{actionData.OutPutArgName}}" },
"condition":"conditions.nameOfCondition"
}
]
}
action(Required): Name of the action from viewModel.json.outputArg(Optional): Array of strings mapped to the outputData of an action in sequence, forwarded to the next action.inputArg(Optional): Pair value evaluated to parameters of action properties.condition(Optional): The action executes based on the condition.
Example: using the getBackingObjects helper JavaScript API
To update Awb0Elements, use the getBackingObjects API to run existing custom SOAs authored to work on BOMLines. For example, a customizer authors a custom SOA called customSOA() to update or customize BOMLines, taking BOMLines as input. This SOA can be reused in Active Workspace after the helper API getBackingObjects returns the BOMLines corresponding to the Awb0Elements. Any updates to the BOMLine using customSOA() are reflected in the corresponding Awb0Element in Active Workspace.
Prerequisites:
- The customizer has a custom client module for client development.
- The customizer has a declarative custom command in Active Content view.
On executing the batch action below, two actions trigger sequentially: the asynchronous getBackingObjects() gets BOMLines corresponding to the Awb0Element, then customSOA is called with the BOMLines received from the previous action.
"customBatchAction": {
"actionType": "batchJob",
"steps": [
{ "action": "getBackingObjects" },
{ "action": "customSOA" }
]
},
"getBackingObjects": {
"actionType": "JSFunctionAsync",
"method": "getBackingObjects",
"deps": "js/aceBackingObjectProviderService",
"inputData": {
"viewModelObjects": "{{ctx.mselected}}"
},
"outputData": {
"bomLines": ""
}
},
"customSOA": {
"actionType": "TcSoaService",
"serviceName": "ServiceNamne",
"method": "customMethos",
"inputData": {
"elements": "{{data.bomLines}}"
},
"outputData": {
"customSOAResponse": ""
},
"deps": "js/customService.js"
}
Source: https://docs.sw.siemens.com/documentation/external/PL20251212545240207/en-US/tc_help/administering_product_structures/jcl1737238818702/xid1859803.html · retrieved 2026-07-11