2016-03-07 49 views
2

我想創建一個服務,以通過QName從外部系統打開和關閉策略。主要是,我想禁用可審計的政策,阻止我的外部系統推送內容並設置修改/創建的日期。我知道BehaviourFilter,但這些更改僅限於當前的交易。 我寧願在不重新啓動系統的情況下打開和關閉策略。關閉交易範圍之外的Alfresco策略

如何防止政策在未指定的時間內觸發,超出單個交易?

回答

3

Alfresco的可審計政策往往容易受到刺激,所需的解決方法是不必要的浪費時間。我想討論一個解決方案,它是更多的工作,但可能在將來避免麻煩更大的靈活性,因爲露天結合兩件事情不應該被合併:

  • 修改和創建日期
  • 審覈修改並創建日期

第一個接觸到文件協議,應該可以從客戶端寫入。有很多用例需要設置日期(將文件移動到露天,本地應用程序會在服務器更改日期時發生制動)

第二個是僅適用於管理員和合規性人員,應該是作爲獨立的屬性通過服務api和Web UI公開 - 而不是通過文件協議。

由於Alfresco將兩個用例僅組合在一個數據庫列/一個屬性中,所以我們總會遇到麻煩。文件協議用例不起作用,或者我們不能相信審計屬性。

我的建議是通過在模型中引入兩個新的屬性分離這樣的:

  • createdDate,modifiedDate(只有堅持此刻的審覈時間)

和映射這些屬性到文件協議的日期。 如果客戶端沒有設置策略(除文件協議之外,所有策略都會管理這些屬性的更新)

我的意圖是將它放在社區模塊/補丁中。

對此方法的任何反饋?也許有人贊助這個?

+0

這在過去一直是我的做法。捕獲自定義模型中的可審計字段,並通過禁用必要策略通過政策/行動在戶外一側應用它們。將數十萬個文檔移入Alfresco並不理想。 – DocWatson

2

這很好,你意識到BehaviourFilter,但你可能錯過了爲什麼你不應該完全禁用一段時間的政策,然後重新啓用它。如果偶然的外部系統發送一個信號來禁用策略,並行用戶使用Alfresco並上傳,這意味着它不會再被觸發。

因此,您真的應該在外部系統的寫入交易中使用BehaviourFilter

如何: 創建自定義web腳本,禁用QNAME /節點的BehaviourFilter並重新啓用它。如果您查看Alfresco的RecordsManagement代碼,它使用相同的原則。

+0

我不是在選擇關閉策略時不謹慎。我明白有風險。 '如何'含糊不清,並沒有真正回答我最初的問題。 – DocWatson