UI5/OData:根据活动用户提供功能和数据?

UI5/OData:根据活动用户提供功能和数据?,odata,sapui5,Odata,Sapui5,我对UI5框架比较陌生,我的公司有一个新的用例,我想用UI5和OData服务实现它 基本上,应用程序有两个功能,分别针对不同的利益相关者: 角色A能够创建新的需求 角色B能够检查需求并使用新的 信息 我如何以最佳方式实现这一点?我以前的想法是: 可能性1: 我在后端有OData服务,由两个独立的应用程序根据角色使用。通过PCFG对象上的启动板控制访问。因此,特定用户只能使用他实际需要的应用程序。我相信这符合Fiori应用程序的基本粒度。另一方面,它使DRY原则无效,因为我会像大多数视图一样拥

我对UI5框架比较陌生,我的公司有一个新的用例,我想用UI5和OData服务实现它

基本上,应用程序有两个功能,分别针对不同的利益相关者:

  • 角色A能够创建新的需求
  • 角色B能够检查需求并使用新的 信息
我如何以最佳方式实现这一点?我以前的想法是:

可能性1:

我在后端有OData服务,由两个独立的应用程序根据角色使用。通过PCFG对象上的启动板控制访问。因此,特定用户只能使用他实际需要的应用程序。我相信这符合Fiori应用程序的基本粒度。另一方面,它使DRY原则无效,因为我会像大多数视图一样拥有冗余代码

可能性2:

我在UI5框架或OData服务中检查哪个用户当前正在使用该应用程序,并在控制器类中启用/禁用所需的控件。我还不知道该怎么做。有没有办法检查哪个用户已登录?或者,我如何在OData服务中实现只向客户机交付特定信息

实现这种用例的正确方法是什么?有没有我不知道的更好的选择?如果您对此事有任何想法,我将不胜感激,谢谢:)


致以最诚挚的问候

建议的方法 如果两个角色不共享任何公共功能,那么我会选择两个独立的UI5应用程序,以保持它们的简单性。在这种情况下,每个应用程序都有自己的OData服务。但是在后端,您总是可以为“需求”创建一个公共类,这两个类都由OData服务实现调用。(以便最大化代码重用)。因此,您的大多数业务逻辑都应该在“Requirement”类中,OData实现充当分派器

检查哪个用户已登录
这是大多数业务应用程序的一个常见需求,在网关/ABAP中也是可能的。在ABAP上下文中,始终有一个名为SY-UNAME的可用系统变量,它将为您提供当前登录的用户名。您可以进一步使用它来派生用户的角色。

我同意逻辑必须主要在后端,谢谢。使用SY-UNAME检查用户名并根据用户返回某种“角色”对象是否有意义?Fiori应用程序可以根据OData服务的返回对象显示特定字段。是的,您可以这样做。同样,由于javascript验证可以很容易地进行修补,因此需要在后端进行进一步的验证,以确保用户没有做他不应该做的事情。