2011-12-15 77 views
0

首先,我很抱歉,如果我的英文有時關閉,而不是我的第一個語言。工作流基金會4時間問題

我正在爲其用於UI的窗口工作流程基礎4和asp MVC使用的項目工作,大多數工作流程在我到達時已經完成並且我沒有太多的經驗......現在我們已經遇到了一個問題,當我們有一個調用另一個工作流的工作流,是這樣的:

process1.xaml 接收請求--->獲得實體 - >爲每個實體---- //呼叫process2.xaml // - >發送響應

process2.xaml 接收請求--->計算值薪水--->發送響應

這一切都用來工作正常,但最近當process2.xaml時間超過30秒,工作流程只是中止時間更長,我們得到這個消息:

**錯誤處理當前工作項目已經引起了工作流程中止。詳情請參閱內部例外。 InnerException消息:事務已中止**

超時設置爲默認的1分鐘,我不確定還有哪些其他值需要更改才能繼續運行。隨着測試數據的一切工作正常,因爲沒有太多的數據,所以過程結束快,但隨着數據增加錯誤開始發生。

任何想法?

另外,有沒有辦法讓我說「process1.xaml」重試調用「process2.xaml」讓我們說3次?那麼發送錯誤消息如果失敗了?

Thanx提前爲您的時間與此。

SVP

+0

聽起來像`calc salary`花費的時間太長了。您需要確定存在哪些依賴項 - Web服務,ado.net等。您將在那裏找到您的原因。 – SliverNinja 2011-12-15 22:05:43

回答

0

此外,有沒有辦法,我說「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>