
For parameters in processes, you can easily set and get values in code ScriptTasks for simple parameter types. However, it might not be as obvious how to work with a collection parameter. For simple parameter types, such as text, you can get and set values using the following:
// get text parameter value var val = Get<string>("MyParam"); // set text parameter value Set("MyParam", "Some new value");
This article will outline how to get and set a collection parameter. This is often useful to do things such as populate a collection that you’ll send to a sub-process or Web Service, or to just keep track of a list of items to reuse later in the process.
For this article, we will create a collection parameter (type: Collection of Records) that will look like the following:
I’ve added two parameters, or properties, to the collection: “Name” (text), and “SomeDate” (a datetime). Now, in a script task, we’ll populate this parameter with a new collection and add two items to it. The code will look like this:
// create new collection var list = new CompositeObjectList<CompositeObject>(); // create item and add to collection/list var item1 = new CompositeObject(); item1["Name"] = "Some value 1"; item1["SomeDate"] = DateTime.Now; list.Add(item1); // create another item and add to collection/list var item2 = new CompositeObject(); item2["Name"] = "Other value 2"; item2["SomeDate"] = DateTime.Now; list.Add(item2); // now set list in param Set<CompositeObjectList<CompositeObject>>("CollectionParam", list);
In the code above, we are creating a new collection, a CompositeObjectList that will store CompositeObjects. Note, on the first line, we’re just creating a new collection to populate, however, we could have also just retrieved the empty collection from the parameter as well, like this:
// get the collection parameter value var list = Get<CompositeObjectList<CompositeObject>>("CollectionParam"); // now add items to it as we did before
Later if we want to read that collection and iterate through the objects we added to it, we could do the following (in this sample, we’re looping through the objects in the collection and just building a long string of the results):
// get collection from param var list = Get<CompositeObjectList<CompositeObject>>("CollectionParam"); var text = ""; // now loop through the objects foreach (ICompositeObject item in list) { // "Name" is a property in my collection param if (item.TryGetValue<string>("Name", out string value)) { text += value; } // "SomeDate" is a property in my collection param if (item.TryGetValue<DateTime>("SomeDate", out DateTime dateValue)) { text += " - " + dateValue.ToString(); } text += ", "; } Set("TextVal", text);
Subscribe To Our Newsletter
Join our mailing list to receive the latest Infor CRM (Saleslogix) and Creatio (bpm'online) news and product updates!
You have Successfully Subscribed!