我们现在对事务处理接口的理解,我想,很多人跟我的理解一样,还停留在只知道有两个接口表,或者说,知道一接口一临时表的程度。到底这两个表功能有什么区别?各自是如何运作的?
本文我将带着这些疑问,和大家一起进入讨论。
看看Oracle给他们的解释:<右边框给出比较>
MTL_TRANSACTIONS_INTERFACE
MTL_TRANSACTIONS_INTERFACE is the interface point between
non– Inventory applications and the Inventory transaction module.
Transaction Manager concurrent program polls this table at a
user–specified process interval, and submits the Transaction Workers to
process them. Processing consists of data derivation, validation, and
transfer of records from MTL_TRANSACTIONS_INTERFACE,
MTL_TRANSACTION_LOTS_INTERFACE, and
MTL_SERIAL_NUMBERS_INTERFACE into their respective TEMP
tables, from where they are processed by the transaction processor.
MTL_TRANSACTIONS_INTERFACE follows the Inventory standard
for interfacing flexfields. Any parameters which are represented by
flexfields may be entered in the interface table either as code
combination identifiers or as flexfield segment combinations. The
Transaction Worker will validate that any given identifiers are valid
and enabled. If no identifier is given, then the Transaction Worker will
validate and decode the flexfield segment values, and where
appropriate, create new flexfield combinations in the database.
The Transaction Manager picks up the rows to process based on the
LOCK_FLAG, TRANSACTION_MODE, PROCESS_FLAG to
manipulate the records in the table. Only records with
TRANSACTION_MODE of 3, LOCK_FLAG of ’2’, and
PROCESS_FLAG of ’1’ will be picked up by the Transaction Manager
and assigned to a Transaction Worker. If a record fails to process
completely, then PROCESS_FLAG will be set to ’3’ and ERROR_CODE
1、Interface是连接非库存系统与库存系统的桥梁
2、Interface的数据经常事务管理并发处理后,将插入对应的临时表,再由事务处理器处理。
3、数据处量条件限制请见左边
MTL_MATERIAL_TRANSACTIONS_TEMP
MTL_MATERIAL_TRANSACTIONS_TEMP is the gateway for all
material transactions.
Records are processed from this table into Inventory through the
transaction processor. All Inventory transaction forms write directly to
this table. Outside applications must write transaction records to
MTL_TRANSACTIONS_INTERFACE to be processed through
MTL_MATERIAL_TRANSACTIONS_TEMP and the transaction
processor by the Transaction Worker concurrent program.
Lots and serial numbers for a
MTL_MATERIAL_TRANSACTIONS_TEMP(MMTT) record are stored
in the tables MTL_TRANSACTION_LOTS_TEMP(MTLT) and
MTL_SERIAL_NUMBERS_TEMP(MSNT). If the item is under lot
control, then MMTT.TRANSACTION_TEMP_ID joins to
MTLT.TRANSACTION_TEMP_ID. If the item is also under serial
number control, then MTLT.SERIAL_TRANSACTION_TEMP_ID joins
to MSNT.TRANSACTION_TEMP_ID. If the item is only under serial
number control, then MMTT.TRANSACTION_TEMP_ID joins to
MSNT.TRANSACTION_TEMP_ID.
Transfer transactions are stored in this table as a single record. The
transaction processor creates two transactions from the single record.
看看左边的红色标识的话:所有事务处理的必经的步骤。
所有插入事务处理正式表的数据,都必须经过TEMP表后,(自动)运行Transaction Processor后插入正式表。
从Oracle官方给出的解释,我们可以基本上得到如下一个逻辑图:
如果照上图描述,那么,我们能否通过一些实例来来说明或者说证明我们的想法呢?
一、先了解它
首先,我们明确一下这两个表:
临时表: MTL_MATERIAL_TRANSACTIONS_TEMP (以下简称TEMP表)
接口表: MTL_TRANSACTIONS_INTERFACE (以下简称INTERFACE表)
二、运用它
OK,我们已经知道这两个TABLE的区别及流程,那么,我们怎么运用它呢?
接下来我们针对这两个表分别具体来描述它们的运用。
1) Interface
·直接插入数据入接口表。这里面有几个需要注意的地方:
字段
描述
Source_code, Source_header_id, Source_line_id
来源行,供追溯使用,可以随便填
transaction_source_name
事务处理来源名称,可以随便指定。
PROCESS_FLAG
transaction is ready to be processed by the Transaction
Manager or Worker (’1’ for ready, ’2’ for not ready); if
the transaction fails for some reason, the Transaction Worker sets the value of PROCESS_FLAG to ’3’
TRANSACTION_MODE
the transaction is to be processed in immediate
concurrent processing mode (2) or background processing mode(3)
LOCK_FLAG
Flag indicating whether the transaction is locked by the
Transaction Manager or Workers (’1’ for locked, ’2’ or NULL
for not locked); this prevents two different Workers from
processing the same transaction; You should always specify ’2’
TRANSACTION_TYPE_ID
Transaction type identifier,这里要注意一下的是,如果你是做做杂项处理,那么,如果事务处理数据小于0,那么应该指定为32(Miscellaneous issue),反之则为42(Miscellaneous receipt)
Organization_id
Inventory_item_id
subinventory_code
locator_id
revision
transfer_organization
transfer_subinventory
指定传送仓库及物品有关的信息,如果这些值有,请指定。
transaction_quantity
transaction_uom
transaction_cost
transaction_date
指定事务处理的数量、单位、成本等信息,成本的话,如果指定为NULL,系统会以事务处理器运行时的成本出(入)库。请慎重指定。
distribution_account_id
如果是杂项出入库,请指定库存成本帐户,如果是帐户别名出入库,则需指定。
WHO 字段
需要指定
插入数据完成后,那么,按我们的流程,需要进行Transaction Processor,进行后续数据处理
简称:INCTCM
参数:无
提交语句Sample:
l_request_id := fnd_request.submit_request('INV',
'INCTCM',
'',
to_char(sysdate,'YYYY/MM/DD HH24:MI:SS'),
false,
chr(0))
1) TEMP
在INV的内部处理中,系统都会直接将Process插入至TEMP表,再通过自动请求Transaction Processor,将数据导入至正式表中。
直接插数据入TEMP表一般存在于INV模块,不过,ORACLE官方并不太支持这种方式,“Load the transaction records into MTL_TRANSACTIONS_INTERFACE table .Loading the transaction records directly into MTL_MATERIAL_TRANSACTIONS_TEMP table is not supported.”
那么,能不能这么做呢?
其实,Oracle这句话是正确的,人家是说“你可以直接插MTI,但你不能直接插数据入MMTT”。
因为这两者有区别的:MMTT表是联机处理用的,也就是说是form通过API往里面写数据并可以用API直接处理的,MTI表是接口表,里面的数据是通过Conc Req转到MMTT中并通过txn worker来处理的。
OK,理解这一条后,我们很容易就想到这个问题,MMTT的API是什么?API的工作机制是什么样的?
首先来说MMTT的API,我们随机打开了一个RORM-杂项事务处理FORM,它的主BLOCK就是基于MMTT的,在Trigger Pre-Insert中,写了很多前期处理的操作:如取Temp transaction id,如果系统启用了批次/序列,需要在LOT的BLOCK中先写入相关的信息。插表的操作即通过标准API APP_STANDARD.KEY_COMMIT来完成,将数据保存至MMTT中。
所以,我觉得(没实验过)我们完全可以模仿ORACLE标准FORM来往MMTT中插入数据,但是,这前期涉及的针对批次、序列的处理可能会相当烦锁,如果没有这些麻烦,往MMTT中插数据可能与MTI中插数据一样简单。
在这里我先将TEMP表几个关键字段列出来:
字段
描述
TRANSACTION_HEADER_ID
TRANSACTION_TEMP_ID
Header_id为主键,即MMTT的KEY,TEMP ID可有可无,即未来的Transaction ID
TRANSACTION_SOURCE_TYPE_ID
固定值,一般有如下值
1 Purchase order
2 Sales order
3 Account number
4 Job or schedule
5 Job or schedule
6 Account alias
SOURCE_CODE
SOURCE_LINE_ID
来源码和来源行ID
TRANSACTION_MODE
the transaction is to be processed in immediate
concurrent processing mode (2) or background processing mode(3)
LOCK_FLAG
Flag indicating whether the transaction is locked by the
Transaction Manager or Workers (’1’ for locked, ’2’ or NULL
for not locked); this prevents two different Workers from
processing the same transaction; You should always specify ’2’
TRANSACTION_TYPE_ID
Transaction type identifier,这里要注意一下的是,如果你是做做杂项处理,那么,如果事务处理数据小于0,那么应该指定为32(Miscellaneous issue),反之则为42(Miscellaneous receipt)
Organization_id
Inventory_item_id
subinventory_code
locator_id
revision
transfer_organization
transfer_subinventory
指定传送仓库及物品有关的信息,如果这些值有,请指定。
transaction_quantity
transaction_uom
transaction_cost
transaction_date
指定事务处理的数量、单位、成本等信息,成本的话,如果指定为NULL,系统会以事务处理器运行时的成本出(入)库。请慎重指定。
distribution_account_id
如果是杂项出入库,请指定库存成本帐户,如果是帐户别名出入库,则需指定。
WHO 字段
需要指定
三、实践它
我们已经大概知道两者的描述、区别、运用了。那么,我们接下来做几个SAMPLE实验一下
先验证Interface,再验证Temp
分享到:
相关推荐
推动了软件开发行业的迅猛发展,团体开发软件已经是非常重要的软件开发手段,为了加强团体协作的高效性和对软件开发的同步和准确性,实现对软件开发过程的有效的管理和对开发事务的有效及时的处理,就需要一款适合...
本书共20章,内容包括:USB概述、USB系统、USB信号和电源、USB事务 处理、USB数据传输、USB...转换器、USB接口波形发生器、USB接口数字示波器、UsB2.0接口频谱分析仪 、USB2.0接口逻辑分析仪、USB2.0接口数据采集卡。
此外系统还涉及系统数据安全和用户管理的问题、各种代码使用和维护问题、数据安全和数据维护问题、统计报表生成和输出等问题,因此还要求系统具有系统管理和事务处理功能。总而言之,要求通过系统的开发,达到系统...
Analysis Services 2008提供了一个高性能、低成本、易实现的联机事务处理(OLAP)引擎,内置更多的企业分析方法、高级的数据挖掘、提供一致访问接口以开放关键业务评价标准的业务特性。本课程通过快速的实际案例操作,...
Analysis Services 2008提供了一个高性能、低成本、易实现的联机事务处理(OLAP)引擎,内置更多的企业分析方法、高级的数据挖掘、提供一致访问接口以开放关键业务评价标准的业务特性。本课程通过快速的实际案例操作,...
- 数据分析库:如pandas和NumPy,用于数据处理和分析。 - 网络分析库:如NetworkX,用于构建和分析社交网络。 - 前端技术:HTML, CSS, JavaScript以及可能的框架如React或Vue.js,负责构建用户界面。 - 数据库技术:...
ES是一个高度可伸缩的开源的全文检索和分析引擎,它允许你以近实时的方式快速存储、搜索、分析大量数据,ES是基于Lucence开发,隐藏其复杂性,提供了简单易用的restful api接口、Java api接口 1)、高度的可伸缩性 ...
除此之外,文档还深入介绍了Spring的事务管理能力,特别是DataSourceTransactionManager,它为数据库操作提供了一致的事务管理接口。这些特性使得Spring在处理复杂的企业级应用时更加高效和可靠。 通过对这些核心API...
SAP R/3 事务码速查手册SAP R/3 事务码速查手册目录 1 CA 交叉应用组件 11 1.1 CA 交叉应用组件 11 1.2 CA-EUR-CNV 本地货币改变 11 1.3 CA-DMS 文档管理系统 14 1.4 CA-CL 分类系统 15 1.4.1 CA-CL-CHR 特性 17 1.5...
24、TCC型事务架构设计分析 25、TCC型事务框架的源码实现讲解 26、TCC型事务方案的项目实战应用介绍 27、TCC型事务方案的项目实战应用部署 28、TCC型事务方案的项目实战应用测试 29、TCC型事务方案的应用优化提升 30...
3.1.4 每分钟事务处理数 3.2 响应时间细分 3.2.1 Web Service 接口单独测试 3.3 服务器稳定性测试分析 3.3.1 Weblogic 线程池状态 3.3.2 Weblogic 服务器资源使用率 3.3.3 RadWare 瓶颈 3.4 改善建议 ...
Java开发基于rmi的数据库中间件设计源码。分布式对象技术课程实践:基于rmi的数据库中间件设计,并利用中间件建立一个数据库应用(Java web项目)。...提供事务确认和回滚处理。 接口设计如下表所示:
接口服务器(上下位):分别与ESB总线服务器和PLC硬件服务器相连,分别处理来自上位和下位的数据,并MES应用服务器交互,实现系统外部数据的采集、业务处理、流程触发等内容。 另外架构中配置独立的报表服务器和打印...
项目职责:个人参与核心讨论,对需求设计和分析提出关键意见,负责后端整体代码编写,使用SSM框架实现后端整体代码设计跟编写,实现实体类设计,各接口设计及实例化,拦截器,实现数据报表打印,数据库事务处理,...
6.2.2在接口中全局异常处理的案例 24 6.2.3异常的分类 26 6.2.4自定义全局异常处理 27 6.2.5重写 Render 方法 28 6.3数据库访问与 ORM 29 6.3.1数据表设计 29 6.3.2外键关系—外键约束 30 6.3.3数据库的假...
再谈柔性事务,为何我们要抛弃标准事务.zip 463.9MB 一堂课搞定MySql优化.zip 524.8MB 一节课垂直打击JVM.zip 569.1MB 双十一技术复盘 高并发秒杀系统解密.zip 953.8MB 深入理解Redis缓存.zip 494.4MB 千万级...
事务处理,安全性,自定义身份验证 Visual Studio Team System 中的单元测试与Web测试 案例分析:基于.NET2.0的大型电子商务系统 五 Windows 应用(Windows Forms) 创建Windows应用程序 主要Windows控件与...
为计算机系统增加了一个高性能的L/0接口总线,提高了主机与外部设备间数据传输的性能,增强了计算机作为事务处理主体的能力。通过对内存总线和内存控制器关键技术的分析,给出了基于SDRAM内存总线的内存目标接口...
3.针对库存业务分析:事务(1>.减内存 2>.记录购买明细) 4.记录秒杀成功信息 (1)购买成功的对象 (2)成功的时间/有效期 (3)付款/发货信息 二、异常情况分析 减库存没有记录购买明细 记录明细但没有减...