蓝凌V16.0产品开发手册------蓝凌EKP二次开发资料大全 完整蓝凌二次开发资料 蓝凌 EKP开发实战教程 蓝凌OA二次开发培训资料大全

  1. 文档目的    更多开发资料请查阅

本文档用于描述蓝凌V16产品架构变更及新增机制的开发部署规范及要求,以方便开发人员快速使用新版本提供的能力,文档面向的主要人群为java开发人员。

  1. 开发部署说明
    1. 新增开发规约
        1. 以及日志框架变化

SLF4J + Logback

原因:统一日志门面,logback日志比log4j更新,写日志的效率更高,更友好、更稳定;

升级后请按照日志书写格式打印日志;

${project}src/Logback.xml日志路径, ${project}src/log4j.properties文件已删除;

配置EKP 输出日志路径

之前不规范书写例子:

1.logger.info(curTimeItem);

2.import java.util.logging.Logger;

3.java.util.logging.LoggerFactory.getLogger(SearcherService2WSAPI.class.getName())

                .log(java.util.logging.Level.INFO,

                     "Can not initialize the default wsdl from {0}", "file:webcontent/wsdl/SearcherServiceWSAPI2.wsdl");

4.log.error(e) e为Exception e,现在是log.error(String),应该是:log.error(“xxxx {}”,e);

5.org.slf4j.LoggerFactory.getLogger(FsBaseImageParsePools.class.getName()).log(Level.SEVERE, null,ex);

        1. Hibernate 开发规范
 参数占位符

蓝凌V16.0产品开发手册------蓝凌EKP二次开发资料大全 完整蓝凌二次开发资料 蓝凌 EKP开发实战教程 蓝凌OA二次开发培训资料大全_第1张图片

 

 HQL级联对象查询

蓝凌V16.0产品开发手册------蓝凌EKP二次开发资料大全 完整蓝凌二次开发资料 蓝凌 EKP开发实战教程 蓝凌OA二次开发培训资料大全_第2张图片 

 

 自我关联表HQL

蓝凌V16.0产品开发手册------蓝凌EKP二次开发资料大全 完整蓝凌二次开发资料 蓝凌 EKP开发实战教程 蓝凌OA二次开发培训资料大全_第3张图片

 

 多对多条件为对象情况 *

蓝凌V16.0产品开发手册------蓝凌EKP二次开发资料大全 完整蓝凌二次开发资料 蓝凌 EKP开发实战教程 蓝凌OA二次开发培训资料大全_第4张图片

 

获取Hibernate 的 session

*Dao 中获取加方法,直接 super.getSession(),实际上获取到是线程绑定事务的session, 调的是getSessionFactory().getCurrentSession();

在线程中获取 Hibernate 的 session 需要加事务;

其他地方获取 session :

KmssSessionFactoryProxy kmssSessionFactoryProxy =       (KmssSessionFactoryProxy)SpringBeanUtil.getApplicationContext().getBean("sessionFactory");

Session session = kmssSessionFactoryProxy.openSession();

获取 hibernate 其他信息可以通过类src/com/landray/kmss/sys/hibernate/spi/HibernateWrapper.java

HibernateTemplate.saveOrUpdateAll()废除,解决方式:使用 com.landray.kmss.sys.hibernate.spi.HibernateWrapper.saveOrUpdateAll 替换

获取数据库连接通过类 src/com/landray/kmss/sys/hibernate/spi/ConnectionWrapper.java,获取到connection 使用后,记得关闭。

获取 Hibernate 的 Connection需要加事务

蓝凌V16.0产品开发手册------蓝凌EKP二次开发资料大全 完整蓝凌二次开发资料 蓝凌 EKP开发实战教程 蓝凌OA二次开发培训资料大全_第5张图片

 

 HQL 查询语句的问题 - 如何定位?

如果是报HQL 语法错误,可以通过访问EKP链接来检查HQL是否正确,修正后再次提交检查

http://localhost:8080/ekp/trans/to_sql?hql=你的HQL,提交翻译时HQL不能带占位符,

通过打断点,打再这三个类:KmssASTQueryTranslatorFactory , HQLConverTool ,HQLQueryPlan,QueryPlanCache

  • KmssASTQueryTranslatorFactory 这个是HQL翻译工程类,用来创建QueryTranslatorImpl
  • HQLConverTool 是做之前HQL的兼容性转换
  • HQLQueryPlan 可以查看HQL翻译出来的SQL
  • QueryPlanCache 可以查看HQL是否是从Hibernate缓存取

        1. Spring 注入循环依赖问题

Spring 注入循环依赖问题,报异常:FactoryBean which is currently in creation returned null from getObject

例子:/src/com/landray/kmss/kms/reminder/service/spring/KmsReminderDetailServiceImp.java

需要解除EKP 启动的时候 spring.xml 依赖注入,修改为运行时硬编码方式初始化实例:

 

        1. 关于Spring-Session的开发规约

spring-session 升级,存储策略为Redis存储,升级后,EKP中的HttpSession对象在每次请求开始时从Redis读取创建会话,请求结束时将当前会话信息存储到Redis,应酌情避免将非会话相关的内容存储到httpSession中;详细请参见附件

蓝凌V16.0产品开发手册------蓝凌EKP二次开发资料大全 完整蓝凌二次开发资料 蓝凌 EKP开发实战教程 蓝凌OA二次开发培训资料大全_第6张图片

 

        1. 其他规约
  1. 访问资源,URL不规范,比如:URL带有双//斜线;
  2. 注意升级Hibernate 后,有些场景的HQL使用 INNER JOIN 查询满足不了业务,需要修改为LEFT JOIN;

  1. 日志规范,使用 org.slf4j.Logger + org.slf4j.LoggerFactory 打印日志;或者使用ExceptionUtils.printRootCauseStackTrace(e)方式打印异常堆栈;
  2. 尽量不要使用 System.out.print()/println()
  3. 不能使用log4j等其他日志框架;

    1. E签宝部署说明

签署能力新增了E签宝本地化签署和E签宝SaaS签署两种能力,在ELEC-008模块中对ELEC-009的上传合同接口,下载合同接口,获取合同签署链接接口进行实现。再由ELEC-008模块进行具体服务能力(本地化或SaaS)的调用。业务模块仍旧通过ELEC-009的相关接口调用签署服务。

具体要求如下:

      1. 模块关联

蓝凌V16.0产品开发手册------蓝凌EKP二次开发资料大全 完整蓝凌二次开发资料 蓝凌 EKP开发实战教程 蓝凌OA二次开发培训资料大全_第7张图片

 

      1. 本地化服务配置规范

根据模块关联,需要组装ELEC-030、ELEC-008、ELEC-009、ELEC-012模块。

sys后台-集成管理-电子合同集成-E签宝,打开配置开关,输入接口相关配置信息并保存。如图: sys后台-组织权限管理-基础设置-自定义设置-人员卡片自定义

 蓝凌V16.0产品开发手册------蓝凌EKP二次开发资料大全 完整蓝凌二次开发资料 蓝凌 EKP开发实战教程 蓝凌OA二次开发培训资料大全_第8张图片

 蓝凌V16.0产品开发手册------蓝凌EKP二次开发资料大全 完整蓝凌二次开发资料 蓝凌 EKP开发实战教程 蓝凌OA二次开发培训资料大全_第9张图片

新建证件类型字段(请与人员同步字段设置中取名保持一致,枚举类型严格按照图中枚举)

蓝凌V16.0产品开发手册------蓝凌EKP二次开发资料大全 完整蓝凌二次开发资料 蓝凌 EKP开发实战教程 蓝凌OA二次开发培训资料大全_第10张图片 

 

新建证件号码字段(请与人员同步字段设置中取名保持一致)

蓝凌V16.0产品开发手册------蓝凌EKP二次开发资料大全 完整蓝凌二次开发资料 蓝凌 EKP开发实战教程 蓝凌OA二次开发培训资料大全_第11张图片

 

sys后台-组织权限管理-基础设置-自定义设置-机构卡片自定义

新建证件类型字段(请与机构同步字段设置中取名保持一致,枚举类型严格按照图中枚举)

蓝凌V16.0产品开发手册------蓝凌EKP二次开发资料大全 完整蓝凌二次开发资料 蓝凌 EKP开发实战教程 蓝凌OA二次开发培训资料大全_第12张图片 

 

新建证件号码字段(请与机构同步字段设置中取名保持一致)

蓝凌V16.0产品开发手册------蓝凌EKP二次开发资料大全 完整蓝凌二次开发资料 蓝凌 EKP开发实战教程 蓝凌OA二次开发培训资料大全_第13张图片

 

      1. 本地化服务开发规范

1、 业务模块调用发起签署的接口

2、 业务模块配置扩展点plugin.xml,并添加一个excute方法处理回调事件。

通过扩展点调用接口:

蓝凌V16.0产品开发手册------蓝凌EKP二次开发资料大全 完整蓝凌二次开发资料 蓝凌 EKP开发实战教程 蓝凌OA二次开发培训资料大全_第14张图片

 蓝凌V16.0产品开发手册------蓝凌EKP二次开发资料大全 完整蓝凌二次开发资料 蓝凌 EKP开发实战教程 蓝凌OA二次开发培训资料大全_第15张图片

 

uploadContract这个方法需要封装两个入参,其中,contractSignInfo是签署任务的主要信息,包括签署文件、签署人员列表等信息,additionalInfo是附加信息。

additionalInfo的Keyword1和Keyword2分别传入业务模块的modelName和modelId,用于后面回调定位。

具体参数可以参考合同管理模块,KmAgreementEqbSignServiceImp. send ()。

回调处理:

修改plugin.xml;添加回调的Bean配置,如下,修改bean的value、receiver的value(与附加信息additionalInfo的Keyword1值保持一致)其他不改:

   

        model="com.landray.kmss.elec.device.client.IElecChannelRequestMessage">

       convertor">

          

           eqb" />

          

      

   

并在spring.xml注册该bean。

增加一个service类实现IElecChannelAnsyService接口,重写execute方法。其中,入参即为E签宝返回的相关信息,是个json数据,包含了触发回调的签署人和签署状态,签署文件,下一签署人等信息。详细参数信息可查看E签宝接口文档:

{

    "modelName": "",

    "modelId": "",

    "reqBody": {

        "action": "SIGN_FLOW_FINISH",

        "createTime": "2020-09-21 19:17:29",

        "endTime": "2020-09-21 19:17:42",

        "flowId": 54991,

        "flowType": "Common",

        "resultDescription": "签署成功",

        "status": 2,

        "finishDocUrlBeans": [

            {

                "docFileKey": "$3da1d7b8-d669-4ce0-8d30-341ed9e9ed8b$3299301402",

                "downloadDocUrl": "https://testesignpro.tsign.cn:6443/esignproweb/rest/filesystem/operation/download?fileKey=$4ef50af7-af89-45ca-952c-9a5a088fcbcb$3547147904&signature=Jrq%2FJ4KCKCx1uwDqCn%2F0VMRso8o%3D%0A&expire=1603279062323",

                "finishFileKey": "$4ef50af7-af89-45ca-952c-9a5a088fcbcb$3547147904"

            },

            {

                "docFileKey": "$3da1d7b8-d669-4ce0-8d30-341ed9e9ed8b$3299301402",

                "downloadDocUrl": "https://testesignpro.tsign.cn:6443/esignproweb/rest/filesystem/operation/download?fileKey=$4ef50af7-af89-45ca-952c-9a5a088fcbcb$3547147904&signature=Jrq%2FJ4KCKCx1uwDqCn%2F0VMRso8o%3D%0A&expire=1603279062323",

                "finishFileKey": "$4ef50af7-af89-45ca-952c-9a5a088fcbcb$3547147904"

            }

        ],

        "accountInfo": {

            "accountId": "e80c2525-9b48-4151-9b3d-1edd4a6e5b98",

            "accountUid": "lhuser002",

            "name": "张二",

            "type": 1

        },

        "waitingToSignAccount": [

            {

                "accountId": "e80c2525-9b48-4151-9b3d-1edd4a6e5b98",

                "accountUid": "lhuser002",

                "name": "张二",

                "type": 1

            }

        ]

    }

}

创建签署流程时,会把前面配置的回调地址作为签署流程的回调地址传入。业务模块可以根据入参判断是哪个事件并做相应处理。回调处理可以参考合同管理模块,KmAgreementEqbSignServiceImp.execute方法。

你可能感兴趣的:(蓝凌,java,eclipse)