更改控制和文档锁定
您可以使用文档锁定实现文档级更改控制。此控制仅限于由文档锁定控制的区域,例如文档的结构和特定字段。以下是说明如何使用文档锁定实施更改控制的示例。
在本例中,假定此实施的情况如下:
• 文档工作流包括“受限”状态。
• 该文档项具有一个始终不可编辑的“已分配用户”字段。
• 存在名为“更改单”的项类型,用于请求和授权对文档的更改。
• 更改单工作流包括名为“提交”、“开发中”和“完成”的状态。
• 更改单项具有可编辑的“已分配用户”字段。当文档处于“开发中”状态时,此字段必须具有一个值。
• 类型为“更改单”的项可以与文档关联。
• 已配置文档锁定的以下方面:
◦ 当状态为“受限”时,需要锁定才能编辑此类型的文档。
◦ 只有“已分配用户”字段中的用户才能锁定文档。
• 有两个基于规则的事件前触发器:
◦ 只有当更改单进入“开发中”状态且更改单与文档关联时,第一个触发器才会运行。
◦ 第二个触发器仅在更改单进入“已完成”状态且该更改单与文档关联时才运行。
以下是当用户 Dale 要对更改控制下的文档进行更改时所出现的情况:
1. 文档当前处于“受限”状态。这意味着必须先将其锁定,用户才能通过锁定对文档结构或任何字段进行更改。
2. Dale 希望进行更改,这需要锁定文档。因此,Dale 创建更改单并将其与文档相关联。
3. 在更改单被批准后,会通过设置更改单上的“已分配用户”字段,将更改单分配给 Dale 进行实施。
4. Dale 检查更改单并将其状态更改为“开发中”。
5. 第一个事件触发器运行并执行以下操作:
a. 确认文档没有锁定,并且文档的“已分配用户”字段未填写。如果其中任一项不是 true,则触发器将中止,并且不允许此时将更改单状态更改为“开发中”。另一个用户当前正在处理该文档。
b. 如果文档未锁定,并且其“已分配用户”字段为空,则触发器将执行两个操作:
▪ 将更改单的“已分配用户”字段 (Dale) 的值复制到文档的“已分配用户”字段中。
▪ 自动为已分配用户 (Dale) 锁定文档。
6. 文档现已锁定,Dale 可以对文档进行必要的更改以履行更改单。
7. 进行所有更改后,Dale 会将更改单改为“已完成”状态。
8. 第二个事件触发器运行。它会解锁文档并清除文档的“已分配用户”字段。
Dale 的更改已完成。Dale 或其他用户对同一文档的后续修改需要再次创建更改单。