`

WMB 使用Compute节点连接Oracle数据库实例

阅读更多



 
WMB这方面的资料少的可怜,几乎是找不到,.  我既然是WMB开发者的一员,.尽情的分享自己的经验.

写一个小小WMB连接数据库实例,  帮助自己也方便大家,.

废话不多说.直奔主题..

 

 

在使用ODBC连接数据库之前,.大概需要如下步骤:

 

1.安装oracle数据库.  安装好之后,并且建立表,比如我建立两个表;

 

表一:CUSTOMER表;两个字段.

CUST_ID         VARCHAR2(6),
CUST_NAME    VARCHAR2(6)

 

并且给表插入值:

CUST_I         CUST_NAME
------ -           ------------------
100001         周海涛

100002         张三

100003         李四 

 

表二:RECORDS(记录表)字段如下:

 ID                             NOT NULL VARCHAR2(6)
 NAME                        NOT NULL VARCHAR2(40)
 ADDRESS                  NOT NULL VARCHAR2(60)
 AMOUNT1                                  NUMBER(8,2)

 AMOUNT2                                  NUMBER(8,2)

 

 

 

2.配置ODBC数据源.

在配置数据源之前,需要启动oracle 实例服务及 监听服务.

 

控制面板->管理工具->ODBC数据源->系统DSN->添加->

数据驱动选择:Message Broker DataDirect Technologies 6.0 32 BIt Oracle Wire Protocol.

点击完成.

 

需要输入:

Dat Source Name数据源名称,任意即可.

Description  描述.可以不输入.

Host:           数据主机地址,或者远程的IP地址.

Port Number:端口号,默认为1521.

SID:             实例名称,比如ORCL

 

点击Test Connect 连接测试,输入用户名和密码 ,这里我测试的用户是scott用户,密码tiger;

提示:Connection established 已建立连接.表示连接成功..

 

 

3.使用MQSI命令设置把ODBC设置到broker代理中..并且指定数据源, 用户名,密码.

在cmd直接切换到 C:\Program Files\IBM\MQSI\7.0>目录或者是在直接WMB中找到命令管理器.

 

输入,
--设置连接数据源参数; exebroker -代表代理, -n DBDATASOURCE 代表数据源, -u scott代表用户名, -p 代表密码;
C:\Program Files\IBM\MQSI\7.0>mqsisetdbparms exebroker -n DBDATASOURCE -u scott -p tiger
BIP8071I: 命令成功完成。

 

 

4.建立Message Flow项目,建立Message Flow,搭建主流程.

 

 

 

 

插入数据子流程:

 

 

 

 

5.这是主流程ESQL语句.

 

 

BROKER SCHEMA main

--判断;
CREATE FILTER MODULE Exe4_Compute_Main_Filter
	CREATE FUNCTION Main() RETURNS BOOLEAN
	BEGIN
		
		--如果地址是上海市,返回TRUE,否则返回FALSE;
		IF  Environment.Variables.address = '上海市' THEN 
				RETURN TRUE;
		ELSE 
				RETURN FALSE;	
		END IF;
	END;

END MODULE;

--查询数据;写入XML文件.
CREATE COMPUTE MODULE Exe4_Compute_Main_Search
	CREATE FUNCTION Main() RETURNS BOOLEAN
	BEGIN
		 
		DECLARE tempName CHARACTER;
		--从数据库中获取Name字段;
		SET tempName = THE(SELECT ITEM T.CUST_NAME FROM Database.CUSTOMER AS T WHERE T.CUST_ID = InputRoot.XML.record.id);
		
		--去空格;
		SET tempName = TRIM(BOTH  ' ' FROM tempName);
		
		--创建record节点;
		CREATE FIELD OutputRoot.XML.record;
		
		--引用record节点;
		DECLARE outputRecord REFERENCE TO OutputRoot.XML.record;
		
		--创建record下面的子节点;
		SET outputRecord.id = InputRoot.XML.record.id ;
		SET outputRecord.name = tempName;
		SET outputRecord.address  = InputRoot.XML.record.address;
		SET outputRecord.amount1 = InputRoot.XML.record.amount1;
		SET outputRecord.amount2 = InputRoot.XML.record.amount2;
		
		--把地址设置到环境变量中;
		SET Environment.Variables.address = InputRoot.XML.record.address;
		SET Environment.Variables.record = OutputRoot.XML.record;
		RETURN TRUE;
	END;

	CREATE PROCEDURE CopyEntireMessage() BEGIN
		SET OutputRoot = InputRoot;
	END;
END MODULE;

 

 

这个是输入插入子流程Database节点中的ESQL代码:

 

BROKER SCHEMA bussess.subflow

--插入数据到数据库中;
CREATE DATABASE MODULE Exe4_Compute_DB_Subflow_Database
	CREATE FUNCTION Main() RETURNS BOOLEAN
	BEGIN
		
		--引用OutputRoot中的数据;
		DECLARE oututRecords REFERENCE TO Environment.Variables.record;
		
		--插入数据到数据库中,数据来自于之前读取XML中的数据;
		INSERT INTO  Database.RECORDS(ID,NAME,ADDRESS,AMOUNT1,AMOUNT2) VALUES (oututRecords.id,oututRecords.name,oututRecords.address,CAST(oututRecords.amount1 AS DECIMAL(8,2)),CAST(oututRecords.amount2	AS DECIMAL(8,2)));
	
		RETURN TRUE;
	END;
END MODULE;

 

 

 

6.部署,归档.发布,.然后 测试是否通过。

测试的时候,使用的是rfhutil.exe工具进行测试,

 

读取的本地的一个record1.xml文件

内容如下:

<record> <id>100001</id> <address>南京市</address> <amount1>560.00</amount1> <amount2>300.00</amount2> </record>


 

 

 

 

 

如果通过,则会在数据中成功插入一条数据.

SQL> select * from records;

ID                 NAME                       ADDRESS                              AMOUNT1                            AMOUNT

------    ---------------------------- ------------------------------           -------------------                 ---------- ------

100001         周海涛                   南京市                                        560.00                     300.00

 

 

 

  • 大小: 11 KB
  • 大小: 5.5 KB
分享到:
评论
5 楼 SmallFish 2014-05-14  
已搞定,谢谢
4 楼 SmallFish 2014-05-14  
请问报如下错误是如何导致:
C:\Program Files\IBM\MQSI\9.0.0.0\bin>mqsisetdbparms exebroker -n DBDATASOURCE -
u lizj -p lizj
BIP8225E: “exebroker”不是已知组件。
所提供的名称不是已知组件。
请提供其他组件名称。
3 楼 z117wzhm 2013-06-23  
你好,我想问一下如果在SELECT后面想用变量动态的赋值应该如何处理
2 楼 zhou363667565 2011-12-28  
azhqiang 写道
你这个数据源是怎么配置的呢?系统DSN的adnance是怎么勾选的呢?


在Advanced这个选项卡里面 把
Enable SQLDescribeParam
Procedure Returns Results 打上勾即可。
1 楼 azhqiang 2011-12-27  
你这个数据源是怎么配置的呢?系统DSN的adnance是怎么勾选的呢?

相关推荐

    wmb培训资料

    本资料将通过几个实例介绍WMB的基本操作和使用。 1. 创建和部署消息流: - 在WMB环境中,首先要创建一个broker,这是运行消息流的基础。接着创建一个新的消息流项目,给项目和消息流命名。 - 设计消息流时,从...

    IBM WMB 常用节点使用

    IBM WMB 常用节点实验文档, 包含 MQInput,MQOutput,TraceNode,FilterNode,RouteToLabelNode,LabelNode,ComputeNode. 共3个pdf文档,实验内容: 日志记录,基于内容的消息路由,计算节点使用,图文结合,希望可以帮助大家!

    ibm-wmb

    1. **练习0_WMB6.1的初始化配置(Oracle)**:这个练习主要涉及如何在Oracle数据库上安装和配置WMB的基础环境。这包括安装WebSphere Application Server(WAS)、创建数据库表空间、配置WMB的数据库连接(DataSources...

    MB数据库输入节点.pdf

    在WebSphere Message Broker (WMB)中,数据库输入节点(DatabaseInput Node)是一个关键组件,用于从数据库中提取数据并将其转换为消息流的一部分。MB数据库输入节点允许开发者监控和处理数据库中的事件,这些事件...

    ibm wmb 参考资料

    9. **使用Java开发**:了解如何在WMB中利用Java编写自定义节点,以实现更复杂的数据处理逻辑,或者扩展WMB的功能。 通过深入学习上述知识点,你将能够熟练掌握IBM WMB的使用,为企业的系统集成和数据交换提供强有力...

    MB6.0消息流开发实例

    5. **数据库节点与消息子流**:在“练习5_数据库节点_消息子流.doc”中,我们将学习如何使用数据库节点与消息子流进行交互。数据库节点允许我们从数据库中读取或写入数据,而消息子流则可以封装一系列操作,使消息...

    ESB连接缓存

    5. **开发消息流**:在WebSphere Message Broker(WMB,即ESB的一部分)中创建消息流时,需要指定数据源名称,如`ORACLEDB`,以便在流程中使用数据库节点进行数据交互。 6. **应用更改**:修改环境变量后,必须重启...

    Websphere Message Broker实践,WebSphere MQ Java编程

    Websphere Message Broker实践,WebSphere MQ Java编程,Message Broker 计时器节点编程模式,MessageBroker TCPIP通信协议,wmb关于ws服务的引用,WMB连接oracle数据库实践,全部组件

    ibm wmb 介绍

    【IBM WMB 介绍】 IBM WebSphere Message Broker (WMB),也...通过P01_WMB-Intro.pdf和P01a_WMBv61_Intro.pdf这两个PDF文档,读者可以深入学习WMB的功能、配置和使用方法,掌握如何利用WMB构建高效的企业级集成方案。

    ibm wmb esql ESQL资料

    - **安全性和权限**:在WMB中使用ESQL时如何考虑数据库的访问控制和安全性。 - **调试和日志记录**:使用WMB工具进行ESQL代码的调试方法,以及日志记录以帮助故障排查。 - **集成和自定义**:ESQL与其他编程语言...

    WMB001N编程器固件

    在使用这个固件之前,用户需要确保他们的编程器设备与WMB001N兼容,并按照适当的步骤进行操作,通常这涉及到连接编程器到电脑,打开相应的软件工具,然后将固件文件烧录到设备上。 总的来说,"WMB001N编程器固件"是...

    oracle 作业

    赋予`lzt`用户连接数据库(CONNECT)和资源管理(RESOURCE)权限,以及DBA(数据库管理员)权限,这样用户可以执行一些高级操作。授权的SQL语句如下: ```sql GRANT connect, resource TO lzt; GRANT dba TO lzt; `...

    Websphere Message Broker 入门经典必备实例

    这个实例将演示如何使用WMB将来自一个源系统的消息路由到另一个目标系统。首先,配置一个Queue Input Node从MQ读取消息,然后通过Compute Node处理消息内容,最后使用MQ Output Node将处理后的内容发送到另一个MQ...

    练习6_映射节点.doc

    首先,映射节点通常位于消息流中的计算节点、数据库节点和消息子流之后,用于在数据处理流程中进一步调整和转换消息结构。在这个例子中,原始XML消息包含记录的`id`、`address`、`amount1`和`amount2`字段,而目标...

    WebSphere Message Broker HttpInput 节点

    通过【HttpInput节点实例】,我们可以学习如何在实际项目中设置和使用HttpInput节点。这些实例通常会展示如何配置端口、设置认证选项、处理特定类型的HTTP请求以及如何与其他节点配合工作。这些实践经验对于理解...

    WebSphere Message Broker指南

    (二)数据库节点 6 (三)FITER节点 10 (四)RouteToLabel节点的使用 11 (五) FlowOrder节点 12 (六) throw,thycatch,trace节点的使用(自己理解) 14 (七) publication节点 14 (八)FileInput和File...

    练习7_路由节点.doc

    这个练习旨在提升对WMB工具的熟练度,以及理解如何使用路由节点根据消息内容动态路由消息,这对于实现灵活和高效的中间件系统至关重要。通过这样的实践,我们可以更好地理解和掌握WMB如何处理复杂的消息路由场景,以...

    wmb001n WMB001N_V1.0.18_1415 原厂固件

    wmb001n WMB001N_V1.0.18_1415 固件升级后系统稳定性得到了很大提高,可以实现局域网桥接功能,局域网中可以远程播放歌曲使用起来方便多了。

Global site tag (gtag.js) - Google Analytics