WMB这方面的资料少的可怜,几乎是找不到,. 我既然是WMB开发者的一员,.尽情的分享本身的经验.数据库
写一个小小WMB链接数据库实例, 帮助本身也方便你们,.oracle
废话很少说.直奔主题..工具
在使用ODBC链接数据库以前,.大概须要以下步骤:测试
1.安装oracle数据库. 安装好以后,而且创建表,好比我创建两个表;spa
表一:CUSTOMER表;两个字段..net
CUST_ID VARCHAR2(6),
CUST_NAME VARCHAR2(6)3d
而且给表插入值:代理
CUST_I CUST_NAME
------ - ------------------
100001 周海涛code
100002 张三xml
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