Adds a new Bill-of-Materials line item to a specific installed asset instance, or updates an existing one when `assetBomId` is supplied inside `bomInfo`. 
An asset BOM entry lets a particular unit's actual composition diverge from (or extend) its model-level BOM. 
for example recording a non-standard part actually installed at a position, or a position that only exists on this asset. 
As with model BOM items, `partId` and `modelId` are mutually exclusive, so each entry represents either a part or a referenced model at that position, not both.

---
### Parameters
**bomInfo** `Dictionary`<br />
<table class='dictionaryKeyTable'>
	<tbody>
 	<tr><td> - assetBomId</td><td>Integer</td><td>Not required, pass to update</td></tr>	
 	<tr><td> - assetId</td><td>Integer</td><td></td></tr>	
 	<tr><td> - enabled</td><td>Boolean</td><td>Not required</td></tr>	
 	<tr><td> - modelId</td><td>Integer</td><td>Not required, mutually exclusive with partId</td></tr>	
 	<tr><td> - notes</td><td>String</td><td>Not required</td></tr>	
 	<tr><td> - parentBomId</td><td>Integer</td><td>Not required</td></tr>	
 	<tr><td> - partId</td><td>Integer</td><td>Not required, mutually exclusive with modelId</td></tr>	
 	<tr><td> - positionCode</td><td>String</td><td>Not required</td></tr>	
 	<tr><td> - positionName</td><td>String</td><td>Not required</td></tr>	
 	<tr><td> - quantity</td><td>Float</td><td></td></tr>	
 	<tr><td> - uomId</td><td>Integer</td><td></td></tr>	
	</tbody>
</table>

**userId** `Integer`:Id of the user executing the function<br />

---
### Returns
**assetBomId** `Integer`<br />
**message** `String` None if success<br />

---
### Example
```python
# Add a part to an asset's BOM
bomInfo = {
	            'assetId': 7734,
	            'partId': 8891,
	            'quantity': 1.0,
	            'uomId': 1,
	            'positionCode': 'P1-A',
	            'positionName': 'Drive Shaft Bearing',
	            'enabled': True,
	            'notes': 'Replaced with heavy-duty bearing during last overhaul'
            }
userId = system.kanoa.security.getIDPUserId({'userName': 'SYSTEM'})
assetBomId, message = system.kanoa.inventory.addAssetBomItem(bomInfo, userId)
print assetBomId, message
```
