Bpel实例:房屋贷款处理

应企业建模课业需求,记录一下用Bpel实现一个房屋贷款处理程序。本文档只记录操作,跳过配置过程,且不讲解原理。


房屋贷款处理业务用例

文档对原业务用例进行了一些简化,以集中于对流程操作的讲解。

  • 用户需要键入自己的姓名以申请贷款。
  • 接收到贷款请求后,系统将通过一个已有数据库验证用户提供的个人信息,获取用户已有的房屋数量。
  • 系统根据不同房屋数量给用户提供不同的贷款方案。
  • 如果贷款由于某种原因被拒绝,则生成一个显示拒绝原因的报告,并发送给用户。

工具清单

  • Eclipse Oxygen.3a Release (4.7.3a)
  • Bpel (Eclipse plugin)
  • Tomcat 7.0
  • Ode v1.x

服务的编码与部署

  1. 新建一个动态Web项目。

  2. 在工程的 src 目录下建两个包:ws.loan.bank和 ws.loan.search分别存放贷款方案类以及获取用户房屋数量的类。

  3. 编写服务类,根据用户的姓名获取相应的房屋数量。

    package ws.loan.search;public class GetHouseNumberService {//TODO link to the database.public int getHouseNumber(String name){//测试用例switch (name) {case "Emiya": return 1;case "Lora": return 2;case "Niggle": return 3;case "Water": return 4;default: return 0;}}
    }
    
  4. 编写相应的方案类

    Bank0:处理已有房屋数量为0的客户的贷款需求,有专门针对房屋数量为0的贷款首付和贷款利率。
    Bank1:处理已有房屋数量为1的客户的贷款需求,有专门针对房屋数量为1的贷款首付和贷款利率。
    Bank2:处理已有房屋数量为2的客户的贷款需求,有专门针对房屋数量为2的贷款首付和贷款利率。
    Bank3:处理已有房屋数量大于2的客户的贷款需求,有专门针对房屋数量大于2的贷款首付和贷款利率。

    下面只给出bank1的code。

    package ws.loan.bank;public class Bank1Service {public String bank1 () {return "名下有1套住房,首付比例30%,贷款利率为基准下浮10% ";}
    }
    
  5. 生成服务的wsdl文件

    在配置窗口里一路next即可,最后需要启动服务器。生成的wsdl文件存放于:

    所有服务类都需要这样逐个操作。

  6. 工程打包为war文件

    可能引发的错误: war文件导出失败

  7. 将war文件移动到tomcat安装目录的webapps下,打开服务器进行部署。

    生成了相应的文件夹,表示部署成功。

  8. 对生成的wsdl文件进行测试。

    出现Web服务浏览窗口:

    功能测试:

    测试正常,至此,这样一个服务就已经available了。依次测试其他所有服务后,就可以准备进行下一步了。


Bpel工程编写与测试

创建工程

  1. 创建工程

  2. 在工程内创建bpel process

    改为同步模版:

    创建在原工程的bpelContent文件夹下。

创建伙伴链接以及相应变量

所谓伙伴链接(Partner Link)简单点理解就是外部wsdl文件,相对一个bpel文件而言。这里要将在创建好的工程里将刚才部署好的服务整合到一起。

  1. 将要使用的wsdl文件拷贝到当前工程的bpelContent目录下
  2. 点开当前工程的bpel文件,在设计窗口右上栏创建伙伴链接

  3. 选中新建的伙伴链接,在Propties窗口的details里点击Browse..。

    浏览目录,将刚才拷贝进来的wsdl文件全部添加了。然后就可以在Matches面板里看到多了很多Service了。

  4. 将Service映射到相应的伙伴链接上去,在Matches面板上选中Service,OK后需要指定链接类型、伙伴角色(partner role),完毕后需要在Detail选项卡里调整Partner Role为刚才设置的role,以getHouseNumberService为例:

  5. 为各个伙伴链接创建_Request、_Response变量,以getHouseNumberService为例:

    在details里Browse…,在Filter勾选Messages,选中对应的消息,OK:

流程设计

流程文件即xxx.bpel, 成品如下:

十分抱歉,一时图快没有好好命名。下面简单讲下用到的各个模块:

输入输出模块略过,首先是assign模块,顾名思义就是执行赋值操作。选中任一assign模块,在其Properties的窗口的detail选项卡里可为其添加赋值语句。

wsdl文件配置

流程设计并保存完毕后,可以发现IDE已经自动更新了wsdl文件。这里只要修改一下项目部署位置:

改为项目部署位置即可:
http://localhost:8080/ode/processes/LoanRequestorProcess

项目部署与测试

  1. 右键当前项目的bpelContent目录,生成BPEL Deployment Descriptor文件,然后正确配置接口

  2. 启动ode服务器

  3. 将项目文件拷贝到…\tomcat\webapps\ode\WEB-INF\processes目录下
  4. 将bpelContent目录下的所有文件复制到上一层目录下
  5. 测试方法跟服务测试一样,右键wsdl文件进行test —— 可能存在的错误

错误清单

  • war文件导出失败 - source

    原因不明,我的应急方法是给将当前项目换个work place。
    
  • uninitializedVariable - source
  <faultstring xmlns:ns2e24D="http://docs.oasis-open.org/wsbpel/2.0/process/executable">ns2e24D:uninitializedVariable</faultstring> 
检查一下assign模块的变量是否被正确初始化。
  • selectionFailure - source
<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/">
- <soapenv:Body>
- <soapenv:Fault><faultcode xmlns:nsIDc08="http://schemas.xmlsoap.org/soap/envelope/">nsIDc08:Server</faultcode> <faultstring xmlns:ns2e24D="http://docs.oasis-open.org/wsbpel/2.0/process/executable">ns2e24D:selectionFailure</faultstring> <detail /> </soapenv:Fault></soapenv:Body></soapenv:Envelope>
检查一下assign模块的变量是否被正确指定。
  • EPR - source
- <soapenv:Fault xmlns:nsIDc08="http://schemas.xmlsoap.org/soap/envelope/"><faultcode>nsIDc08:Client</faultcode> <faultstring>The service cannot be found for the endpoint reference (EPR) http://localhost:8080/ode/processes/LoanRequestorProcess</faultstring>
- <detail>
检查一下deploy.xml文件是否正确配置。

相关资料

房屋贷款BPEL实例详解: http://dev.yesky.com/179/7754179.shtml
Bpel简介及实例总结: https://blog.csdn.net/qq_22642239/article/details/68062437


Bpel实例:贷款处理相关推荐

  1. SOA 最佳实践:BPEL 指南

    SOA 最佳实践:BPEL 指南 第 1 部分:面向服务的方法在业务规则开发中的运用 作者:Kevin Geminiuc 在 SOA 最佳实践:BPEL 指南的第一部分中,您将了解如何通过在开发和管理 ...

  2. BPEL 及其发展历程

    14.1 BPEL 及其发展历程 作为SOA 的关键技术,SDO 和SCA 分别为SOA 提供了数据模型和服务组件模型的定义标准.那么到目前为止,SOA 是否能解决用户所面临的所有业务问题呢?让我们先 ...

  3. BPEL4WS基础知识

    一.为什么选择BPEL4WS 可以使用行业范围内的规范来广告.发现和调用Web服务 开发人员和用户可以通过组合和订购可用的基本服务来解决复杂问题 服务组合允许服务重用并加速复杂的服务开发 提供一种表示 ...

  4. 前端开发基础知识汇总

    一.HTML 1.前言与常用标签 浏览器 内核 备注 IE Trident IE.猎豹安全.360极速浏览器.百度浏览器 firefox Gecko 可惜这几年已经没落了,打开速度慢.升级频繁.猪一样 ...

  5. Spring Cloud微服务系统架构的一些简单介绍和使用

    Spring Cloud 目录 特征 云原生应用程序 Spring Cloud上下文:应用程序上下文服务 引导应用程序上下文 应用程序上下文层次结构 改变Bootstrap的位置Properties ...

  6. ActiveBpel部署运行BPEL流程实例

    本文接收使用ActiveBpel开发,部署和运行BPEL流程实例.     本文的例子工程和服务工程请见附件. 1. 安装ActiveBpel5.0.2     要安装ActiveBpel5.0.2, ...

  7. 新人赛《金融风控贷款违约》避坑指南!

    ↑↑↑关注后"星标"Datawhale 每日干货 & 每月组队学习,不错过 Datawhale干货 作者:陶旭东,北京师范大学,Datawhale成员 一.背景介绍 本文以 ...

  8. 分享实录|区块链技术与智能合约入门(开发实例)

    2019独角兽企业重金招聘Python工程师标准>>> 1 什么是区块链 1.1白话讲解区块链 现在区块链特别火,可能大家都听说过区块链,听说过比特币,那到底什么是区块链? 前几天和 ...

  9. BizTalk学习笔记系列之二:实例说明如何使用BizTalk

    BizTalk学习笔记系列之二:实例说明如何使用BizTalk --.BizTalk学习笔记系列之二<?XML:NAMESPACE PREFIX = O /> Aaron.Gao,2006 ...

最新文章

  1. 爱逛街的爱购物的看看哦
  2. 余承东:华为 P50 系列无 5G 版本,但依然流畅
  3. OGG 同步报错 - TCP/IP error 111 (Connection refused)
  4. 内存数据库服务运营之路
  5. JavaScript学习笔记——BOM_window对象
  6. java中的关键字 保留字_java中的标识符、关键字、保留字
  7. Ireport的安装及使用
  8. 计算机论文与护理,快速护理论文范文
  9. CES现场直击 AI让你现场获得虚拟双胞胎
  10. iMeta | 南医大余光创组ggtree最新文章-系统发育树存储与可视化的数据结构
  11. c_predicted_api调用模型,初始化创建mxnet预测器不成功,句柄始终等于0
  12. shapely中几何对象
  13. 江门环境监测实验室通风工程设计
  14. 21 C++ 长度单位转换
  15. div显示在上层_怎样设置一个DIV在所有层的最上层,最上层DIV
  16. 来点基础的东西,关于浮点数的大小端转换以及浮点数的格式解析
  17. 网线连接网络有黄色感叹号
  18. 抖音运营从内容开始做起,抖音内容创作
  19. iOS图像处理(4)坐标变化
  20. Weex最新进展 - 交互和内核

热门文章

  1. 深度deepin安装惠普hp打印机
  2. 我妈问我12306购票时为啥需要图片验证码
  3. 打印质数的各种算法----来自酷壳(www.coolshell.com)
  4. VSCode插件、快捷键及代码调试技巧
  5. [“空头计划“第二期 ] QQ机器人(Python ^3.7 + 机器人框架NoneBot-beta2最新版本)实现
  6. python 删除excel空白行和空白列
  7. 随笔:Linux下查看声卡基本信息
  8. 视频教程-【吴刚】淘宝天猫网站设计初级入门标准视频教程-UI
  9. echarts柱状图加折线图
  10. easyui 实现表格字段排序