亮剑中例子扩展了一下,在ReplicatorActivity的方法中报错
根据亮剑中的《7.4.12循环审批的实现》,我把其中的taskActivity套在了一个ReplicatorActivity中,也就是我把第一步审批改成了会签审批,代码还和会签审批里面的相同。
报错的方法是:
private void replicatorActivity1_Initialized(object sender, EventArgs e)
{
foreach (Person person in this.GetConfigurationData().ApprovalUser)
{
this.replicatorActivity1.CurrentChildData.Add(person.AccountId);
}
}
在运行到this.replicatorActivity1.CurrentChildData.Add()方法时,报错:This operation is supported only when the ReplicatorActivity is 'Executing'.。
请各位高手解答,谢谢。
[解决办法]
This operation is supported only when the ReplicatorActivity is 'Executing'.
错误信息说得很明显了啊 该操作只在执行会签活动的时候支持,你写在初始化事件里了
[解决办法]
问题应该是这样的:
1)亮剑中既然代码那样写,说明在书中的场景下,测试一定通过的。
2)你的场景跟亮剑的区别就是:你把ReplicatorActivity放在While活动中了(书中应该是放在Sequence中的),而While活动执行时会动态创建立内部的活动
3)你可以这样改试试:
a: 不要直接用ReplicatorActivity,而是仿照亮剑中,先用ReplicatorActivity+Task包装成一个会签活动,然后把这个会签活动整体的拖到工作流中
b:或者改代码如下
private void replicatorActivity1_Initialized(object sender, EventArgs e)
{
var realAct = (ReplicatorActivity)sender; //注意这行代码,sender是由replicatorActivity1动态创建的,!=replicatorActivity1
foreach (Person person in this.GetConfigurationData().ApprovalUser)
{
realAct.CurrentChildData.Add(person.AccountId);
}
}