从Oracle APEX调用EBS Web服务时如何传递EBS用户ID

时间:2019-05-22 09:44:47

标签: oracle-apex oracle-ebs

我正在从Oracle APEX调用EBS Web服务“分配角色”。它被成功调用并将角色辅助到所需的用户。但是,如果我去检查“ wf_user_role_assignments”表,则created_by字段具有顶点用户的用户ID,而不是EBS用户。我该怎么办?

我在从APEX调用Web服务时传递了EBS_ user_id。 我调试了从Web服务调用的代码。

它调用“ UMX_REGISTRATION_PVT”包,该包依次调用“ wf_local_synch.propagateUserRole”。但是,要传递的参数不包含“ created_by”字段。

 wf_local_synch.propagateUserRole (
    p_user_name        => l_requested_for_user_name,
    p_role_name        => l_wf_role_name,
    p_start_date       => l_requested_start_date,
    p_expiration_date  => l_requested_end_date,
    p_raiseErrors      => true,
    p_assignmentReason => l_justification);

因此,当实际调用此proc时,它将NULL值作为“ created_by”参数。

此后,当此proc调用WF_Directory.CreateUserRole时,它将分配

l_creatby := nvl(CreateUserRole.created_by,WFA_SEC.USER_ID);

获取APEX用户的值。

我要在“ wf_user_role_assignments”表的“创建者”字段中填充EBS用户ID吗?我该怎么做,因为“ wf_local_synch.propagateUserRole”在调用时不包含该参数,因此我无法传递正确的值。而且,由于这是一个标准的oracle软件包,因此不建议对其进行修改。

1 个答案:

答案 0 :(得分:0)

created_by字段是EBS中的标准审核字段(称为who列)-它是FND_USER的外键,并且必须与EBS用户相对应。该Web服务以具有附加特权的EBS中央用户身份运行,并且系统将为代码运行的用户(而不是代码运行的用户)设置此列的值。

不建议这样做,因为您将绕过审计列的意图。因此,更好的问题是,为什么要这样做?而且您可以从其他地方获取信息吗?