Web页面跳转控制文件G1CControl.xml
<ControlDefinition><ControlId>G1CControl</ControlId><DefaultDSID>DSG1CControl</DefaultDSID><ControlProcess><PageId description="初期画面">NoPageID</PageId><ActionId>NoActionID</ActionId><NextPage><NextPageId>G2</NextPageId><NextPageJSPPath>G2.jsp</NextPageJSPPath></NextPage></ControlProcess><ControlProcess><PageId description="G2画面">G2</PageId><ActionId buttonName="Action1">Action1</ActionId><PLTr>C1</PLTr><NextPage><ProcRet description="正常">0</ProcRet><NextPageId>G4</NextPageId><NextPageJSPPath>G4.jsp</NextPageJSPPath></NextPage><NextPage><ProcRet description="error">8</ProcRet><NextPageId>G5</NextPageId><NextPageJSPPath>G5.jsp</NextPageJSPPath></NextPage></ControlProcess><ControlProcess><PageId description="G3画面">G3</PageId><ActionId buttonName="Action1">Action1</ActionId><PLTr>C1</PLTr><NextPage><ProcRet description="正常">0</ProcRet><NextPageId>G4</NextPageId><NextPageJSPPath>G4.jsp</NextPageJSPPath></NextPage></ControlProcess><ControlProcess><PageId description="G2画面">G2</PageId><ActionId buttonName="Action2">Action2</ActionId><PLTr>C1</PLTr><NextPage><ProcRet description="正常">0</ProcRet><NextPageId>G2</NextPageId><NextPageJSPPath>G2.jsp</NextPageJSPPath></NextPage></ControlProcess>
</ControlDefinition>
事务请求数据(Transaction Request Data)G1C_TRD_Def.xml
<?xml version="1.0" encoding="Windows-31J"?>
<!-- 作成者:XXX,作成日:YYYYMMDD -->
<DispatchDef><Tr_Def PLTrID="C1" DSBCheck="False"><BETr_Def BETrID="P1" ConnectorName="ConnectBean" TrType="seq"/></Tr_Def>
</DispatchDef>
- 主要结构:
- 根元素为
<DispatchDef>
- 包含一个
<Tr_Def>
元素,属性:PLTrID="C1"
(流程跟踪ID)DSBCheck="False"
(DSB检查标志)
- 根元素为
- 业务事务定义:
<BETr_Def>
元素定义业务事务,属性:BETrID="P1"
(业务事务ID)ConnectorName="ConnectBean"
(连接器名称)TrType="seq"
(事务类型为顺序执行)
Transaction Request Data
表示事务请求数据,需要处理事务的中间件(如消息队列、交易处理系统)。
数据交换(Data Exchange)DSG1C_DEX_Def.xml
<?xml version="1.0" encoding="Windows-31J"?>
<!-- 作成者:XXX,作成日:YYYYMMDD -->
<ExchangeDef><BETrInfo BETrID="P1"><TrLayoutID InLayoutID="C1U" OutLayoutID="C1D" InFormat="COBOL_AIFA-AIK" OutFormat="COBOL_AIFA-AIK"/><ConnectInfo><ConnectInfoItem InfoName="SG_Name" Info="P1G"/><ConnectInfoItem InfoName="S_Name" Info="P1"/></ConnectInfo></BETrInfo>
</ExchangeDef>
- 主要结构:
- 根元素为
<ExchangeDef>
- 包含一个
<BETrInfo>
元素,属性:BETrID="P1"
(业务事务ID)
- 根元素为
- 布局信息:
<TrLayoutID>
元素定义输入输出布局,属性:InLayoutID="C1U"
(输入布局ID)OutLayoutID="C1D"
(输出布局ID)InFormat="COBOL_AIFA-AIK"
(输入格式)OutFormat="COBOL_AIFA-AIK"
(输出格式)
- 连接信息:
<ConnectInfo>
包含两个连接信息项:SG_Name="P1G"
(服务组名称)S_Name="P1"
(服务名称)
- Data Exchange
表示数据交换,中间件的数据同步或集成功能(如文件交换中间件)。
上行电文C1U.xml
<?xml version="1.0" encoding="Windows-31J"?>
<!-- 作成者:XXX,作成日:YYYYMMDD -->
<TRLAYOUTDEF><TRLAYOUTHDR><TRID ItemType="X" ItemSize="8" value="C1U"/><RETCD ItemType="X" ItemSize="4"/><MSGCD ItemType="X" ItemSize="3"/></TRLAYOUTHDR><FMTDEF><iData1 ItemType="X" ItemSize="13" DsbColName="iData1" DsbColJpName="iData1Name"/></FMTDEF>
</TRLAYOUTDEF>
-
主要结构:
- 根元素为
<TRLAYOUTDEF>
- 包含两部分:
<TRLAYOUTHDR>
- 事务布局头信息<FMTDEF>
- 格式定义部分
- 根元素为
-
事务布局头信息:
<TRID>
- 事务IDItemType="X"
(数据类型)ItemSize="8"
(数据长度)value="C1U"
(具体值)
<RETCD>
- 返回码ItemType="X"
ItemSize="4"
<MSGCD>
- 消息码ItemType="X"
ItemSize="3"
-
格式定义:
<iData1>
- 数据项1-
ItemType="X"
-
ItemSize="13"
-
DsbColName="iData1"
(DSB列名) -
DsbColJpName="iData1Name"
(DSB列日文名)
-
下行电文C1D.xml
<?xml version="1.0" encoding="Windows-31J"?>
<!-- 作成者:XXX,作成日:YYYYMMDD -->
<TRLAYOUTDEF><TRLAYOUTHDR><TRID ItemType="X" ItemSize="8" value="C1D"/><RETCD ItemType="X" ItemSize="4"/><MSGCD ItemType="X" ItemSize="3"/></TRLAYOUTHDR><FMTDEF><OData1 ItemType="X" ItemSize="13" DsbColName="oData1" DsbColJpName="oData1Name"/><DataGroup1 Group="G" DsbColJpName="DataGroup1Name"/><OData4 ItemType="X" ItemSize="13" DsbColName="oData4" DsbColJpName="oData4Name"/><DataGroup2 Group="G" DsbColJpName="DataGroup2Name"/><OData2 ItemType="9" ItemSize="6" Figure="6" DecimalPlace="0" DsbColName="oData2" DsbColJpName="oData2Name"/><OData3 ItemType="9" ItemSize="10" Figure="10" DecimalPlace="0" DsbColName="oData3" DsbColJpName="oData3Name"/></FMTDEF>
</TRLAYOUTDEF>
- 主要结构:
- 根元素为
<TRLAYOUTDEF>
- 包含两部分:
<TRLAYOUTHDR>
- 事务布局头信息<FMTDEF>
- 格式定义部分
- 根元素为
- 事务布局头信息:
<TRID>
- 事务IDItemType="X"
(字符类型)ItemSize="8"
(长度8)value="C1D"
(具体值)
<RETCD>
- 返回码ItemType="X"
ItemSize="4"
<MSGCD>
- 消息码ItemType="X"
ItemSize="3"
- 格式定义:
- 包含多个数据项和两个数据组:
OData1
: 字符类型,长度13DataGroup1
: 数据组1- 包含
OData4
: 字符类型,长度13
- 包含
DataGroup2
: 数据组2- 包含
OData2
: 数字类型,长度6,6位整数 - 包含
OData3
: 数字类型,长度10,10位整数
- 包含
- 包含多个数据项和两个数据组:
- DSB相关属性:
- 每个数据项都有DsbColName
(DSB列名)和DsbColJpName
(DSB列日文名)属性
使用业务逻辑来处理用户的请求并返回数据;
- 如果需要跟外系统交互,那么需要将数据封装为上行电文,发给 OLTP(On-Line Transaction Processing,联机事务处理),OLTP 处理完成后返回下行电文,将下行电文分解后再返回。
COBOL语言来实现业务逻辑功能P1.CBL
123456789012345678901234567890123456789012345678901234567890123456789012IDENTIFICATION DIVISION.PROGRAM-ID. P1 IS INITIAL PROGRAM.AUTHOR. XXX.DATE-WRITTEN. YYYY.MM.DD* 环境部ENVIRONMENT DIVISION.* 定义节CONFIGURATION SECTION.* SOURCE-COMPUTER. HP WITH DEBUGGING MODE.SPECIAL-NAMES.ENVIRONMENT-NAME IS ENV-NAMEENVIRONMENT-VALUE IS ENV-VALUE.* 数据部 DATA DIVISION.* 作业节WORKING-STORAGE SECTION.01 ARG-AREA.COPY "C1.CPY".05 C2-ARG.COPY "C2.CPY".05 C3-ARG.COPY "C3.CPY".01 CNS-AREA.05 CNS-ON-OFF.10 CNS-OFF PIC X(1) VALUE "0".05 CNS-MSG-LEN PIC 9(9) COMP-5 VALUE 111.01 WK-AREA.05 WK-ERR-COUNT PIC 9(9).05 WK-ERR-COUNT-X REDEFINES WK-ERR-COUNT PIC X(9).01 FLG-AREA.05 FLG-ERR PIC X(1).01 WK-AREA-1 PIC X(003) OCCURS 50.01 WK-ID PIC 9(04).* 连接节LINKAGE SECTION.* 输入文件01 RPC-IN-REQ-PKT.05 IN-AIFA.COPY "AIFA.CPY".05 IN-USER-ATTR.COPY "USER.CPY".05 IN-DATA.COPY "C1U.CPY".01 RPC-IN-LEN-REQ-PKT PIC S9(9) COMP-5.* 输入文件01 RPC-OUT-REQ-PKT.05 OUT-AIFA.COPY "AIFA.CPY".05 OUT-USER-ATTR.COPY "USER.CPY".05 OUT-DATA.COPY "C1D.CPY".01 RPC-OUT-LEN-REQ-PKT PIC S9(9) COMP-5.PROCEDURE DIVISION USING RPC-IN-REQ-PKT, RPC-IN-LEN-REQ-PKT,RPC-OUT-REQ-PKT, RPC-OUT-LEN-REQ-PKT.MAIN-PRC-RTN SECTION.PERFORM INIT-RTN.IF FLG-ERR = CNS-OFF THENPERFORM TANTAI-CHK-RTNELSECONTINUEEND-IF.MAIN-PRC-EXT.EXIT PROGRAM.INIT-RTN SECTION.COPY "C4.CPY".IF FLG-ERR = CNS-OFF THENPERFORM SONCHO-INIT-RTNELSECONTINUEEND-IF.INIT-EXT.EXIT.UINIT-RTN SECTION.MOVE SPACE TO C2-ARG.INITIALIZE C2-ARG.MOVE SPACE TO MSG-CD OF RPC-OUT-REQ-PKT.UINIT-EXT.EXIT.CHK-4-RTN SECTION.IF DATA1 OF IN-DATA = "1" OR DATA1 OF IN-DATA = "2" THENCONTINUEELSEMOVE CNS-ON TO FLG-ERREND-IF.CHK-4-EXT.EXIT.HEAD-RTN SECTION.IF MSG-CD OF RPC-OUT-REQ-PKT = SPACE THENEVALUATE APL-RTN-CODE OF COMMON-AREAWHEN CNS-APL-RTN-NORMALCONTINUEWHEN CNS-APL-RTN-GYOMUERRMOVE "E1A" TO MSG-CD OF HEAD OF RPC-OUT-REQ-PKTWHEN CNS-APL-RTN-SYSERRMOVE "S1A" TO MSG-CD OF HEAD OF RPC-OUT-REQ-PKTWHEN OTHERCONTINUEEND-EVALUATEELSECONTINUEEND-IF.PERFORM VARYING WK-ID FROM CNS-9-1 BY CNS-9-1UNTIL WK-ID > CNS-9-100 OR WK-AREA-1(WK-ID) = SPACEIF CODE2(WK-ID2) = WK-AREA-1(WK-ID)MOVE CNS-1 TO WK-FLGEND-IFEND-PERFORM.HEAD-EXT.EXIT.LOG-OUT-RTN SECTION.MOVE "1" TO SEONO.D DISPLAY CNS-PGM-NAME " " SEONO.D DISPLAY "MSG-CD = " D "[" MSG-CD OF RPC-OUT-REQ-PKT "]".CALL CNS-A1 USING IN-AIFAOUT-USER-ATTR OF RPC-OUT-REQ-PKTHEAD OF RPC-OUT-REQ-PKTAI-ARG.LOG-OUT-EXT.EXIT.
RPC-IN-REQ-PKT
:入站RPC请求数据包
- 分解缩写
RPC
Remote Procedure Call(远程过程调用),指外部系统通过网络调用当前节点的服务或函数。IN
Inbound(入站),表示该请求是由外部发起、传入当前系统的(与OUT
/出站相对)。REQ
Request(请求),标识这是一个请求包(对应响应包可能是RPC-IN-RESP-PKT
)。PKT
Packet(数据包),指网络传输中的原始数据单元。
- 组合含义
RPC-IN-REQ-PKT
指:
外部系统向当前服务发起的RPC调用请求数据包,即当前服务接收到的远程调用请求。
RPC-OUT-REQ-PKT
:远程过程调用(RPC)的请求数据包
- 分解缩写
RPC
:
Remote Procedure Call(远程过程调用),指跨网络调用其他节点上的函数或服务。OUT
:
表示 “出站”(Outbound),即从当前系统发起的请求(相对于IN
表示入站)。REQ
:
Request(请求),标识这是一个请求数据包(相对于RESP
表示响应)。PKT
:
Packet(数据包),指网络传输中的最小数据单元。
- 组合含义
RPC-OUT-REQ-PKT
的整体含义可能是:
“出站RPC请求数据包”,即当前系统向外部服务发起RPC调用时构造的网络数据包。
参考
O3W 框架介绍
Object 3Tier Infoworks (简称 O3W)