我正在从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软件包,因此不建议对其进行修改。
答案 0 :(得分:0)
created_by字段是EBS中的标准审核字段(称为who列)-它是FND_USER的外键,并且必须与EBS用户相对应。该Web服务以具有附加特权的EBS中央用户身份运行,并且系统将为代码运行的用户(而不是代码运行的用户)设置此列的值。
不建议这样做,因为您将绕过审计列的意图。因此,更好的问题是,为什么要这样做?而且您可以从其他地方获取信息吗?