2011-06-27 26 views
1

在我的領域,我有2個約束是有關這個問題的背景:從訂單中刪除訂單項時,是否可以在有界的上下文中進行交易?

  1. 採購 - 當客戶訂單服務
  2. 專遞 - 在服務分配給供應商完成

在訂單的整個生命週期中,客戶在任何給定時間都可以編輯訂單。

如果客戶從訂單中刪除服務(即在採購環境中),如果該服務已被分配給要執行的供應商(但尚未執行),那麼該服務也必須在履行上下文。

有幾個選項在這裏,我想社會各界的意見:

  1. 我有我的背景下錯了,因爲這將創建一個跨情境的交易。
  2. 這裏我可能不需要事務一致性。當然,這是商業利益相關者的決定,這引出兩個問題:什麼是實施選項?我如何向商業利益相關者提出這個問題?
  3. 這是對「無交叉上下文事務」規則的可接受違反。

編輯

這是一個進程內的所有發生的事情,所以中期交易失敗的可能性非常低。

+0

爲什麼投票表決? – Berryl

回答

2

下面是詢問您的利益相關者的問題:re:訂單隨時都可編輯 - 訂單在完成後編輯意味着什麼?

+0

我沒有說清楚。該服務尚未實現。它只是與供應商一起計劃的,供應商需要更新(即發佈新的工作聲明),以反映已刪除的服務。 –

+0

我更新了問題的文字以反映我上面的評論。謝謝,Udi! –

0

爲什麼編輯訂單時有必要影響履行服務?

在我看來,這是跨越了有界的環境。訂單在編輯時不應離開其域名,除非有充分的理由。爲什麼訂單信息在完成之前會傳播到履行服務?

基於我對你的域名的理解非常有限,我認爲你會先完成訂單,然後發送一個創建事件到服務總線,由實現服務接收。因此,不會發生跨越上下文的交易。

+0

訂單是可編輯的,直到服務實際執行完畢。我知道這很奇怪,但這是域名的要求。這些訂單很複雜,而且正在增加(可能會被刪除,這是我主要關心的問題,因爲執行客戶想要取消的服務會讓利益相關者花錢)。 –

+0

我認爲在你的場景中,事務在事務內部運行是不可能的,因爲在一段時間內發生了操作,包括取消操作(添加訂單行,再次刪除)。我認爲正確實現這一點的唯一方法是通過每個操作的事件(OrderLineAdded,OrderLineRemoved)和相應的事件處理程序。這恐怕意味着補償而不是交易。只是我2美分。 –

相關問題