Workflow Foundation 4时间问题

时间:2011-12-15 13:52:50

标签: workflow-foundation-4

首先,如果我的英语有时不合适,我会道歉,而不是我的第一语言。

我正在为一个项目工作,该项目用于其工作流程Windows工作流基础4和用于UI的asp MVC,大多数工作流程已经完成,当我到达那里并且我没有很多经验。 ..现在,当我们有一个调用另一个工作流的工作流时,我们遇到了一个问题,如下所示:

process1.xaml 接收请求--->为每个实体获取实体 - > ---- //调用process2.xaml // - >发送响应

process2.xaml 收到请求--->计算工资--->发送回复

这一切都工作得很好但是最近当process2.xaml需要超过30秒时,工作流程才会中止,我们收到此消息:

**处理当前工作项的错误导致工作流程中止。有关详细信息,请参阅内部异常InnerException消息:事务已中止。**

超时设置为默认的1分钟,我不确定我必须更改哪些其他值才能继续运行。使用测试数据一切正常,因为没有大量数据,所以过程快速结束,但随着数据的增加,错误开始发生。

有什么想法吗?

另外,有没有办法让我说“process1.xaml”重试调用“process2.xaml”让我们说3次?如果失败则发送错误消息?

坦克提前为你服务。

SVP

1 个答案:

答案 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 &lt; 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 &lt; 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>
相关问题