从Oracle Apex调用EBS WebServices时,如何通过EBS USERID传递



我正在调用来自Oracle Apex的EBS Web服务"分配角色"。它被成功地称为所需用户的角色。但是,如果我去检查" WF_USER_ROLE_ASSIGNMENTS"表,则创建的_BY字段具有Apex用户而不是EBS用户的用户ID。我该怎么做?

我正在从Apex调用Web服务时传递EBS_ USER_ID。我调试了从Web服务中调用的代码。

它调用" UMX_REGISTRATION_PVT"软件包,该软件包又调用" WF_LOCAL_SYNCH.PROPAGATEUSERROLE"。但是正在传递的参数不包括" create_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);

so,当该proc实际上称为null值时,将其作为" create_by"参数。

之后,当此PROC调用wf_directory.createuserrole时,它分配

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

获取Apex用户的值。

我希望ebs userId在" wf_user_role_assignments"表中的字段中填充在创建中?我该怎么做,因为" wf_local_synch.propagateuserrole"不包括该参数,而我无法传达正确的值。而且由于这是标准的Oracle软件包,因此不建议对其进行修改。

create_by字段是EBS中的标准审核字段(称为WHO列( - 它是FND_USER的外键,必须与EBS用户相对应。WebService作为具有其他私有的Central EBS用户运行,并且该系统将作为代码运行的用户设置该列的值,而不是代码正在运行的用户。

这样做是不可接受的,因为您将绕过审计列的意图。因此,更好的问题是,您为什么要这样做?您可以从另一个地方获取信息吗?

最新更新