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

时间:2023-03-09 22:07:32
Cordys BOP 4平台开发入门实战演练——Webservices开发(0基础)

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基础)

watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQveGlhb3l3NzE=/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/Center" alt="">

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开发(0基础)

watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQveGlhb3l3NzE=/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/Center" alt="">

(1)在租户中新建Workspace

新建Workspace,例如以下图所看到的,填写“Name”。我这里新建名称是“Training_xiaoyw201503”。

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

(2)为Workspace配置SVN

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

watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQveGlhb3l3NzE=/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/Center" alt="">

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

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

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

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

2. WS-Appserver Container的配置

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

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

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

(1.2)选择Application Connectors新建

Application Connectors链接点是WS-AppServer。

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

(2)配置Service Group细节

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

(3)配置Service Container细节

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

(4)为WS-AppServer配置细项

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

watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQveGlhb3l3NzE=/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/Center" alt="">

(4.1).配置数据库连接

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

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

(5).配置连接点Connection Point

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

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

手动启动新建Service Container

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

3. DB Metadata的新建

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

通常在项目中建立例如以下目录:

WEB

Java

DB Meterdata

BPM

Web Service

WS-AppServer Packeage

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

watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQveGlhb3l3NzE=/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/Center" alt="">

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

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

watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQveGlhb3l3NzE=/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/Center" alt="">

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

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

watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQveGlhb3l3NzE=/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/Center" alt="">

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

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

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

watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQveGlhb3l3NzE=/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/Center" alt="">

按上图所看到的。选中dept、test_zss表。使用button“>”转移到右側。

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

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

(1)新建WS-AppServer Packeage

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

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

watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQveGlhb3l3NzE=/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/Center" alt="">

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

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

watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQveGlhb3l3NzE=/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/Center" alt="">

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

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

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

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

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

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

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

按上图,通过Cordys平台生成Java及其JAR包代码,鼠标点击Cordys BOP 4平台开发入门实战演练——Webservices开发(0基础)图标,弹出例如以下图所看到的。

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

按上图所看到的。先选择数据表对象dept、test_zss,再鼠标点击图中下部button“Generate”,生成Java代码。

例如以下图所看到的。通过操作界面页底。鼠标点击“Workspace Documents”页面来回看Java代码。

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

watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQveGlhb3l3NzE=/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/Center" alt="">

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

上图展示出生成Java代码。

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

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

按上图所看到的,鼠标点击图标Cordys BOP 4平台开发入门实战演练——Webservices开发(0基础)

watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQveGlhb3l3NzE=/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/Center" alt="">,由Cordys平台来自己主动生成Webservices代码。

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

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

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

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

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

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

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

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

watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQveGlhb3l3NzE=/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/Center" alt="">

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

(5)公布Webservice到租户中

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

按上图所看到的,选中整个WebService目录,击鼠标右键弹出如图所看到的菜单,鼠标点击“Publish to Organization”选项,公布Webservices。

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

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

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

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

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

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

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

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

watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQveGlhb3l3NzE=/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/Center" alt="">

按上图所看到的方式,又一次启动Service Containers “xiaoyw_WS_AppServer”。

5.通过SVN使用Eclipse

代码导入到Eclipse中

(1)上传代码到SVN

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

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

watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQveGlhb3l3NzE=/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/Center" alt="">

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

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

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

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

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

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

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

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

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

watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQveGlhb3l3NzE=/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/Center" alt="">

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

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

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

(2.4)更新代码

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

6. 单表的增删改查

(1)測试所公布的Webservices有效性,查询

在Webservice目录中要进行測试的Web service,按右键弹出窗体。选中“Test Web Service Operation”。(注:重建Webservices名称为getDept,自此不又一次更新插图)

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

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

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

watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQveGlhb3l3NzE=/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/Center" alt="">

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

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

(2)插入操作

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

watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQveGlhb3l3NzE=/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/Center" alt="">

測试请求报文例如以下:

<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开发(0基础)

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

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

7.自己定义Webservices开发

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

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

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

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

(2)编辑新方法属性

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

watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQveGlhb3l3NzE=/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/Center" alt="">

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

(3)为方法提供參数

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

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

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

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

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

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

watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQveGlhb3l3NzE=/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/Center" alt="">

(注:此图代码中第一个參数设置时错误,更新为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开发(0基础)

watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQveGlhb3l3NzE=/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/Center" alt="">

因为Webservices已经存在。在上图中须要选中“Existing”。再通过弹出窗体选择Web Service Interface。

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

watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQveGlhb3l3NzE=/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/Center" alt="">

如上图所看到的,在WebService中,能够看到新增“insertDept”方法,接着再对WebService进行总体公布。公布结果例如以下图所看到的。

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

(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开发(0基础)

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

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

完好于2015年4月1日

參考:

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