VRO: Using Attachments
Description:
This post will cover how to use Resource Elements in vRealize Orchestrator. Resource Elements are essentially attachments that VRO holds that you can read/write to for workflows. I like to write JSON objects to a text file in one workflow and then have another workflow parse the file and update it in order to have different workflows pass information to each other.
To Resolve
-
First, create a text file on your computer at
c:\scripts\
calledjson.txt
with the value{}
. Then upload this to VRO on the Resource elements tab.-
Then attach it as a variable to a workflow. I called mine
rscTasks
or something like that with a data type ofResourceElement
-
Then, bind it to a scripting element and put your code like:
1 2 3
var tasksJson = rscTask var tasksJsonText = tasksJson.getContentAsMimeAttachment() rscObject = JSON.parse(tasksJsonText.content);
-
-
Now that it is imported as a JSON object, you can do all sorts of stuff and write it back
-
See here to add a value, delete a value, test for a value, or modify a value.
-
To create a nested value do something like:
1 2 3 4 5 6 7 8 9 10 11 12 13 14
var reqNestedHash2 = { "User_Email": ["blah@domain.com"], "User_EmplID": someVar, "User_GroupsRequested": someArray, "SN_RequestNumber": strRequestNumber, "SN_Reason": strReason, "SN_SysID": sys_ID, "Software_RequestNumberArray": arrRequestIDs, "LastUpdatedDate": strDate, "LastUpdatedTime": strTime, } rscObject["REQ002"] = [reqNestedHash2]
-
-
Either way, when you are done, write it back to VRO
1 2 3
payload = JSON.stringify(rscObject); tasksJsonText.content = payload tasksJson.setContentFromMimeAttachment(tasksJsonText)
-
I usually start the second flow where it will import the resource element and then loop through each request and close the request if all items are completed:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30
var tasksJson = rscTask var tasksJsonText = tasksJson.getContentAsMimeAttachment() var rscObject = JSON.parse(tasksJsonText.content); for (var key in rscObject) { var reqKey = key var reqValue = rscObject[key] //var strValue = JSON.stringify(reqValue); System.log("Key: " + reqKey) //System.log("Value (doesnt work): " + reqValue) //System.log("Value (does work - stringified): " + strValue) // value is an array with one element for (var singleHash in reqValue) { var singleValue = reqValue[singleHash] //System.log("single value (just returns [object object] because its a hashtable): " + singleValue) // strings var strSNRequestNumber = singleValue["SN_RequestNumber"] .... // if request_number.item == completed { // do nothing } else { // do something } } // End loop for each request value in resource file // If all items in request_number are completed, delete the Request from the resource element so that it will not run on next run } // End loop for each request key in resource file
Comments