`
xingkongcj
  • 浏览: 29070 次
  • 性别: Icon_minigender_2
  • 来自: 上海
最近访客 更多访客>>
社区版块
存档分类
最新评论

事务处理接口分析

阅读更多
我们现在对事务处理接口的理解,我想,很多人跟我的理解一样,还停留在只知道有两个接口表,或者说,知道一接口一临时表的程度。到底这两个表功能有什么区别?各自是如何运作的?

    本文我将带着这些疑问,和大家一起进入讨论。

 



看看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

分享到:
评论

相关推荐

    基于WEB的事务跟踪系统

    推动了软件开发行业的迅猛发展,团体开发软件已经是非常重要的软件开发手段,为了加强团体协作的高效性和对软件开发的同步和准确性,实现对软件开发过程的有效的管理和对开发事务的有效及时的处理,就需要一款适合...

    USB2.0原理与工程开发(光盘内容)

    本书共20章,内容包括:USB概述、USB系统、USB信号和电源、USB事务 处理、USB数据传输、USB...转换器、USB接口波形发生器、USB接口数字示波器、UsB2.0接口频谱分析仪 、USB2.0接口逻辑分析仪、USB2.0接口数据采集卡。

    学生考勤管理系统 需求分析.DOC

    此外系统还涉及系统数据安全和用户管理的问题、各种代码使用和维护问题、数据安全和数据维护问题、统计报表生成和输出等问题,因此还要求系统具有系统管理和事务处理功能。总而言之,要求通过系统的开发,达到系统...

    吴颖娜-SSAS的基本设计和应用

    Analysis Services 2008提供了一个高性能、低成本、易实现的联机事务处理(OLAP)引擎,内置更多的企业分析方法、高级的数据挖掘、提供一致访问接口以开放关键业务评价标准的业务特性。本课程通过快速的实际案例操作,...

    吴颖娜-SSAS基本设计和应用

    Analysis Services 2008提供了一个高性能、低成本、易实现的联机事务处理(OLAP)引擎,内置更多的企业分析方法、高级的数据挖掘、提供一致访问接口以开放关键业务评价标准的业务特性。本课程通过快速的实际案例操作,...

    python项目某大学学生影响力分析系统.zip

    - 数据分析库:如pandas和NumPy,用于数据处理和分析。 - 网络分析库:如NetworkX,用于构建和分析社交网络。 - 前端技术:HTML, CSS, JavaScript以及可能的框架如React或Vue.js,负责构建用户界面。 - 数据库技术:...

    ES 的使用安装删除、各种操作配置代码

    ES是一个高度可伸缩的开源的全文检索和分析引擎,它允许你以近实时的方式快速存储、搜索、分析大量数据,ES是基于Lucence开发,隐藏其复杂性,提供了简单易用的restful api接口、Java api接口 1)、高度的可伸缩性 ...

    深入解析Spring核心API: 打造高效Java应用

    除此之外,文档还深入介绍了Spring的事务管理能力,特别是DataSourceTransactionManager,它为数据库操作提供了一致的事务管理接口。这些特性使得Spring在处理复杂的企业级应用时更加高效和可靠。 通过对这些核心API...

    SAP R/3 事务码速查手册SAP R/3 事务码速查手册

    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的数据库中间件设计源码.zip

    Java开发基于rmi的数据库中间件设计源码。分布式对象技术课程实践:基于rmi的数据库中间件设计,并利用中间件建立一个数据库应用(Java web项目)。...提供事务确认和回滚处理。 接口设计如下表所示:

    MES解决方案介绍V1.1

    接口服务器(上下位):分别与ESB总线服务器和PLC硬件服务器相连,分别处理来自上位和下位的数据,并MES应用服务器交互,实现系统外部数据的采集、业务处理、流程触发等内容。 另外架构中配置独立的报表服务器和打印...

    Java实践项目-医药管理信息系统

    项目职责:个人参与核心讨论,对需求设计和分析提出关键意见,负责后端整体代码编写,使用SSM框架实现后端整体代码设计跟编写,实现实体类设计,各接口设计及实例化,拦截器,实现数据报表打印,数据库事务处理,...

    基于生态农业的电子商务微信小程序毕业设计(论文).docx

    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数据库的假...

    java 高级架构进阶学习

    再谈柔性事务,为何我们要抛弃标准事务.zip 463.9MB 一堂课搞定MySql优化.zip 524.8MB 一节课垂直打击JVM.zip 569.1MB 双十一技术复盘 高并发秒杀系统解密.zip 953.8MB 深入理解Redis缓存.zip 494.4MB 千万级...

    北京中科信软 Visual Basic.NET培训

    事务处理,安全性,自定义身份验证 Visual Studio Team System 中的单元测试与Web测试 案例分析:基于.NET2.0的大型电子商务系统 五 Windows 应用(Windows Forms) 创建Windows应用程序 主要Windows控件与...

    基于内存总线的高性能I/O接口设计 (2006年)

    为计算机系统增加了一个高性能的L/0接口总线,提高了主机与外部设备间数据传输的性能,增强了计算机作为事务处理主体的能力。通过对内存总线和内存控制器关键技术的分析,给出了基于SDRAM内存总线的内存目标接口...

    基于springmvc高并发秒杀系统

    3.针对库存业务分析:事务(1&gt;.减内存 2&gt;.记录购买明细) 4.记录秒杀成功信息 (1)购买成功的对象 (2)成功的时间/有效期 (3)付款/发货信息 二、异常情况分析 减库存没有记录购买明细 记录明细但没有减...

Global site tag (gtag.js) - Google Analytics