首页 > 代码库 > FORM中的MOAC控制

FORM中的MOAC控制

1.创建表时,对_ALL表创建同义词

-- Create Multi Org Synonym

CREATE  OR REPLACE  SYNONYM CUX_WF_DEF_HEADER FOR CUX.CUX_WF_DEF_HEADER_ALL;


2.对表添加VPD

-- Create Multi Org VPD Policy
BEGIN
  dbms_rls.add_policy(object_name     => ‘CUX_WF_DEF_HEADER‘,
                      policy_name     => ‘ORG_SEC‘,
                      policy_function => ‘MO_GLOBAL.ORG_SECURITY‘,
                      policy_type     => dbms_rls.shared_context_sensitive);
END;


删除

dbms_rls.drop_policy(object_schema => ‘APPS‘,
                        object_name  => ‘CUX_WF_DEF_HEADER‘,
                        policy_name  => ‘ORG_SEC‘);


3.对CUX应用进行注册
BEGIN
fnd_mo_product_init_pkg.register_application   
(p_appl_short_name => ‘CUX‘,
p_owner => ‘HAND_CXY‘,
p_status => ‘Y‘
);
END;

4.对视图进行注册
BEGIN
  dbms_rls.add_policy(object_name=>‘CUX_MOAC_TEST_V‘,
  policy_name => ‘ORG_SEC‘,
  policy_function => ‘MO_GLOBAL.org_security‘,
  policy_type => dbms_rls.shared_context_sensitive);
END;
(如果不想注册了
BEGIN
  dbms_rls.drop_policy(object_schema => ‘APPS‘,
                        object_name  => ‘CUX_MOAC_TEST‘,
                        policy_name  => ‘ORG_SEC‘);
END;
)

5.在form的WHEN-NEW-FORM-INSTANCE触发器中加入
mo_global.init(p_application_short_name);  
比如mo_global.init(‘CUX‘);  

6.在FORM中选择OU字段的WHEN-VALIDATE-ITEM触发器上加入代码,比如:
IF :control_block.org_id IS NOT NULL THEN
  mo_global.set_policy_context(‘S‘,:control_block.org_id);
ELSE
  mo_global.set_policy_context(‘M‘,NULL);
END IF;