用Web Service往BAM加数据

BAM支持通过Web Service方式发送数据给BAM的ADC (Active Data Cache)。

 

首先,要知道BAM有哪些功能给出了Web Service的接口,包括以下的东西:

1、对数据对象的定义进行操作,对应的服务是DataObjectDefinition;

2、对数据对象进行操作,对应的服务是DataObjectOperationsByID或者DataObjectOperationsByName;

3、其他有如对触发规则和ICommand的服务,这里略过。

 

其次,要知道WSDL和访问地址在哪,

1、以服务DataObjectOperationsByID为例,获取WSDL的地址为 http://serverhost:7001/OracleBAMWS/WebServices/DataObjectOperationsByID?WSDL

2、调用地址就是去掉?WSDL剩下的那段。

 

再次,获取了WSDL之后,分析数据格式是什么样子,需要填入什么样的数据。以下给出插入一条数据对象的样例报文。

<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:bam="http://xmlns.oracle.com/bam">
   <soapenv:Header/>
   <soapenv:Body>
      <bam:Insert>
         <!--Optional:-->
         <bam:dataObject>/bam_demo/my_demo/simplest</bam:dataObject>
         <!--Optional:-->
         <bam:xmlPayload>
             &lt;_simplest>
               &lt;_test>T1111&lt;/_test>
               &lt;_test2>T222222&lt;/_test2>
            &lt;/_simplest>
         </bam:xmlPayload>
      </bam:Insert>
   </soapenv:Body>
</soapenv:Envelope>

说明:

1、dataObject是你的数据对象定义的路径(类似文件路径的东西);

2、xmlPayload是你的数据对象,它是个需要注意的东西,它是xs:string类型的,所以,你不能把XML子元素放到它底下,如果你用编程的方式,那么你要把你的数据对象的XML形式转成字符串然后再设置给xmlPayload,一般的Web Service类包都会帮你把尖括号转掉;

3、xmlPayload里面的内容用到对象名和字段名的ID(注意,这里是ID,不是Name,因此都有一个下划线);

 

最后,因为安全的关系(服务器不允许随便谁都能修改系统内的数据),你调用这个Web Service时要设置用户名帐号(能登录BAM界面做操作的帐号,当然,默认的weblogic管理员的帐号是没问题的)。我用soap ui来测试的,应该是HTTP Basic的方式,而不是用SOAP Header的。

posted @ 2010-07-22 18:09  长须飘飘  阅读(443)  评论(0编辑  收藏  举报