当所有相关配置都设置为 "updatable always?" 时,为什么 ADF 业务组件实体属性会呈现为 "updatable while new"
Why would an ADF Business Components Entity Attribute render as "updatable while new" when all relevant configurations are set for "updatable always?"
背景
有问题的应用程序是使用 ADF 业务组件、JSF 2.0 和 Facelets 的 WebCenter 11g 内部开发项目,并且正在使用 JDeveloper 11g 第 2 版 11.1.2.4.0 进行开发。模型项目包含一个实体对象,其中包含许多用于审查业务项目的值。视图控制器项目包含有界任务流中的单个页面,其中包含引用这些值以创建和编辑评论的输入表单。 ADF 安全功能在整个应用程序中启用。在这些评论的上下文中,预期的功能表明一个 class 用户只能编辑某些 "S.E." 值,而其他用户可以编辑所有值并创建新评论。为促进这一点,已为评论实施实体属性级安全性。
问题
评论表单正确呈现,除了一小部分随机选择的值输入元素(40 个中的 8 个)呈现为 read-only/disabled only 在编辑现有记录时,但在创建新记录时没有问题。当使用 AppModule 测试功能进行测试时,会观察到相同的结果:相同的八个值可以由测试用户编辑 仅 用于新记录,而所有其他值对于新记录和现有记录都是可编辑的记录。
细节
这些值的视图对象和实体对象属性都配置为 Updatable 属性 设置为 Always。这些值包括前面提到的一些 "S.E." 值,但不是全部 - "S.E." 值组中也不包含所有有争议的值。测试用户被设置为应用程序的管理员,应用程序角色被授予 所有 资源权利。
失败的决议
我尝试将视图对象和实体对象属性的 Updatable 属性更改为 While New 和 Never ,然后将它们切换回 Always - 确认每次切换时都在 XML 文件中进行了更改。我已经多次检查并重新检查 ADF 安全配置,并确认每个值的安全性与相同 form/Entity 中其他值的安全性 相同问题没有发生。在部署到新启动的 Integrated WebLogic Server 之前,我已经清理了应用程序并分别重建了项目(模型和 vc);在重建和重新部署之前,我关闭并重新启动了 JDeveloper;我什至重新启动了计算机,因为有时我的企业性质会导致 JDeveloper 出现奇怪的问题,这些问题只能通过注销或重新启动整个系统来解决。我还确认问题出现在我同事的机器上。
基本规则
由于我所处环境的性质,我不能透露应用程序的明确细节,以下建议是不可接受的。
- 正在升级 JDeveloper
- 正在升级Java
- 正在升级WebLogic/WebCenter
- 升级 ADF、JSF 或任何其他库
事实证明,这个问题是由 ADF Security/JDeveloper SNAFU 引起的。有问题的实体属性在某些时候被重命名(重构),并且出于某种原因,此更改传播到所有内容......除了属性的权限配置。属性和对它们的所有其他引用都使用新名称,但它们在实体 XML 文件中的权限元素仍然使用旧名称。在直接查看 XML 之前,这并不明显,因为 ADFBC 实体的 JDeveloper UI 不反映 XML 编辑器中显示的警告状态。那么,解决方案是禁用并重新启用这些属性的属性级安全性,或者手动调整 XML.
中的权限元素参数。
背景
有问题的应用程序是使用 ADF 业务组件、JSF 2.0 和 Facelets 的 WebCenter 11g 内部开发项目,并且正在使用 JDeveloper 11g 第 2 版 11.1.2.4.0 进行开发。模型项目包含一个实体对象,其中包含许多用于审查业务项目的值。视图控制器项目包含有界任务流中的单个页面,其中包含引用这些值以创建和编辑评论的输入表单。 ADF 安全功能在整个应用程序中启用。在这些评论的上下文中,预期的功能表明一个 class 用户只能编辑某些 "S.E." 值,而其他用户可以编辑所有值并创建新评论。为促进这一点,已为评论实施实体属性级安全性。
问题
评论表单正确呈现,除了一小部分随机选择的值输入元素(40 个中的 8 个)呈现为 read-only/disabled only 在编辑现有记录时,但在创建新记录时没有问题。当使用 AppModule 测试功能进行测试时,会观察到相同的结果:相同的八个值可以由测试用户编辑 仅 用于新记录,而所有其他值对于新记录和现有记录都是可编辑的记录。
细节
这些值的视图对象和实体对象属性都配置为 Updatable 属性 设置为 Always。这些值包括前面提到的一些 "S.E." 值,但不是全部 - "S.E." 值组中也不包含所有有争议的值。测试用户被设置为应用程序的管理员,应用程序角色被授予 所有 资源权利。
失败的决议
我尝试将视图对象和实体对象属性的 Updatable 属性更改为 While New 和 Never ,然后将它们切换回 Always - 确认每次切换时都在 XML 文件中进行了更改。我已经多次检查并重新检查 ADF 安全配置,并确认每个值的安全性与相同 form/Entity 中其他值的安全性 相同问题没有发生。在部署到新启动的 Integrated WebLogic Server 之前,我已经清理了应用程序并分别重建了项目(模型和 vc);在重建和重新部署之前,我关闭并重新启动了 JDeveloper;我什至重新启动了计算机,因为有时我的企业性质会导致 JDeveloper 出现奇怪的问题,这些问题只能通过注销或重新启动整个系统来解决。我还确认问题出现在我同事的机器上。
基本规则
由于我所处环境的性质,我不能透露应用程序的明确细节,以下建议是不可接受的。
- 正在升级 JDeveloper
- 正在升级Java
- 正在升级WebLogic/WebCenter
- 升级 ADF、JSF 或任何其他库
事实证明,这个问题是由 ADF Security/JDeveloper SNAFU 引起的。有问题的实体属性在某些时候被重命名(重构),并且出于某种原因,此更改传播到所有内容......除了属性的权限配置。属性和对它们的所有其他引用都使用新名称,但它们在实体 XML 文件中的权限元素仍然使用旧名称。在直接查看 XML 之前,这并不明显,因为 ADFBC 实体的 JDeveloper UI 不反映 XML 编辑器中显示的警告状态。那么,解决方案是禁用并重新启用这些属性的属性级安全性,或者手动调整 XML.
中的权限元素参数。