Добрый день!
TS 3.4.0.180
Пытаюсь передать параметры диаграммы подпроцесса в основной процесс. Но данные не передаются. Как решить эту проблему? Сервисы прилагаю.
Нравится
Здравствуйте, Андрей!
Необходимо в основной диаграмме настроить связь параметра диаграммы с параметром в подпроцессе:
http://i64.fastpic.ru/big/2014/0625/dd/abab82b4af16e17773f739dbf3a6d2dd.png
А затем получать значение параметра в скрипте диаграммы процесса можно, например, так:
[xml]
function Item3OnAfterComplete(SubProcessItem, ItemDataset) {
var mypr = SubProcessItem.ParentItems.ParentDiagram.Parameters.ItemsbyName('mypr').Value;
}
[/xml]
Можно ли связать параметр диаграммы и параметр подпроцесса программно, не обращаясь к дизайнеру?
Здравствуйте, Андрей.
Можно, через ParameterMap.
Пример есть в функции:
[code]
function SaveDatasetFields(DiagramItem, Prefix, Dataset) {
ClearParametersMapByLikeName(DiagramItem, Prefix);
var Records = Dataset.Attributes('Records');
for (var i = 0; i < Records.length; i++) {
var Record = Records[i];
ParameterMap = DiagramItem.ParametersMap.CreateItem();
ParameterMap.ItemParameterName = Prefix + '_' + Record.FieldName;
ParameterMap.Data = Record.FieldName;
ParameterMap.ItemType = Record.MapType;
if (Record.ParameterName) {
ParameterMap.DiagramParameterName = Record.ParameterName;
} else {
switch (Record.ParamType) {
case wptString:
case wptLookup:
case wptEnum:
ParameterMap.Value = Record.StringValue;
break;
case wptInteger:
ParameterMap.Value = Record.IntegerValue;
break;
case wptFloat:
ParameterMap.Value = Record.FloatValue;
break;
case wptBool:
ParameterMap.Value = Record.BoolValue;
break;
case wptDateTime:
ParameterMap.Value = Record.DateTimeValue;
break;
default:
ParameterMap.Value = Record.Value;
}
}
ParameterMap.IsAdditional = true;
DiagramItem.ParametersMap.AddItem(ParameterMap);
}
}
[/code]
Можно ли для связи параметров использовать эту функцию из scr_workflowutils?
[javascript]
function WFConnectParams
[/javascript]