为之则易 不为则难

如果不能改变环境,那么就去适应环境

导航

动态修改WF流程

Posted on 2010-04-27 13:11  为之则易  阅读(338)  评论(0)    收藏  举报

 

动态添加活动
private void aaa(object sender, EventArgs e)
{
Console.WriteLine(
"Fix Activity");

WorkflowChanges changes
= new WorkflowChanges(this); //声明一个修改活动的代理对象
CodeActivity activity = new CodeActivity();
activity.ExecuteCode
+= new EventHandler(activity_ExecuteCode);
CompositeActivity subContainer
= (CompositeActivity)changes.TransientWorkflow.Activities["sequenceActivity1"]; //从代理对象中取出容器
subContainer.Activities.Add(activity);
this.ApplyWorkflowChanges(changes); //提交修改
}

 

 

 

动态添加子流程
//动态添加的
void activity_ExecuteCode(object sender, EventArgs e)
{
WorkflowChanges changes
= new WorkflowChanges(this);
SequenceActivity workflowContainer
= (SequenceActivity)changes.TransientWorkflow.GetActivityByName("sequenceActivity2");
InvokeWorkflowActivity subWorkflow
= new InvokeWorkflowActivity("subWorkflow");
subWorkflow.TargetWorkflow
= typeof(Workflow3); //子流程
workflowContainer.Activities.Add(subWorkflow);
this.ApplyWorkflowChanges(changes);
}

 

 

 

动态修改条件
WorkflowChanges wfchange = new WorkflowChanges(this);
CompositeActivity comactivity
= wfchange.TransientWorkflow;
RuleDefinitions ruleDefinitions
= (RuleDefinitions)comactivity.GetValue(RuleDefinitions.RuleDefinitionsProperty);
RuleConditionCollection conditions
= ruleDefinitions.Conditions;
RuleExpressionCondition condition1
= (RuleExpressionCondition)conditions["条件1"];
(condition1.Expression
as CodeBinaryOperatorExpression).Right = new CodePrimitiveExpression(1);
this.ApplyWorkflowChanges(wfchange);