整个流程拉通方案.docx
- 文档编号:6079237
- 上传时间:2023-01-03
- 格式:DOCX
- 页数:14
- 大小:319.55KB
整个流程拉通方案.docx
《整个流程拉通方案.docx》由会员分享,可在线阅读,更多相关《整个流程拉通方案.docx(14页珍藏版)》请在冰豆网上搜索。
整个流程拉通方案
流程拉通方案
文档变更记录
序号
变更(+/-)说明
作者
版本号
日期
批准
1
流程拉通方案
方浩
1.0
2016.8.23
2
1.引言
1.1编写目的和范围
宇信emp集成dubbo,把各个业务做成接口通过dubbo对外提供服务。
对于开发人员此文档作为开发规范,在了解整个流程的情况下,在指定的路径包下进行编码开发。
对于业务人员帮助熟悉理解整个流程,更好的完成业务接口对接。
2.整体设计
2.1Web容器加载dubbo启动类
Tomcat启动时读取配置文件web.xml,web.xml所在目录:
/cmismd/WebContent/WEB-INF/web.xml;
在web里增加servlet
类Provider init()方类启动dubbo
2.2Dubbo生产接口
生产接口流程图:
Dubbo启动时加载参数配制:
applicationContextService.xml所在目录:
/cmismd/src/main/config/applicationContextService.xml
参数解析:
dubbo:
application:
提供方应用信息,用于计算依赖关系
dubbo:
registry:
使用注册中心暴露服务地址
dubbo:
protocol:
用dubbo协议在端口暴露服务
dubbo:
service:
声明需要暴露的服务接口
bean:
接口实现类
每开发一个接口需要在配制文件applicationContextService.xml把接口注册到zookeeper示例如下:
Demo:
生产接口开发目录结构:
Demo:
服务接口类:
目录:
/cmismd/src/main/java/com/yucheng/cmis/dubbo/service
定义接口示例:
ApplyNextTimeDubboService
packagecom.yucheng.cmis.dubbo.service;
importcom.yucheng.cmis.dubbo.ob.ApplyNextTimeReqMsgBO;
importcom.yucheng.cmis.dubbo.ob.ApplyNextTimeRespMsgBO;
/**
*
申请授信时间接口:
*@authoryusys
*@moduleIdcom.yucheng.cmis.dubbo.service
*@createDate2016-8-2310:
09:
59
*/
publicinterfaceApplyNextTimeDubboService{
/**
*再次申请授信时间
*/
publicApplyNextTimeRespMsgBOqueryApplyNextTime(ApplyNextTimeReqMsgBOapplyNextTimeReqMsgBO)throwsException;
}
服务接口实现类:
目录:
/cmismd/src/main/java/com/yucheng/cmis/dubbo/service/impl
接口实现类示例:
ApplyNextTimeDubboServiceImpl
packagecom.yucheng.cmis.dubbo.service.impl;
importjava.sql.Connection;
importjava.text.SimpleDateFormat;
importjava.util.Date;
importjava.util.HashMap;
importjava.util.Map;
importjavax.sql.DataSource;
importmons.lang.time.DateUtils;
importmon.utils.StringUtils;
importponent.factory.ComponentFactory;
importponent.factory.EMPFlowComponentFactory;
importcom.ecc.emp.core.Context;
importcom.ecc.emp.jdbc.ConnectionManager;
importcom.yucheng.cmis.dao.SqlClient;
importcom.yucheng.cmis.dubbo.ob.ApplyNextTimeReqMsgBO;
importcom.yucheng.cmis.dubbo.ob.ApplyNextTimeRespMsgBO;
importcom.yucheng.cmis.dubbo.service.ApplyNextTimeDubboService;
importcom.yucheng.cmis.retailloan.businessflow.lcapplLimit.domain.LcApplLimit;
/**
*
申请授信时间接口实现:
*@authoryusys
*@moduleIdcom.yucheng.cmis.dubbo.service
*@createDate2016-8-2310:
09:
59
*/
publicclassApplyNextTimeDubboServiceImplimplementsApplyNextTimeDubboService{
privateConnectionconn;
privateDataSourcedataSource;
/**
*再次申请授信时间实现方法
*/
@SuppressWarnings({"unchecked","rawtypes"})
publicApplyNextTimeRespMsgBOqueryApplyNextTime(ApplyNextTimeReqMsgBOapplyNextTimeReqMsgBO)
throwsException{
ApplyNextTimeRespMsgBOresponse=newApplyNextTimeRespMsgBO();
if(applyNextTimeReqMsgBO!
=null){
StringidNo=applyNextTimeReqMsgBO.getIdNo();//证件号码
StringidType=applyNextTimeReqMsgBO.getIdType();//证件类型
StringloanType=applyNextTimeReqMsgBO.getLoanType();//额度品种
//判断参数是否为空(默认为空)
if(StringUtils.isBlank(idNo)||StringUtils.isBlank(idType)||StringUtils.isBlank(loanType)){
//查询条件其中为空的情况
response.setNextTime(0L);
thrownewException("参数不为空");
}else{
Contextcontext=null;
try{
context=((EMPFlowComponentFactory)ComponentFactory.getComponentFactory("CMISBiz")).getContext(null,"rootCtx");
//初始化数据库连接
dataSource=(DataSource)context.getService("dataSource");
this.conn=ConnectionManager.getConnection(dataSource);
Mapmap=newHashMap();
map.put("idNo",idNo);
map.put("idType",idType);
map.put("loanType",loanType);
//查询数据库
LcApplLimitlimit=(LcApplLimit)SqlClient.queryFirst("queryLcApplLimitForSeq",map,conn);
SimpleDateFormatformat=newSimpleDateFormat("yyyy-MM-ddHH:
mm:
ss");
//判断是否存在该数据
if(limit!
=null){
StringlastTime=limit.getLastChgDt();//获取最后修改时间
Datedate=DateUtils.addDays(format.parse(lastTime),100);
response.setNextTime(date.getTime());
Stringd=format.format(date.getTime());
System.out.println("FormatToString(Date):
"+d);
//返回的是最后修改的时间+阀值(p_limit_typ这表中的某个字段)
}else{
//不存在改数据时,返回当前时间
Datedate=newDate();
response.setNextTime(date.getTime());
Stringd=format.format(date.getTime());
System.out.println("FormatToString(Date):
"+d);
}
}catch(Exceptione){
e.printStackTrace();
}finally{
if(this.conn==null){
this.conn.close();//关闭连接
}
}
}
}
returnresponse;
}
}
服务接口javabeen:
目录:
/cmismd/src/main/java/com/yucheng/cmis/dubbo/ob
javabeen示例:
ApplyNextTimeReqMsgBO
packagecom.yucheng.cmis.dubbo.ob;
importjava.io.Serializable;
/**
*
申请授信时间接口javabeen:
*@authoryusys
*@moduleIdcom.yucheng.cmis.dubbo.service
*@createDate2016-8-2310:
09:
59
*/
publicclassApplyNextTimeReqMsgBOimplementsSerializable{
privatestaticfinallongserialVersionUID=1L;
privateStringidType;//证件类型
privateStringidNo;//证件号码
privateStringloanType;//额度类型
publicStringgetIdType(){
returnidType;
}
publicvoidsetIdType(StringidType){
this.idType=idType;
}
publicStringgetIdNo(){
returnidNo;
}
publicvoidsetIdNo(StringidNo){
this.idNo=idNo;
}
publicStringgetLoanType(){
returnloanType;
}
publicvoidsetLoanType(StringloanType){
this.loanType=loanType;
}
publicstaticlonggetSerialversionuid(){
returnserialVersionUID;
}
}
2.3Dubbo消费接口
消费接口流程图:
消费方调用接口时加载配制文件:
applicationContextConsumer.xml所在目录:
/cmismd/src/main/config/applicationContextConsumer.xml
参数解析:
dubbo:
application:
消费方应用名,用于计算依赖关系,不是匹配条件,不要与提供方一样
dubbo:
registry:
使用注册中心暴露发现服务地址
dubbo:
reference:
生成远程服务代理,可以像使用本地bean一样使用demoService
每调用一个接口需要在配制文件applicationContextConsumer.xml进行配制:
Demo:
消费接口开发目录结构:
Demo:
消费共用接口类:
目录:
/cmismd/src/main/java/com/yucheng/cmis/dubbo/service
定义接口示例:
ApplyNextTimeDubboService
packagecom.yucheng.cmis.dubbo.service;
importcom.yucheng.cmis.dubbo.ob.ApplyNextTimeReqMsgBO;
importcom.yucheng.cmis.dubbo.ob.ApplyNextTimeRespMsgBO;
/**
*
申请授信时间接口:
*@authoryusys
*@moduleIdcom.yucheng.cmis.dubbo.service
*@createDate2016-8-2310:
09:
59
*/
publicinterfaceApplyNextTimeDubboService{
/**
*再次申请授信时间
*/
publicApplyNextTimeRespMsgBOqueryApplyNextTime(ApplyNextTimeReqMsgBOapplyNextTimeReqMsgBO)throwsException;
}
消费接口调用类:
目录:
/cmismd/src/main/java/com/yucheng/cmis/dubbo/connect
消费接口调用示例:
ApplyNextTimeDubboConsumer
packagecom.yucheng.cmis.dubbo.connect;
importorg.springframework.context.support.ClassPathXmlApplicationContext;
importcom.yucheng.cmis.dubbo.service.ApplyNextTimeDubboService;
importcom.yucheng.cmis.dubbo.util.DubboSpringUtil;
/**
*
dubbo接口调用测试类:
*@authoryusys
*@moduleIdcom.yucheng.cmis.dubbo.service
*@createDate2016-8-2310:
09:
59
*/
publicclassApplyNextTimeDubboConsumer{
publicstaticvoidmain(String[]args)throwsException{
ClassPathXmlApplicationContextcontext=newClassPathXmlApplicationContext(
newString[]{""});
context.start();
ApplyNextTimeDubboServiceservice=(ApplyNextTimeDubboService)DubboSpringUtil.getInstance().getBean("applyNextTimeDubboService");
//具体调用方法
}
}
消旨接口共用javabeen:
目录:
/cmismd/src/main/java/com/yucheng/cmis/dubbo/ob
javabeen示例:
ApplyNextTimeReqMsgBO
packagecom.yucheng.cmis.dubbo.ob;
importjava.io.Serializable;
/**
*
申请授信时间接口javabeen:
*@authoryusys
*@moduleIdcom.yucheng.cmis.dubbo.service
*@createDate2016-8-2310:
09:
59
*/
publicclassApplyNextTimeReqMsgBOimplementsSerializable{
privatestaticfinallongserialVersionUID=1L;
privateStringidType;//证件类型
privateStringidNo;//证件号码
privateStringloanType;//额度类型
publicStringgetIdType(){
returnidType;
}
publicvoidsetIdType(StringidType){
this.idType=idType;
}
publicStringgetIdNo(){
returnidNo;
}
publicvoidsetIdNo(StringidNo){
this.idNo=idNo;
}
publicStringgetLoanType(){
returnloanType;
}
publicvoidsetLoanType(StringloanType){
this.loanType=loanType;
}
publicstaticlonggetSerialversionuid(){
returnserialVersionUID;
}
}
3.其它项目调用接口服务
其它项目调用接口,开发时直接共用的接口包和javabeen,然后如消费接口一样在配制调用接口。
具体开发过程和2.3Dubbo消费接口一致。
上线时把共用接口和共用javabeen打成jar包形式使用。
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 整个 流程 方案