귀하의 모든 변수와 활동을 디자인 타임에 이미 작성 워크 플로우를 원하는 경우
,
IActivityTemplateFactory와 아마 당신이 할 수있는 운동 뭔가. 한마디로
public class TwoActivitiesBundle : IActivityTemplateFactory
{
public Activity Create(DependencyObject target)
{
return new Sequence
{
Variables =
{
new Variable<int>("addResult"),
},
Activities =
{
new Add<int, int, int>
{
Left = 10,
Right = 10,
Result = new VisualBasicReference<int>("addResult")
},
new WriteLine { Text = "Now I'll use 'addResult', as a value on the next activity" },
new Subtract<int, int, int>
{
Left = new VisualBasicValue<int>("addResult"),
Right = 10,
},
new WriteLine { Text = new VisualBasicValue<string>("\"Print addResultValue: \" & addResult")}
}
};
}
}
,
IActivityTemplateFactory 이미 드롭 디자이너로 활동을 구축하고 충전 할 수 있습니다.
new ToolboxItemWrapper(typeof(TwoActivitiesBundle), null, "My Bundle");
추가 : 다음 당신은 다른 활동으로, 디자이너의 도구 상자에,이 경우, TwoActivitiesBundle 당신의 공장을 추가 당신이 정말로 부모에 변수를 추가하려면
컨테이너 Create()
메서드에서받은 target
매개 변수를 사용하여 워크 플로를 탐색하고 해당 컨테이너를 찾을 수 있습니다. 당신이 here을 볼 수 있습니다처럼
public class TwoActivitiesBundle : IActivityTemplateFactory
{
public Activity Create(DependencyObject target)
{
var sequenceModelItem = (target as WorkflowViewElement).ModelItem;
sequenceModelItem
.Properties["Variables"]
.Collection
.Add(new Variable<string>("myFirstDesignTimeVariable", "var text here"));
// This activity writes "I've just created a new variable: var text here" to the console
return new WriteLine
{
Text = new VisualBasicValue<string>("\"I've just created a new variable: \" & myFirstDesignTimeVariable");
}
}
}
는, ModelItem 는 편집 모델에서 단일 항목을 나타냅니다
이
당신이 순서 안에
TwoActivitiesBundle
을 삭제한다고 가정 후자에 변수를 추가하는 예입니다. 따라서
Root,
Parent 및
Parents 속성을 사용하여 모든 워크 플로를 탐색 할 수 있습니다. 위 예제에서 보여 드린 것처럼 각 ModelItem 속성을 편집 할 수 있습니다. 이 작업은 상당히 힘들며 그 과정에서 여러 가지 가정을해야 할 수도 있습니다.
한 활동의 변수를 바로 다음에 전달하려는 경우 두 활동을 하나의 단일 활동으로 결합하는 것을 고려해야합니다. 어쨌든, 내 대답을 확인하십시오. – Joao