Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/silverlight/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Workflow foundation 4 工作流基础4时间问题_Workflow Foundation 4 - Fatal编程技术网

Workflow foundation 4 工作流基础4时间问题

Workflow foundation 4 工作流基础4时间问题,workflow-foundation-4,Workflow Foundation 4,首先,如果我的英语不是我的第一门语言,而是我的英语不好,我道歉 我正在为一个使用Windows工作流基础4和ASP MVC为UI的项目工作,当我到达那里时,大部分工作流程已经完成了,我没有太多的经验。现在,当我们有一个工作流调用另一个工作流时,我们遇到了一个问题,如下所示: process1.xaml 接收请求-->获取实体->针对每个实体--//调用process2.xaml//->发送响应 process2.xaml 接收请求-->计算工资-->发送响应 它过去工作正常,但最近当proces

首先,如果我的英语不是我的第一门语言,而是我的英语不好,我道歉

我正在为一个使用Windows工作流基础4和ASP MVC为UI的项目工作,当我到达那里时,大部分工作流程已经完成了,我没有太多的经验。现在,当我们有一个工作流调用另一个工作流时,我们遇到了一个问题,如下所示:

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

process2.xaml 接收请求-->计算工资-->发送响应

它过去工作正常,但最近当process2.xaml耗时超过30秒时,工作流就会中止,我们收到以下消息:

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

超时设置为默认的1分钟,我不确定要使进程继续运行,还需要更改哪些其他值。对于测试数据,一切正常,因为没有太多的数据,所以过程结束得很快,但随着数据的增加,错误开始发生

有什么想法吗

另外,有没有一种方法可以让我告诉process1.xaml重试调用process2.xaml,比如说3次?如果失败,则发送错误消息

Thanx提前为您的时间与此

高级副总裁

另外,是否有一种方法可以让我告诉process1.xaml重试调用 process2.xaml,比如说3次?如果失败,则发送错误消息

顺序控制流样式的解决方案是将流程2的调用放入TryCatch活动以捕获异常,并将While活动放入重复执行。然后,维护一个异常计数器,该计数器控制While,并在每次发生异常时递增。如果金额超过给定阈值,则可以发送用户消息并中止。这里有一个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>
听起来calc薪水花的时间太长了。您需要确定存在哪些依赖项—web服务、ado.net等。您将在那里找到原因。