MO_GLOBAL - EBS R12 中 Multi Org 设计的深入研究(1)

本文围绕Oracle应用中多组织(Multi Org)问题展开,以黄金游戏公司为例,阐述不同地区子公司在单实例数据库下对税务代码的区分需求。介绍了通过org_id实现不同组织数据隔离的方法,包括组织机构定义、职责与组织关系建立,以及数据库操作等内容。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

在改EBS的BUG过程中,会在网上查找很多资料,这次是碰到一个多组织(Multi Org)的问题,发现Anil Passi的几篇文章不错,慢慢的会陆续翻译过来,这次翻译的是http://getappstraining.blogspot.com/2006/10/orgid-and-multi-org-in-oracle-apps.html


为什么我们需要org_id

在任何一个跨国公司中, 都会在不同的地区有自主经营的子公司,我们以一个游戏公司为例,公司名称是'GameGold Inc',在文章中我们叫它'黄金游戏公司',在英国和法国都设有组织机构.


请注意以下各点:

1.这家公司(黄金游戏公司)在伦敦和巴黎都有办公室.

2.英国和法国税不同,也就是都有自己的tax code.

3.黄金游戏公司是以单实例的方式来实现Oracle应用程序的(英国和法国都使用一个应用程序数据库).

4.当'英国订单输入'或者'英语应付'用户登录到应用程序后,他们不希望看到法国姐妹公司的税务代码(Tax Code).

5.在黄金游戏公司中单个数据库实例中, 只有一张表用来存储税务列表, 我们假设这张在Oracle中的表名是 'ap_tax_codes_all'.

6. 在这张表中我们假设有两条记录:

记录 1 tax code -"FRVAT"

记录 2 tax code - "UKVAT"

7. 我们再进一步的假设有两个职责:

职责 1 - "French order entry".

职责 2 - "UK order entry"

8. 现在,法国的用户使用职责 1 - "French order entry"

9. 英国的用户就使用职责 2 - "UK order entry"

10. 在订单输入界面, 有一个输入项: Tax Code(或者 VAT Code).

11. 对法国用户来说, 在输入项中, 'UKVAT'是不能在值集列表是出现.

12. 而且, "法国订单输入" 用户只能在税的输入项中选择 "FRVAT".

13. 同样的, 英国的主意输入用户只能选择"UKVAT".

在不用硬编码的情况下,这些是如果实现的呢?答案就是org_id.


这些名词会被习惯性的使用到: ORG_ID/Multi-Org/Operating Unit.


截屏在文章的底部
1. 在应用程序中,你可以定义两个组织机构: "French operations" and "UK Operations", 这些可以通过组织机构定义来实现(截屏).

2.在Oracle应用程序中, 一个组织机构可以归类为HRMS Org, 或者 Inventory Warehouse Org, 或者 Business Group, Operating Unit Org 或者更多的类型. 记住,组织机构类型只是用来标识组织机构定义的一种意思(Organization type is just a mean of tagging a flag to an organization definition).

3.我们定义的这两个组织机构是operating unit类型的, 接下来会用到org_Id 和 operating unit 这两个习惯用语.

4.我们可以说,英国的组织机构有一个内部的organization id = 101, 法国的则是102.



问: 你是如何建立起英国职责
(UKresponsibility)和英国组织(UK organization)机构间的关系?

答:在'uk order entry'职责下,设置profile 'MO : Operating Unit'的值为 'UK organization'

: 系统是如何知道 UKVAT 是属于uk org的?
: 在 VAT code 输入界面(税务代码会被输入), 下面的语句会被执行:
Insert into ap_vat_codes_all values(:screenblock.vatfield, fnd_profile.value('org_id').
或者, 使用 USERENV('CLIENT_INFO')

下一个问题当在值集列表(VAT)中显示VAT Codes 时, 数据库是否会做: select * from ap_vat_codes_all where org_id=fnd_profile.value('ORG_ID')?
: 是的.

Oracle 会做以下操作
1. 当插入数据库到multi-org表中时,也会同时做insert into (vatcode,org_id) ....

2.用以下方式创建一个视图:

Create or replace view ap_vat_codes as Select * from ap_vat_codes_all where org_id = fnd_profile.value('ORG_ID')

3.在值集列表(LOV)上,select * from ap_vat_codes ,

如果通过以上说明还没有明白, 那么继续往下看.

快速浏览:
1.在多组织环境中(像在一个数据库中的UK和france), 每一张Multi-Org的表都会有一个名为'org_id'的列, 像发票这个的表是对组织敏感的,因为UK的用户没有理由去看到以及修改法国的发票,所以发票的表会有org_id这一列.

2.供应商站点/位置(Vendor Sites/Locations)也是有区分的,因为UK会在dell.co.uk中存放订单而法国则会在dell.co.fr中存放, 这些在Oracle术语中被叫作vendor sites.

3.任何一张multi-org的表(有org_id这一列)的名称,都会以'_all'结束.

4.对每张 _all 的表, Oracle会提供一个名称中没有'_all'的相关视图, 例如create or replace view xx_invoices as select * from xx_invoices_all where org_id=fnd _profile.value('org_id').

5.在插入数据库到这个表中时,org_id列的值也会被填充.

6.如果你想对所有的operating unit做一个输出,那么使用select from _all table.

7.在APPS中的_all 对象会作为一个同义词关联到真实schema中的_all 表,例如,在APPS schema中的po_headers_all是PO schema中po_headers_all的同义词.

8. 使用SQL*Plus 连接到数据库做以下操作:
connect apps/apps@dbapps ;
--假设 101 是法国的 Org Id
execute dbms_application_info.set_client_info ( 101 );
select tax_code from ap_tax_codes ;
---返回 FRVAT

下面是一些截屏:





内容概要:本文深入探讨了DevOps流程落地中自动化测试与监控体系的构建,强调二者是保障软件质量和系统稳定性的重要支柱。自动化测试涵盖从单元测试到端到端测试的全流程自动化,而监控体系则通过实时采集和分析系统数据,及时发现并解决问题。文章介绍了测试金字塔模型的应用、监控指标的分层设计、测试与生产环境的一致性构建以及告警策略的精细化设置等核心技巧。此外,还提供了基于Python和Prometheus的具体代码案例,包括自动化接口测试脚本和监控指标暴露的实现,展示了如何在实际项目中应用这些技术和方法。 适合人群:对DevOps有一定了解,从事软件开发、运维或测试工作的技术人员,特别是那些希望提升自动化测试和监控能力的从业者。 使用场景及目标:①高并发业务系统中,模拟大规模用户请求,验证系统抗压能力和稳定性;②关键业务流程保障,确保金融交易、医疗数据处理等敏感业务的合规性和可追溯性;③微服务架构系统下,通过契约测试和分布式链路追踪,保证服务间的兼容性和故障快速定位。 阅读建议:本文不仅提供了理论指导,还有详细的代码示例,建议读者结合自身项目的实际情况,逐步实践文中提到的技术和方法,特别是在构建自动化测试框架和监控系统时,关注环境一致性、测试覆盖率和性能指标等方面。
内容概要:该论文针对电熔镁砂熔炼过程的强非线性特性,提出了一种带输出补偿的PID控制方法。电熔镁炉以三相电机转动方向和频率为输入,三相电极电流为输出,模型参数如埋弧电阻率、熔池电阻率和高度会随熔炼过程变化。作者采用线性模型加未知高阶非线性项描述系统设计了消除非线性项及其变化率的补偿器,结合一步最优前馈控制律和调节律确定PID参数。仿真和工业应用表明,该方法能在动态特性随机变化时,将电流跟踪误差控制在目标范围内。论文还详细介绍了控制器的设计、实现及仿真验证过程,包括非线性补偿、抗积分饱和、自适应补偿增益等改进措施,以及工业应用中的关键技术如参数辨识、安全保护机制等。 适用人群:具备一定自动化控制理论基础,从事工业控制系统设计与优化的研发人员和工程师。 使用场景及目标:①解决电熔镁砂熔炼过程中由于参数时变和非线性带来的控制难题;②提高电流控制精度,降低单吨能耗,提升生产效率和产品质量稳定性;③适用于类似强非线性、时变特性的工业过程控制领域。 其他说明:该控制方法通过系统性的非线性补偿设计和在线参数调整,相比传统PID控制,能显著降低电流跟踪误差,减少能耗。实际应用中需根据具体电熔镁炉特性调整模型参数和补偿系数,确保控制性能最优。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值