O3W中间件应用
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
123456789012345678901234567890123456789012345678901234567890123456789012
IDENTIFICATION 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-NAME
ENVIRONMENT-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 THEN
PERFORM TANTAI-CHK-RTN
ELSE
CONTINUE
END-IF.
MAIN-PRC-EXT.
EXIT PROGRAM.
INIT-RTN SECTION.
COPY "C4.CPY".
IF FLG-ERR = CNS-OFF THEN
PERFORM SONCHO-INIT-RTN
ELSE
CONTINUE
END-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" THEN
CONTINUE
ELSE
MOVE CNS-ON TO FLG-ERR
END-IF.
CHK-4-EXT.
EXIT.
HEAD-RTN SECTION.
IF MSG-CD OF RPC-OUT-REQ-PKT = SPACE THEN
EVALUATE APL-RTN-CODE OF COMMON-AREA
WHEN CNS-APL-RTN-NORMAL
CONTINUE
WHEN CNS-APL-RTN-GYOMUERR
MOVE "E1A" TO MSG-CD OF HEAD OF RPC-OUT-REQ-PKT
WHEN CNS-APL-RTN-SYSERR
MOVE "S1A" TO MSG-CD OF HEAD OF RPC-OUT-REQ-PKT
WHEN OTHER
CONTINUE
END-EVALUATE
ELSE
CONTINUE
END-IF.
PERFORM VARYING WK-ID FROM CNS-9-1 BY CNS-9-1
UNTIL WK-ID > CNS-9-100 OR WK-AREA-1(WK-ID) = SPACE
IF CODE2(WK-ID2) = WK-AREA-1(WK-ID)
MOVE CNS-1 TO WK-FLG
END-IF
END-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-AIFA
OUT-USER-ATTR OF RPC-OUT-REQ-PKT
HEAD OF RPC-OUT-REQ-PKT
AI-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调用时构造的网络数据包。

浙公网安备 33010602011771号