一、摘要


R12 Form 或者其他二次开发时,很多情况下会涉及R12 MOAC多组织开发,以下介绍了4个常见的应用,如有遗漏还请学友继续补充

1. 开发时打开Form自动弹出组织选择实现方式(增加Choose ORG功能)

2. 开发时打开Form中有组织LOV选择实现方式

3. R12多组织的技术实现方式-VPD技术

4. VPD技术详解,数据库安全策略

下文对这4个情况做一些用法和案例做一下介绍

二、案例


案例1、开发时打开Form自动弹出组织选择实现方式(增加Choose ORG功能)

(1). 新增4个Paramters: Chart_Of_Account_Id, Org_Name, Org_Code, Org_id四个参数;

(2). 在Form Level中Pre-Form中新增fnd_org.choose_org;

(3). 在Form Level中When-New-Form-Instance中新增app_window.set_title('bxj_windows', :parameter.org_code);

案例2、开发时打开Form中有组织LOV选择实现方式

(1). Pre-Form触发器初始化MOAC配置环境

MO_GLOBAL.init(‘ONT’);

IF l_default_org_id IS NOT NULL THEN — default org id not null

            MO_GLOBAL.SET_POLICY_CONTEXT(‘S’,l_default_org_id);

        ELSE

            MO_GLOBAL.SET_POLICY_CONTEXT(‘M’,null);

        END IF;

(2). When-Create-Record触发器中复制OU默认值

在此触发器中将默认的OU ID和OU Name拷贝给Form界面上对应的自动,实现创建记录的时候默认带出默认OU信息。

        copy(name_in(‘global.mo_default_org_id’),’’);

        copy(name_in(‘global.mo_default_ou_name’),’’);

(3). 创建OU的LOV

Form界面上的OU 名称字段创建一个LOV,LOV对应记录组的SQL语句如下:

            SELECT hr.organization_id organization_id, hr.NAME organization_name

              FROM hr_operating_units hr

             WHERE mo_global.check_access(hr.organization_id) = ‘Y’

          ORDER BY organization_name

案例3、R12多组织的技术实现方式-VPD技术

(1). 三个Profile<MO: Security Profile、MO: Default Operating Unit、MO: Operating Unit>

(2). ap_invoices 定义在ap_invoices_all基础之上

a. 对于VPD<ap_invoices>表,简单的查询一般是不返回记录的,如果想查到记录,需要设置一下上下文先

b. 普通查询VPD表

select * from ap_invoices; -->No Output

c. Single OU Mode

BEGIN  execute mo_global.set_policy_context('S',204);

--204为ORG_ID,S表示Single Org ContextEND;select * from PO_HEADERS;--会输出OU:204下边的所有PO

--Multiple OU Mode(simulate login to a specific responsibility)

Call fnd_global.apps_initialize(userid,resp_id,resp_appl_id);

d. call MO_GLOBAL.INIT(p_appl_short_name);This will read the MO profile option values for your responsibility/user,

and will initialize the Multi Org Access.

e.select * from po_headers; -->Output

    (3). MO_GLOBAL.ORG_SECURITY的作用实际上就是根据你关于MOAC Profiles的设置,然后转换为相应Where条件(组织过滤),再进行查询

案例4、 VPD技术详解,数据库安全策略

(1). 创建Table Or View的数据<bxj_invoices_policy_v>

 1     CREATE OR REPLACE VIEW apps.bxj_invoices_policy_v AS
2
3 SELECT a.invoice_id,
4
5 b.vendor_name,
6
7 c.vendor_site_code,
8
9 a.invoice_num,
10
11 a.invoice_amount,
12
13 a.invoice_currency_code
14
15 FROM ap_invoices_all a, ap_suppliers b, ap_supplier_sites_all c
16
17 WHERE a.vendor_id = b.vendor_id AND a.vendor_site_id = c.vendor_site_id
18
19 AND ROWNUM <= 10

(2). 创建Policy Function

 1     CREATE OR REPLACE FUNCTION bxj_fun_invoices_policy (s_schema IN VARCHAR2,
2
3 s_object IN VARCHAR2)
4
5 RETURN VARCHAR2
6
7 AS
8
9 BEGIN
10
11 RETURN 'invoice_currency_code = ' || '''EUR''';
12
13 END;

(3). 注册VPD Policy

 1     BEGIN
2
3 DBMS_RLS.add_policy (object_schema => 'APPS',
4
5 object_name => 'BXJ_INVOICES_POLICY_V',
6
7 policy_name => 'POLICY_LIMITED_QUERY_INVOICES',
8
9 function_schema => 'APPS',
10
11 policy_function => 'BXJ_FUN_INVOICES_POLICY');
12
13 END;

(4). 比较注册Policy前后,View的输出结果,由10条变为了7条,直接过滤了USD的记录

a. 注册前

a. 注册后

PLSQL_R12 MOAC多组织的四个应用(案例)的更多相关文章

  1. SYS_R12 MOAC多组织的四个应用(案例)

    2014-05-31 Created By BaoXinjian

  2. SYS_R12 MOAC多组织底层技术实现技术分析(Oracle VPD) (案例)

    2014-05-30 Created By BaoXinjian

  3. Pandas系列(十四)- 实战案例

    一.series import pandas as pd import string #创建Series的两种方式 #方式一 t = pd.Series([1,2,3,4,43],index=list ...

  4. Flume的四个使用案例

    一.Flume监听端口 1,在linux机器上下载telnet工具 yum search telnet yumm install telnet.x86_64 2.编写flume的配置文件,并将文件复制 ...

  5. maven第四章背景案例

    4.3简要设计 4.3.1接口设计 4.3.2模块结构 思想 先定义出核心接口,一个接口可以认为是一个功能,根据接口划分功能 设计模式就是一种思想,外观模式和代理模式,适配者模式三者的区别 http: ...

  6. java基础之多线程四:简单案例

    多线程案例: 有一个包包的数量为100个,分别从实体店和官网进行售卖.使用多线程的方式,分别打印实体店和官网卖出包包的信息.分别统计官网和实体店各卖出了多少个包包 第一种方法 继承Thread类: p ...

  7. 《数据结构与算法(C语言版)》严蔚敏 | 第四章课本案例

    //二叉树的顺序存储表示 #define MAXTSIZE 100 typedef TElemtype SqBiTree[MAXTSIZE]; SqBiTree bt; //二叉树的二叉链表存储表示 ...

  8. 基于知识图谱的APT组织追踪治理

    高级持续性威胁(APT)正日益成为针对政府和企业重要资产的不可忽视的网络空间重大威胁.由于APT攻击往往具有明确的攻击意图,并且其攻击手段具备极高的隐蔽性和潜伏性,传统的网络检测手段通常无法有效对其进 ...

  9. TCP/IP协议族的四个层次

    OSI7层模型的小结 : 在7层模型中,每一层都提供一个特殊的网络功能.从网络功能的角度看:下面4层(物理层.数据链路层.网络层和传输层)主要提供数据传输和交换功能,即以节点到节点之间的通信为主:第4 ...

随机推荐

  1. iOS开源加密相册Agony的实现(四)

    简介 虽然目前市面上有一些不错的加密相册App,但不是内置广告,就是对上传的张数有所限制.本文介绍了一个加密相册的制作过程,该加密相册将包括多密码(输入不同的密码即可访问不同的空间,可掩人耳目).Wi ...

  2. ZooKeeper之(一)ZooKeeper是什么

    1.1 产生背景 当今是个分布式.集群.云计算等名词满天飞的时代.造成这种局面的一个重要因素就是,单一机器的处理能力已经不能满足我们的需求,不得不采用由多台机器组成的服务集群.服务集群对外提供服务的过 ...

  3. Android 5.0 调色 Palette调色功能

    Palette非常好用,也非常好玩. Palette的作用是从图像中提取突出的颜色,这样我们可以根据提取到的色值把它赋给Toolbar,标题,状态栏等,可以使我们的整个界面色调统一,效果非常好看. P ...

  4. 【Android】给Android Studio设置代理

    先打开我们的Android Studio,点击工具栏的file下的settings,如下图 之后再搜索框上面输入Proxy,然后按第四步提示点击,如下图 之后就进入了设置代理的界面了,如下图 默认情况 ...

  5. 使用C++将OpenCV中Mat的数据写入二进制文件,用Matlab读出

    在使用OpenCV开发程序时,如果想查看矩阵数据,比较费劲,而matlab查看数据很方便,有一种方法,是matlab和c++混合编程,可以用matlab访问c++的内存,可惜我不会这种方式,所以我就把 ...

  6. paypal的IPN机制

    paypal对接时发现有这么一个机制,看起来还不错,起到了防止篡改欺诈行为,保证了通信的安全性,但会增加几次通信.

  7. springMVC源码分析--动态样式ThemeResolver(二)

    在上一篇博客springMVC源码分析--动态样式ThemeResolver(一)中我们介绍了多样式ThemeResolver的使用方法,接下来我们对源码进行简单的分析一下. ThemeResolve ...

  8. 大页内存(HugePages)在通用程序优化中的应用

    今天给大家介绍一种比较新奇的程序性能优化方法-大页内存(HugePages),简单来说就是通过增大操作系统页的大小来减小页表,从而避免快表缺失.这方面的资料比较贫乏,而且网上绝大多数资料都是介绍它在O ...

  9. 剑指Offer——Trie树(字典树)

    剑指Offer--Trie树(字典树) Trie树 Trie树,即字典树,又称单词查找树或键树,是一种树形结构,是一种的单词.对于每一个单词,我们要判断他出没出现过,如果出现了,求第一次出现在第几个位 ...

  10. shell 参数列表的获取&shell使用的一些总结

    最近在修改公司的一些cron,自己也是第一次接触和学习shell.对于一些零散但是常用的知识点,做一点点的总结. 拿出一个方法说说吧,方法如下:(信息量挺大的,请耐心看下面的说明) trans_cou ...