我从Oracle APEX调用一个EBS Webservice "Assign Roles“。它将被成功调用,并将角色分配给所需的用户。但是,如果我查看"wf_user_role_assignments“表,created_by字段中有顶层用户的userid,而不是EBS用户的userid。我该怎么做呢?
在从APEX调用webservice时,我传递了EBS_ user_id。我调试了从the服务调用的代码。
它调用"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);因此,当这个过程被实际调用时,它将NULL值作为"created_by“参数。
此后,当此过程调用WF_Directory.CreateUserRole时,它会将
l_creatby := nvl(CreateUserRole.created_by,WFA_SEC.USER_ID);它接受APEX用户的值。
我想要在"wf_user_role_assignments“表的创建者字段中填充EBS userid?我该怎么做呢,因为"wf_local_synch.propagateUserRole“在调用时没有包含该参数,所以我不能传递正确的值。由于这是一个标准的oracle包,因此不建议对其进行修改。
发布于 2019-05-24 07:14:19
EBS字段是EBS中的标准审计字段(称为created_by列)-它是FND_USER的外键,并且必须与EBS用户相对应。webservice作为具有附加privs的中央EBS用户运行,系统将此列的值设置为代码运行时所使用的用户,而不是代码运行时所使用的用户。
这样做是不可取的,因为您将绕过审计列的意图。所以,更好的问题是,你为什么要这样做?你能从另一个地方获取信息吗?
https://stackoverflow.com/questions/56253902
复制相似问题