I have an API that returns products in JSON format like this:
{
"productCode": "1027",
"productDescription": "Bed Extension Legs x 4",
"barcode": null,
"neverDiminishing": false,
"lastCosts": 0,
"defaultPurchasePrice": 0,
"defaultSellPrice": 81,
"customerSellPrice": 0,
"averageLandPrice": 40,
"obsolete": false,
"notes": "Bed Height Adjustable Legs x 4 (Bodyline Range)",
"xeroTaxCode": "INPUT",
"xeroTaxRate": 0.1,
"taxablePurchase": true,
"taxableSales": true,
"xeroSalesTaxCode": "OUTPUT",
"xeroSalesTaxRate": 0.1,
"isComponent": true,
"isAssembledProduct": false,
"xeroSalesAccount": "41109",
"xeroCostOfGoodsAccount": "50020",
"binLocation": null,
"isSerialized": false,
"isBatchTracked": false,
"isSellable": true,
"guid": "d0de0979-9739-4e05-b6d5-1436ec58a627"
}I know how to add singular product, but how can I process a collection of thoose returned from WebService and add them to BPM?
Like
In order to process a custom response, please create a script task, call the web service from there via native c# and process the response with c# tools as well.
We have something similar to this for getting product stock and updating in bpm'online product section. We took the stock data collection recieved from webservice into a table, say a temp table, then processed the records one by one and at the end deleted the processed records. You might need to write a script to put the collection into the temp table, something like given below. Usrproductstocktemp is the temporary table used here.
var collaterals = Get<ICompositeObjectList<ICompositeObject>>("WebService1.UsrGetProductStockData_Out");
Guid obj = Guid.NewGuid();
foreach(var collateral in collaterals) {
string value = "";
var ItemMasterId = collateral.TryGetValue<string>("UsrITEMMASTERID_Out", out value) ? value : "";
if (!string.IsNullOrEmpty(ItemMasterId)) {
Set("UsrTrackId",obj);
var insert = new Insert(UserConnection)
.Into("UsrProductStockTemp")
.Set("UsrItemMasterId",Column.Parameter(collateral.TryGetValue<string>("UsrITEMMASTERID_Out", out value) ? value : ""))
.Set("UsrItemId",Column.Parameter(collateral.TryGetValue<string>("UsrITEMID_Out", out value) ? value : ""))
.Set("UsrUnitId",Column.Parameter(collateral.TryGetValue<string>("UsrUNITID_Out", out value) ? value : ""))
.Set("UsrClosingQty",Column.Parameter(collateral.TryGetValue<string>("UsrCLOSINGQTY_Out", out value) ? value : ""))
.Set("UsrLocId",Column.Parameter(collateral.TryGetValue<string>("UsrLOCID_Out", out value) ? value : ""))
.Set("UsrTrackId",Column.Parameter(obj))
.Set("UsrIsDeleted",Column.Parameter(false));
insert.Execute();
}
}
return true;