Как я могу динамически установить значения переменных из родительской области в операции Windows Workflow Foundation в .NET 4?Динамическая настройка переменных во внешней области действия WF 4
Попытка это не удалось (падение на последовательности активности на рабочем процессе, где последовательность имеет переменную INT с именем Test):
public sealed class CodeActivity1 : NativeActivity
{
protected override void CacheMetadata(NativeActivityMetadata metadata)
{
_locationReferences =
metadata.Environment.GetLocationReferences().ToList();
base.CacheMetadata(metadata);
}
protected override void Execute(NativeActivityContext context)
{
LocationReference locationReference =
_locationReferences.Find(
x => x.Name == "Test" && x.Type == typeof (int));
if (locationReference != null)
{
Console.WriteLine(
locationReference.Name + " " + locationReference.Type);
// Blows up here.
Location location = locationReference.GetLocation(context);
location.Value = 5;
}
}
private List<LocationReference> _locationReferences;
}
Это приводит к:
System.InvalidOperationException был необработанный по коду пользователя
Message = Activity '1.2: CodeActivity1' не может получить доступ к этой переменной, так как объявлен в сфере деятельности '1.1: Последовательность'. Активность может только получить доступ к ее собственной реализации переменных.
Он находит переменную; он просто не может получить или установить свою ценность.
Имя переменной («Тест» в приведенном выше примере) не будет известно до времени выполнения.
У меня есть требование, чтобы клиенты не имеют жёстко знания рабочий процесс. Мы привыкли к BPM, где вы можете создать процесс, передав имена, пары значений, чтобы инициализировать поля, опросить запущенный процесс, чтобы получить список полей, а затем установить их и т. Д. Это более гибко, доступно для обнаружения и развязано на стоимость безопасности во время работы. Переход от BPM к WF - это переход от динамически типизированного языка к статически типизированному языку. Я думаю, у нас есть два варианта: подделать его с переменной типа Dictionary или опросить WSDL. –
TrueWill
2010-12-03 15:52:19