首先,如果我的英语有时不合适,我会道歉,而不是我的第一语言。
我正在为一个项目工作,该项目用于其工作流程Windows工作流基础4和用于UI的asp MVC,大多数工作流程已经完成,当我到达那里并且我没有很多经验。 ..现在,当我们有一个调用另一个工作流的工作流时,我们遇到了一个问题,如下所示:
process1.xaml 接收请求--->为每个实体获取实体 - > ---- //调用process2.xaml // - >发送响应
process2.xaml 收到请求--->计算工资--->发送回复
这一切都工作得很好但是最近当process2.xaml需要超过30秒时,工作流程才会中止,我们收到此消息:
**处理当前工作项的错误导致工作流程中止。有关详细信息,请参阅内部异常InnerException消息:事务已中止。**
超时设置为默认的1分钟,我不确定我必须更改哪些其他值才能继续运行。使用测试数据一切正常,因为没有大量数据,所以过程快速结束,但随着数据的增加,错误开始发生。
有什么想法吗?
另外,有没有办法让我说“process1.xaml”重试调用“process2.xaml”让我们说3次?如果失败则发送错误消息?
坦克提前为你服务。
SVP
答案 0 :(得分:0)
另外,有没有办法让我说“process1.xaml”来重试呼叫 “process2.xaml”让我们说3次?如果失败则发送错误消息?
解决方案(顺序控制流方式)是将进程2的调用放入TryCatch活动以捕获异常,并将While活动用于重复执行。然后,维护一个控制While的Exception计数器,并在每次发生Exception时递增。如果金额超过给定阈值,您可以发送用户消息并中止。这是XAML中的一个结局:
<While>
<While.Variables>
<Variable TypeArguments="Int32" Default="0" Name="exceptionCounter" />
</While.Variables>
<While.Condition>[exceptionCounter < 3]</While.Condition>
<TryCatch>
<TryCatch.Try>
<Sequence>
<!--Call Process 2-->
<Assign>
<!--Everything worked fine. Set exceptionCounter to 3 to abort the While-->
</Assign>
</Sequence>
</TryCatch.Try>
<TryCatch.Catches>
<Catch TypeArguments="InnerException">
<If Condition="[exceptionCounter < 3]">
<If.Then>
<Assign>
<!--Increment Counter-->
</Assign>
</If.Then>
<If.Else>
<Sequence>
<!--Send Error Message-->
<TerminateWorkflow/>
</Sequence>
</If.Else>
</If>
</Catch>
</TryCatch.Catches>
</TryCatch>
</While>