簡體   English   中英

聯系人和公司系統上的四眼原則實施

[英]4-eyes-principal implementation on a contact & company system

需求

我們正在構建一個相當復雜的系統,我們需要在其中管理聯系人和公司(實體)。 實體由業務用戶管理。 他們有多個關聯。 例如:

聯系

  • ID = 42 ,名字=約翰,名字=母鹿

公司

  • ID = 111 ,名稱=公司1
  • ID = 222 ,名稱=公司2
  • ID = 333 ,名稱=公司3

地址

  • ID = 456,城市=紐約,街道=百老匯,類型=郵政
  • ID = 789,城市=柏林,街道= Meier Strasse,類型=住宅

聯絡公司協會

  • 聯系人ID = 42 ,公司ID = 111
  • 聯系人ID = 42 ,公司ID = 222

聯系人地址關聯

  • 聯系人ID = 42 ,地址ID = 789
  • 聯系人ID = 42 ,地址ID = 456

因此,ID = 42的聯系人與2個公司相關聯。 還有更多的關聯:因此,聯系人可以具有多個電話號碼,郵政地址等等。

實體有3個州:

1. InCreation創建實體,仍然缺少一些必填字段; 不准備使用。

2.待定實體已完全創建,所有必填字段均已填寫; 不准備使用

3.驗證實體已驗證(由用戶!=創建者驗證)並且可以使用

一旦實體已達到驗證狀態,並且想要修改這樣的驗證實體,則必須將修改單獨存儲,並且不允許修改修改后的實體。 因此,曾經驗證過的實體仍然是系統其余部分使用的實體。 然后,業務用戶!=修飾符便可以驗證這些更改:通過比較所有已更改的內容。 如果他接受這些更改,則需要將更改應用於原始經過驗證的實體。 Apply表示需要將值復制到原始數據庫記錄,因為不允許更改ID(它們指向其他實體系統)

如何存儲這些修改?

想法1

修改只是具有新狀態= InModification的另一條記錄。 但是然后我還需要將所有關聯加倍,並需要存儲原始實體和關聯之間的關系,因為我以后需要知道發生了什么變化(例如,紐約的郵政地址現在在第5街,而現在在百老匯則更長)創建很多可能不需要的記錄,因為實體關聯樹可能很大,並且必須創建許多記錄以修復名稱中的拼寫錯誤

想法2

將修改存儲為XML Blob(我們使用WCF將實體從服務器傳輸到客戶端,因此默認情況下這些實體是可序列化的)。 這與ID無關,以后還要應用更改(刪除和添加的關聯必須格外小心)。 我在這里看到的問題是軟件更新。 一旦我們在以后的更新中更改了實體結構,便存在以下危險:保存在betweeb 2版本之間的舊實體修改不再可讀

想法2更好。 除了需要對未完成的更改進行一些驗證之外,因此無論在何處修改實體,都需要先進行驗證。如果該實體存在一些未完成的更改,則它將最終取決於最終用戶來解決沖突,他可能會選擇覆蓋舊的未完成的更改。最后,它將只是覆蓋未完成的更改,這些以XML的形式存儲。 或者您可能不會覆蓋舊的更改,可以有兩個版本的待處理更改,然后將取決於業務用戶來確定哪個版本更好,因此在這種情況下,您可以使用XML形式的待處理更改:

 <pendingChanges entityID="12333">
     <propertyName1>
      <version1 value="val1"/>
      <version2 value="val2"/>
    </propertyName1>
    <propertyName2>
     <version1 value="val1"/>
     <version2 value="val2"/>
     <version2 value="val3"/>
    </propertyName2>
  </pendingChanges>

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM