用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>
<_simplest>
<_test>T1111</_test>
<_test2>T222222</_test2>
</_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的。