

本文為英文版的機器翻譯版本，如內容有任何歧義或不一致之處，概以英文版為準。

# Amazon SWF 中的子工作流程
<a name="swf-dev-adv-child-workflows"></a>

使用子工作流程，能夠將複雜工作流程細分為較小、更好管理且能重複使用的元件。子工作流程是另一個 (父) 工作流程執行所啟動的工作流程執行。若要啟動子工作流程，父工作流程的決策者會使用 `StartChildWorkflowExecution` 決策。透過歷史記錄，子工作流程可以使用利用此決策所指定的輸入資料。

`StartChildWorkflowExecution` 決策的屬性也會指定*子政策*，也就是 Amazon SWF 應如何處理父工作流程執行在子工作流程執行之前終止的情況。有三個可能值：
+ 終止：Amazon SWF 將終止子執行。
+ REQUEST\_CANCEL：Amazon SWF 會在子工作流程執行歷史記錄中放置`WorkflowExecutionCancelRequested`事件，嘗試取消子系執行。
+ ABANDON：Amazon SWF 不會採取任何動作；子執行將繼續執行。

子工作流程執行在啟動之後，會像一般執行一樣運作。完成後，Amazon SWF 會在父工作流程執行的工作流程歷史記錄中記錄完成及其結果。子工作流程範例如下：
+ 不同網站中工作流程所使用的信用卡處理子工作流程
+ 驗證客戶電子郵件地址、檢查選擇退出清單、傳送電子郵件以及驗證其未遭退信或失敗的電子郵件子工作流程。
+ 可結合連線、設定、交易和驗證的資料庫儲存與擷取子工作流程。
+ 可結合建置、封裝和驗證的來源碼編譯子工作流程。

在電子商務範例中，您可能想要將「使用信用卡付費」活動設為子工作流程。若要執行此作業，您可以註冊新的「驗證客戶」工作流程、註冊「驗證客戶地址」和「檢查詐欺資料庫」活動，以及定義任務的協調性邏輯。然後，「客戶訂單」工作流程中的決策者排定可指定此工作流程類型的 `StartChildWorkflowExecution` 決策，藉以啟動「驗證客戶」子工作流程。

下圖顯示包含新「驗證客戶」子工作流程的客戶訂單工作流程，包含檢查客戶地址、檢查詐欺資料庫，以及使用信用卡付費。

![子工作流程圖表](http://docs.aws.amazon.com/zh_tw/amazonswf/latest/developerguide/images/child-workflow.png)


多個工作流程可以使用相同的工作流程類型來建立子工作流程執行。例如，「驗證客戶」子工作流程也可以用於組織的其他部分。子工作流程的事件是包含在自己的工作流程歷史記錄中，而不是包含在父工作流程歷史記錄中。

因為子工作流程只是決策者啟動的工作流程執行，所以啟動方式也如同一般獨立工作流程執行。