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

时间:2022-12-08 19:38:19

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.文档导读目录及结构

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

0.3.WS-AppServer结构

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

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


1. Workspace的新建

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

(1)在租户中新建Workspace

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

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

(2)为Workspace配置SVN

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


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


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


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

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

2. WS-Appserver Container的配置

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

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

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

(1.2)选择Application Connectors新建

Application Connectors链接点是WS-AppServer。

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

(2)配置Service Group细节

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

(3)配置Service Container细节

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

(4)为WS-AppServer配置细项

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

(4.1).配置数据库连接

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


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

(5).配置连接点Connection Point

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


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

手动启动新建Service Container

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



3. DB Metadata的新建

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

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

WEB

Java

DB Meterdata

BPM

Web Service

WS-AppServer Packeage

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

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

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

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

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

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

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

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

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

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


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

(1)新建WS-AppServer Packeage


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


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

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


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

在上图中,鼠标点击图标Cordys BOP 4平台开发入门实战演练——Webservices开发(初级),弹出下图所示窗口“Update Packeage from Database Metadata”,从数据库对象“Select Database Matadata”中选择“xiaoyw Database Metadata”。

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


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

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

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

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


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

按上图,通过Cordys平台生成Java及其JAR包代码,鼠标点击Cordys BOP 4平台开发入门实战演练——Webservices开发(初级)图标,弹出如下图所示。

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

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

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

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

上图展示出生成Java代码。


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

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

按上图所示,鼠标点击图标Cordys BOP 4平台开发入门实战演练——Webservices开发(初级),由Cordys平台来自动生成Webservices代码。

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

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

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

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

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

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


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

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

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

(5)发布Webservice到租户中

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

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

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

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

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

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

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

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

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

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

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

5.通过SVN使用Eclipse

代码导入到Eclipse中

(1)上传代码到SVN

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

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

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

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

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

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

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


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


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


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

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


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

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


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

(2.4)更新代码

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


6. 单表的增删改查

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

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

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

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

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

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

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

(2)插入操作

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

测试请求报文如下:

<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>

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

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

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


7.自定义Webservices开发

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

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

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

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

(2)编辑新方法属性

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

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


(3)为方法提供参数

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

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


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

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

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

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

(注:此图代码中第一个参数设置时错误,更新为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

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

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

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

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

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

(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>

再查询测试刚刚插入内容,结果如下,成功。Cordys BOP 4平台开发入门实战演练——Webservices开发(初级)

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


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

完善于2015年4月1日

参考:

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