Cordys BOP 4平台开发入门实战演练——Webservices开发(1)

0.文章导读

        本文档针对Cordys BOP-4 WS-AppServer基础功能进行验证和快速开发指导。(高级实践文档请参考后续文档)。

0.1.WS-AppServer概述

        WS-AppServer是Web Service Application Server的简称,是Cordys平台中基于数据库的Java业务逻辑开发层,其最根本的特性如下:

        (1)连接数据库

  • WS-Apps通过连接池访问数据库,可以从数据库表结构直接产生相应的Java代码,并发布成Web服务;
  • 提供事务处理(transaction)和查询(query)的API,便于面向数据库开发。

        (2)实现Java应用逻辑

  • 可以在自动产生的Java代码以外,编写独立的逻辑作为新的Java方法,并发布成Web服务。新的Java方法甚至可以不访问数据库,相当于一个Javacall;
  • 更重要的是,Ws-Apps提供一种事件驱动的编程模式,数据库事务、记录、字段的变化都可以有相应的event handler,可供嵌入各种逻辑。

        (3)与XForm紧密集成,可以用后端逻辑控制前端展现,比如某页面控件是否隐藏或只读,某个下拉列表有哪些选择,某个字段输入是否合法

  • 在WS-Apps中,具体的逻辑在相应event handler中实现;
  • 触发event handler,并按照结果进行展现,由Xform负责。具体的接口通过SOAP request/response中传递的额外信息描述。自己开发的connector,如果实现了这些接口,也可以达到同样的效果。

        (4)与Orchestrator的紧密集成

  • 对于WS-Apps管理的数据库对象模板,也可以定义Orchestrator的规则。这样,对于数据库记录的增删改,不但能触发Java编程的业务逻辑,也可以同时触发业务规则。可以分别针对性能和灵活性作优化,实现复杂的业务需求Orchestrator的全套Java API,都可以在Ws-AppServer中调用。

0.2.文档导读目录及结构

技术分享

0.3.WS-AppServer结构

        WS-AppServer组件相互依赖,主要由如下几部分组成:

  • Database Metadata
  • WS-AppServer Package
  • Object Schema
  • Java Model
  • Java Archive Package
  • Web Service


1. Workspace的新建

技术分享

(1)在租户中新建Workspace

新建Workspace,如下图所示,填写“Name”,我这里新建名称是“Training_xiaoyw201503”。

技术分享

(2)为Workspace配置SVN

技术分享


技术分享


技术分享


技术分享

技术分享

2. WS-Appserver Container的配置

(1)System Resource Manager下,新建“Service Group”

(1.1)首先选择“System Resource Manager”

技术分享

(1.2)选择Application Connectors新建

Application Connectors链接点是WS-AppServer。

技术分享

(2)配置Service Group细节

技术分享

(3)配置Service Container细节

技术分享

(4)为WS-AppServer配置细项

技术分享

(4.1).配置数据库连接

技术分享


技术分享

(5).配置连接点Connection Point

技术分享


技术分享

手动启动新建Service Container

技术分享



3. DB Metadata的新建

技术分享

通常在项目中建立如下文件夹:

WEB

Java

DB Meterdata

BPM

Web Service

WS-AppServer Packeage

技术分享

(1)在DB Meterdata上,点击鼠标右键,如下图操作,新建DB Meterdata。

技术分享

上图中,第4步输入“data”是为了快速查询对象,鼠标点击“Database Metadata”,配置数据库链接。

技术分享

如上图所示,输入“Database Metadata”名称为“xiaoyw Database Metadata”,WS-AppServer Service选择新建的“test_xiaoyw” Service Container(数据库链接)。

接着,选择数据源,通过鼠标点击“Retrieve all tables”可以检索所以数据库表,也可以通过中间的Search in database输入框检索,输入“*”,也是表示全部表的检索,如果检索某个或某些表,直接输入名称或部分,再鼠标点击“Search in database”按钮查询检索即可。

技术分享

按上图所示,选中dept、test_zss表,使用按钮“>”转移到右侧。

技术分享


4. 基于WS-Appserver的开发和使用

(1)新建WS-AppServer Packeage


技术分享


技术分享

(2)基于新建的WS-AppServer生成Java源代码、Jar包


技术分享

在上图中,鼠标点击图标技术分享,弹出下图所示窗口“Update Packeage from Database Metadata”,从数据库对象“Select Database Matadata”中选择“xiaoyw Database Metadata”。

技术分享


技术分享

在上图中选择表dept、test_zss,鼠标点击“Update”按钮。

技术分享

按上图,通过选择框来选择由Cordys平台生成所需get方法。


技术分享

按上图,通过Cordys平台生成Java及其JAR包代码,鼠标点击技术分享图标,弹出如下图所示。

技术分享

按上图所示,先选择数据表对象dept、test_zss,再鼠标点击图中下部按钮“Generate”,生成Java代码。如下图所示,通过操作界面页底,鼠标点击“Workspace Documents”页面来回看Java代码。

技术分享

技术分享

上图展示出生成Java代码。


(3)基于新建的WS-AppServer生成Webservices

技术分享

按上图所示,鼠标点击图标技术分享,由Cordys平台来自动生成Webservices代码。

技术分享

按上图所示,先通过选择框选择数据库表对象dept和test_zss,再鼠标点击“Next”按钮。

技术分享

按上图所示,先输入Web Service Name为“getDept”,然后调整Web Services Folder Name为“WebService”(图中第3步)。最后,鼠标点击“Generate”按钮。

通过操作界面页底,鼠标点击“Workspace Documents”页面来切换回看Webservices列表。

技术分享


(4)发布Java类到租户中(当前开发环境)

技术分享

注意,最好选中整个“Java”文件夹进行Java代码发布,按鼠标右键弹出上图发布菜单,鼠标点击“Publish to Organization”发布。

(5)发布Webservice到租户中

技术分享

按上图所示,选中整个WebService文件夹,击鼠标右键弹出如图所示菜单,鼠标点击“Publish to Organization”选项,发布Webservices。

(6)自动/手动绑定到Web Service Interfaces中

正常顺序操作时,Webservices自动绑定到Web Service Interfaces中,但是,本次实践过程中,频繁删除已经发布的Webservices,这样,会有Webservices残留。

技术分享

如上图所示,我所建立的“test_xiaoyw” Service Groups,通过鼠标右键弹出菜单选择“Properties”选项,可以看到先前所绑定大量Webservices,选中所有选择框,点击“红叉”操作,删除涉及到我的Webservices。

(7)手动绑定到Web Service Interfaces中

技术分享

在删除相应的Webservices后,鼠标点击“绿色加号”,如图所示弹出窗口,通过“-Select Organization/Package-”选择开发者所处的租户“mssoa”,从其海量Webservices中,选择我所开发的Webservices “getDept.xiaoyw...”,通过添加按钮“Add”,加入到下表中,最后鼠标点击“Done”按钮,完成绑定工作。

技术分享

按上图所示方式,重新启动Service Containers “xiaoyw_WS_AppServer”。

5.通过SVN使用Eclipse

代码导入到Eclipse中

(1)上传代码到SVN

为了保证代码最新及准确,请先更新代码到本地再提交。

技术分享

技术分享

技术分享

(2)在Eclipse中,检出代码(首次需要检出项目)

(2.1)从SVN中检出项目到Eclipse中新建项目

技术分享


技术分享


技术分享


(2.2)把Java代码导入src为源文件

技术分享


(2.3)配置Build Path资源(依赖类库和外部包)

技术分享


技术分享

(2.4)更新代码

技术分享


6. 单表的增删改查

(1)测试所发布的Webservices有效性,查询

在Webservice文件夹中要进行测试的Web service,按右键弹出窗口,选中“Test Web Service Operation”。(注:重建Webservices名称为getDept,自此不重新更新插图)

技术分享

如上图所示选中GetDeptObject,击鼠标右键弹出菜单,选择“Test Web Service Operation”进行测试。

技术分享

如上图所示,把SOAP Request中<ID>中的Parameter替换成“5”,再鼠标点击按钮“Invoke”,然后查看SOAP Response。

技术分享

(2)插入操作

技术分享

测试请求报文如下:

<SOAP:Envelope xmlns:SOAP="http://schemas.xmlsoap.org/soap/envelope/">
  <SOAP:Body>
    <UpdateDept xmlns="http://schemas.cordys.com/xiaoywWSAppServerPackage" reply="yes" commandUpdate="no" preserveSpace="no" batchUpdate="no">
      <tuple>
        <old>
          <dept qConstraint="0">
            <id>5</id>
            <name>xiaoyw</name>
          </dept>
        </old>
        <new>
          <dept qAccess="0" qConstraint="0" qInit="0" qValues="">
            <id>5</id>
            <name>xiaoyw20150329</name>
          </dept>
        </new>
      </tuple>
    </UpdateDept>
  </SOAP:Body>
</SOAP:Envelope>

技术分享

在测试查询结果如上图所示,id=5的更新name为xiaoyw20150329。

上面报文中<old>为删除操作,<new>为插入操作。


7.自定义Webservices开发

(1)自定义插入操作Webservice。

仍回到“xiaoywWSAppServerPackage” WS-AppServer Packeage操作窗口。

技术分享

按上图所示,选择dept表,击鼠标右键弹出如图所示菜单,选择“Add”菜单,再选“Method”选项。

(2)编辑新方法属性

技术分享

注:上图为旧图,Package是“xiaoywWSAppServerPackage”。方法命名为insertDept,插入操作无返回值,并选中“SOAP”选择框。


(3)为方法提供参数

技术分享

按上图所示操作,鼠标点击绿色“+”,增加输入参数,本例使用两个参数,分别为v_id和v_name,最后保存。


(4)接下来生产Java代码、Webservices。

技术分享

由于本次是新增方法,这样需要重写扩展类,需要选中“Overwrite Extension Classes”,也要选中相关的表,最后鼠标点击“Generate”按钮,生成Java代码。

技术分享

(注:此图代码中第一个参数设置时错误,更新为int)

如上图所示,新的Java代码中新增insertDept方法,需要在此编写自定义代码,新增内容如下所示:

    public static void insertDept(int v_id, String v_name)
    {
        // TODO implement body
    String sql="insert into dept (id,name) values("+v_id+",‘"+v_name+"‘)";
    DMLStatement DML = new DMLStatement(sql);
   
    DML.execute();
     
    }

并且需要导入:

    import com.cordys.cpc.bsf.busobject.DMLStatement;

上述代码编写,最好是Eclipse,以及配合SVN协调代码同步。

(5)发布Webservice

技术分享

由于Webservices已经存在,在上图中需要选中“Existing”,再通过弹出窗口选择Web Service Interface。

技术分享

如上图所示,在WebService中,可以看到新增“insertDept”方法,接着再对WebService进行整体发布。发布结果如下图所示。

技术分享

(6)测试插入操作

选中WebService中insertDept方法进行测试,测试报文如下。

<SOAP:Envelope xmlns:SOAP="http://schemas.xmlsoap.org/soap/envelope/">
  <SOAP:Body>
    <InsertDept xmlns="http://schemas.cordys.com/xiaoywWSAppServerPackage" preserveSpace="no" qAccess="0" qValues="">
      <v_id>51</v_id>
      <v_name>new xiaoyw</v_name>
    </InsertDept>
  </SOAP:Body>
</SOAP:Envelope>

再查询测试刚刚插入内容,结果如下,成功。技术分享

技术分享


草稿完成于2015年3月29日。

完善于2015年4月1日

参考:

《WS-AppServer Fundamental Practice in BOP-4》Cordys公司 2012年

郑重声明:本站内容如果来自互联网及其他传播媒体,其版权均属原媒体及文章作者所有。转载目的在于传递更多信息及用于网络分享,并不代表本站赞同其观点和对其真实性负责,也不构成任何其他建议。