Создание ICompositeObjcetList в UserTask и передача данного параметра между элементами процесса
Здравствуйте
Задача:
Необходимо создать User Task, в которой создать объект ICompositeObjectList и для последующей передачи значения в другую User Task.
Данный пример не работает:
1 SoureCode:
namespace JustTestCompositeObject { using System; using System.Collections.Generic; using Terrasoft.Common; public class A : ICompositeObject { internal string test; public bool TryGetValue(string key, Type valuetype, out object value) { value = default; return true; } public bool TryGetValue<TValueType>(string key, out TValueType value) { value = default; return true; } } public class TestCompositeObjectList : List<A>, ICompositeObjectList<A> { void ISerializableObject.Serialize(DataWriter dataWriter) { } void ISerializableObject.Deserialize(DataReader dataReader) { } } public class test { public static ICompositeObjectList<ICompositeObject> GnerateTestList() { TestCompositeObjectList list = new TestCompositeObjectList(); list.Add(new A { test = "test1" }); list.Add(new A { test = "test2" }); return list; } public static string PrintTest(ICompositeObjectList<ICompositeObject> list) { string output = ""; if (list == null) { output = "this collection is null"; } foreach (A v in list) { output += v.test + " "; } return output; } } }
UserTask1:
list = test.GnerateTestList(); return true;
, где list задан как тип: Serializable list of composite values
UserTask2:
output=test.PrintTest(list); return true;
, где list имеет тип: Serializable list of composite values; output имеет тип: string
Процесс выглядит вот так:
На Auto-generated page выводится output из UserTask2
Конфигурация успешно компилируется.
Пробовал прописывать Usings на необходимый namespace в свойствах процесса, не работает...
Вещи типа:
не работают и не возвращаются значение
В Visual Studio все ок работает в конфигурации при передачи значений через процесс - нет.
Да, конечно, можно делать SerializeObject и просто передавать строки, но не хочется тратить ресурсы на лишнюю серилизацию, если можно сделать и без нее...
Пожалуйста подскажите как можно решить подобную задачу.
Нравится
Скорее всего, дело в том, что в новых версиях (7.12.3 и выше) процессы интерпретируемые. В старых версиях параметры, скрипты и другие элементы процесса представляли собой свойства и методы класса и такое, как Вы хотите, могло быть возможно.
А сейчас скрипты работают автономно и обмениваются значениями с параметрами через Get и Set.
Get<T>(string path) Set(string path, T value)
Получится ли таким образом передать объект ICompositeObjectList, нужно экспериментировать, а по поводу возможности существования внутри БП класса с вызовом статических методов, сомневаюсь.