Создание 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(string key, out TValueType value) { value = default; return true; }
}
public class TestCompositeObjectList : List, ICompositeObjectList
{
void ISerializableObject.Serialize(DataWriter dataWriter) { }
void ISerializableObject.Deserialize(DataReader dataReader) { }
}
public class test
{
public static ICompositeObjectList GnerateTestList()
{
TestCompositeObjectList list = new TestCompositeObjectList();
list.Add(new A { test = "test1" });
list.Add(new A { test = "test2" });
return list;
}
public static string PrintTest(ICompositeObjectList 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, нужно экспериментировать, а по поводу возможности существования внутри БП класса с вызовом статических методов, сомневаюсь.