前言
学习情况总结
一、Inbound WebService的创建
一个Web Service是 一个部署在网络上的业务逻辑,可以通过某种网络协议进行访问。
a) 通过WSDL【Web Service Description Language】来指定一个WS
b) 通过SOAP【Simple Object Access Protocol】来传输
c) 通过XML来存储内容
以上三个是WS的核心技术。
WSDL由发布者提供,它提供了WS的各种操作、操作的输入输出参数结构以及与WS通讯的机制。
一个WSDL文件被发布成一个XML的实例。
SOAP是一个轻量级的协议,它用于在分布式环境下进行结构化数据的交换传递。服务使用者按照一定的格式提交请求【Request】,服务提供者提供响应【Response】。
总结:通过WSDL、SOAP、XML技术来实现接口
1.对应关系
如上图所示:IO对应BO,IC对应BC,ICF对应BCF
如上图所示:WS和BS一一对应。
2.通过BS创建Inbound WebService(入栈WS)
创建IO
-
通过向导新建New Object->EAI->Integration Object
-
选择相应的Project,选择Source System为:EAI Siebel Wizard
-
选择BC、Include Component、Container Naming、Lower CamelCase for XML Tags
-
不发布,取消勾选Deploy
-
为需要的BC创建Key,然后创建Key Field字段(?作用)
创建BS
-
选择Class为CSSEAIDataSyncService,勾选External Use(Display Name在创建Inbound的时候选择BS的时候会用到)
-
为BS创建两条User Property,
Application Services Interface:Y
Internal Integration Object:NGC Order Header BO【上述建立的IO名称】
-
创建方法和以及参数,复杂参数的类型要选择IO型,再选择刚才创建的IO。标准方法QueryById,参数要按照下图
-
其他标准方法以及参数如下
创建Inbound WebService
- 浏览器中:管理-Web服务->入站Web服务,新建一条记录,命名空间填http://siebel.com/CustomUI,名称是IO名
- 服务端口新建一条记录,名称是 BS名称 ,服务名称是BS的 Display Name,实施类型选 业务服务 ,地址http://localhost:8888/eai_chs/start.swe?SWEExtSource=WebService&SWEExtCmd=Execute&WSSOAP=1,联编SOAP_RPC_LITERAL
- 操作里选择创建的方法,验证类型填无,名称需要加个前缀(否则影响唯一性验证)
- 将界面拉到最上方,清除缓存,生成WSDL,打开文档自动生成器,导入刚才的WSDL,生成新WSDL
测试
-
使用SoapUI测试接口,创建Project,选择新生成的带头结构的WSDL
-
选择需要测试的方法
- 修改endpoint为建立的Inbound WebService服务端口的地址,此处是http://localhost:8888/eai_chs/start.swe?SWEExtSource=WebService&SWEExtCmd=Execute&WSSOAP=1
- 修改XML的参数,并运行测试,头文件要填相应的账号密码
- 观察报文,200 OK代表无误,有数据传回,或者直接看返回值
-
-
-
-
二、Outbound WebService的调用
1.调用OA接口实例
-
找到要调用的BS,查找需要调用的方法和参数,找到对应的IO
-
找到IO的IC和IC Field,记录相应字段,在代码里组合
var psIn = TheApplication().NewPropertySet();
var psOut = TheApplication().NewPropertySet();
//IO层
var siebelMsg = TheApplication().NewPropertySet();
siebelMsg.SetType("getUserIdRequest:parameters");//BS方法的参数名
siebelMsg.SetProperty("MessageId","1");
siebelMsg.SetProperty("MessageType","Integration Object");
siebelMsg.SetProperty("IntObjectName","getUserId");//IO名
siebelMsg.SetProperty("IntObjectFormat","Siebel Hierarchical");//对应storage type
//第一层
//构造IC对象数组
var ListOfgetUserId = TheApplication().NewPropertySet();
ListOfgetUserId.SetType("ListOfgetUserId");
var getUserId = TheApplication().NewPropertySet();
getUserId.SetType("getUserId");//IC名
getUserId.SetProperty("in0","loginid2");//参数名、参数值
getUserId.SetProperty("in1",Login);//参数名、参数值
//构造IO
//固定步骤
ListOfgetUserId.AddChild(getUserId);
siebelMsg.AddChild(ListOfgetUserId);
psIn.AddChild(siebelMsg);
//参数准备完毕,开始调用
bsOAWorkflow.InvokeMethod("getUserId",psIn,psOut);
三、接口日志的记录
//接口日志对象
var bsXML=TheApplication().GetService("EAI XML Converter");
var psInxml=TheApplication().NewPropertySet();
var psOutxml=TheApplication().NewPropertySet();
var bsSys=TheApplication().GetService("NGC System Service");
var sLogId = "";
//接口入参日志
bsXML.InvokeMethod("PropSetToXML",psIn,psInxml);
sLogId = bsSys.Log("接口显示名" , "" , "Running" , "" , psInxml.GetValue().substring(0,4000) , "");
//此处调用接口
//bsZCRM_ZZ.InvokeMethod("ZcrmWtc",psIn,psOut);
//接口出参日志
bsXML.InvokeMethod("PropSetToXML",psOut,psOutxml);
bsSys.Log("接口显示名" , sLogId , "Success" , psOutxml.GetValue().substring(0,16349) , psInxml.GetValue().substring(0,4000) ,"");
catch(e)
{
//接口异常日志
bsSys.Log("拉取未投产数据" , sLogId , "Error" , e.message.substring(0,16349) , psInxml.GetValue().substring(0,4000) , "" );
throw e.message;
}
四、REST API的使用
主要是移动端对BC、BS的调用接口
- 浏览器:系统管理->Rest集成,如果是调用BC:接口代码既BO的大写,BO、BC填写相应的名称;若果是调用BS,BO、BC不填只用填BS即可,方法分为标准方法和BS客户化方法,方法和字段分别填写方法和参数即可
五、数据批量导入的使用
- 配置模板文件TXT,示例如下:
BOName:Service Request,BCName:Service Request,Imdata1:Status:F,Imdata2:Account:P#Name,Imdata3:NGC All WOEG Amount:F,Imdata4:INS Product:F,Imdata5:Area:F,Imdata6:Sub-Area:F
斜体字符为自定义字段,指定BO、BC之后,配置要导入的字段普通字段和静态PK用 :F结尾,动态PK用**
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)