关闭超出交易范围的 Alfresco 政策
Turn off Alfresco policy beyond transactional scope
我想创建一项服务,通过 QName 从外部系统打开和关闭策略。首先,我想禁用阻止我的外部系统推送内容和设置 modified/created 日期的可审核策略。我知道 BehaviourFilter,但这些更改仅限于当前交易。 我更愿意在不重启系统的情况下控制策略的开启和关闭。
如何防止策略在未指定的时间内触发,超过单个事务?
很高兴您了解 BehaviourFilter,但您可能忽略了为什么不应该在一段时间内完全禁用该策略然后重新启用它的原因。如果偶然,外部系统发送了禁用策略的信号,同时用户正在使用 Alfresco 并上传,这意味着它不再被触发。
因此,您确实应该在来自外部系统的写入事务中使用 BehaviourFilter。
如何:
创建自定义 webscript 禁用 QNAME/Node 的 BehaviourFilter 并再次重新启用它。如果您查看 Alfresco 的 RecordsManagement 代码,它使用相同的原理。
Alfresco 的可审核政策经常令人恼火,所需的变通办法是不必要的时间浪费。我想讨论一个解决方案,它需要更多的工作,但可以更灵活地避免将来的麻烦,因为 Alfresco 结合了两个不应该结合的东西:
- 修改和创建日期
- 审计修改和创建日期
第一个暴露给文件协议,应该可以从客户端写入。在很多用例中我们需要设置日期(将文件从户外移动到户外,如果日期被服务器更改,本机应用程序会停止)
第二个仅供管理员和合规人员使用,应通过服务 api 和 Web UI 作为独立属性公开,而不是通过文件协议公开。
由于 Alfresco 仅在一个数据库列/一个 属性 中结合了两种用例,我们总会遇到麻烦。要么文件协议用例不起作用,要么我们不能信任审计属性。
我的建议是通过在模型中引入 2 个新属性来将其分开:
- createdDate, modifiedDate(目前只保留审核时间)
并将这些属性映射到文件协议的日期。
如果客户端未设置策略将管理这些属性的更新(文件协议除外?)
我打算将其放入社区模块/补丁中。
对此方法有任何反馈吗?也许有人赞助这个?
我想创建一项服务,通过 QName 从外部系统打开和关闭策略。首先,我想禁用阻止我的外部系统推送内容和设置 modified/created 日期的可审核策略。我知道 BehaviourFilter,但这些更改仅限于当前交易。 我更愿意在不重启系统的情况下控制策略的开启和关闭。
如何防止策略在未指定的时间内触发,超过单个事务?
很高兴您了解 BehaviourFilter,但您可能忽略了为什么不应该在一段时间内完全禁用该策略然后重新启用它的原因。如果偶然,外部系统发送了禁用策略的信号,同时用户正在使用 Alfresco 并上传,这意味着它不再被触发。
因此,您确实应该在来自外部系统的写入事务中使用 BehaviourFilter。
如何: 创建自定义 webscript 禁用 QNAME/Node 的 BehaviourFilter 并再次重新启用它。如果您查看 Alfresco 的 RecordsManagement 代码,它使用相同的原理。
Alfresco 的可审核政策经常令人恼火,所需的变通办法是不必要的时间浪费。我想讨论一个解决方案,它需要更多的工作,但可以更灵活地避免将来的麻烦,因为 Alfresco 结合了两个不应该结合的东西:
- 修改和创建日期
- 审计修改和创建日期
第一个暴露给文件协议,应该可以从客户端写入。在很多用例中我们需要设置日期(将文件从户外移动到户外,如果日期被服务器更改,本机应用程序会停止)
第二个仅供管理员和合规人员使用,应通过服务 api 和 Web UI 作为独立属性公开,而不是通过文件协议公开。
由于 Alfresco 仅在一个数据库列/一个 属性 中结合了两种用例,我们总会遇到麻烦。要么文件协议用例不起作用,要么我们不能信任审计属性。
我的建议是通过在模型中引入 2 个新属性来将其分开:
- createdDate, modifiedDate(目前只保留审核时间)
并将这些属性映射到文件协议的日期。 如果客户端未设置策略将管理这些属性的更新(文件协议除外?)
我打算将其放入社区模块/补丁中。
对此方法有任何反馈吗?也许有人赞助这个?