EAS客户现场开发经验总结

时间:2024.4.20

EAS客户现场开发经验总结

研发中心EAS开发部 杨中科

简介:这篇文章介绍了我在进行EAS客户现场开发时积累的一些经验,主要涉及到了现场开发调试环境的搭建、构建系统的建立等,还有现场开发的一些技术性问题。

一、 开发调试环境的搭建

1、代码查看

代码属于研发受控资源,因此除了小部分业务系统代码之外,大部分的框架代码和业务代码是无法带到开发现场的,这样在客户现场很难参考他人以及框架的代码,使得开发速度降低。不过客户开发现场的jar包基本没有混淆,所以可以通过反编译的方式查看源码。Java反编译的工具有很多,比如DJ Java Decompiler、jadclipse、Jode等等。我个人推荐大家使用Jode,因为它有一个eclipse的插件,可以在eclipse中直接反编译.class文件,十分方便,而且其反编译质量也非常高,基本接近于源码。

2、调试

使用反编译工具可以查看框架和业务系统的源码,但是反编译以后的代码只能查看,因为java的调试是以代码行号为标识进行的,而反编译以后的代码行号与源码是不一致的,所以就无法在反编译以后的代码上直接打断点调试。可以通过如下方式解决此问题:

(1) 在eclipse工程下建立一个新的源文件夹,比如命名为decompilesrc。

(2) 打开eclipse工程“Java构建路径”的“排序和导出”页签,将

decompilesrc文件夹移到boslib,easlib之前。

(3) 将您要调试的.class文件反编译,然后以java源文件的形式保存到

decompilesrc源文件夹下。

这样就可以正常的对代码进行调试了。但是有一些源码反编译以后是无法正确编译的,因为jode的反编译的时候将一些编译结果用JVM指令表示,例如将return语句反编译成Push、pop,将创建一个对象的new操作翻译成Push、push、swap、pop、pop,因此需要进行少量调整才能正确编译。

二、开发测试构建环境的建立

对于比较大的客户现场开发项目一般都会建立比较标准的开发测试流程,也就是与研发中心类似的流程:开发提交代码、构建人员构建打包部署到测试服务器、测试人员测试反馈。

(一)bug管理系统

为了便于bug的规范化管理,bug管理系统的使用是很必要的。网上有很多免费的或者开源的bug管理系统,比如Bugzila、BugFree(国人开发的系统)、URTrack等等。

(二)构建系统

EAS系统的构建包括如下几个主要步骤:发布元数据、编译代码、打包元数据、打包二进制代码、签名代码包,部署到服务器。

手动进行元数据打包、代码打包签名是十分机械性的重复工作,而且很容易

出错。如果采用批处理的方式则会大大加快构建的速度。最简单的方式可以写bat批处理文件,或者使用ant,python之类的工具。我这里以ant为例为大家介绍一下,其他方式也都与此类似。

这个ant脚本是我在湖南烟草永州现场写的一个构建脚本(经过了简化): <?xml version="1.0" encoding="GB2312" ?>

<project name="tobacco" default="init">

<property name="class.root" value="W:\workspace\eas\classes\"/>

<property name="meta.root" value="W:\eas\Server\server\deploy\metas\"/>

<property name="juanyanclass.src.dir" value="com\kingdee\eas\scm\hntobacco\" /> <property name="metadata.src.dir" value="com\kingdee\eas\scm\hntobacco\" />

<property name="juanyaclassjar.dest.dir" value="c:\tobacco.jar" />

<property name="metajar.dest.dir" value="c:\metas.jar" />

<property name="juanyaclassjarsign.dest.dir" value="c:\tobacco_signed.jar" />

<taskdef name="kingdeesignjar" classname="com.kingdee.bos.bim.ant.task.KingdeeSignTask"

classpath="bimant.jar"/>

<target name="init">

<echo>清除原有构建文件</echo>

<delete file="${juanyaclassjar.dest.dir}"/>

<delete file="${juanyaclassjarsign.dest.dir}"/>

<delete file="${metajar.dest.dir}"/>

<echo>开始打包代码</echo>

<jar basedir="${class.root}"

jarfile="${juanyaclassjar.dest.dir}" includes="${juanyanclass.src.dir}\**\*"/>

<echo>开始打包元数据</echo>

<jar basedir="${meta.root}" jarfile="${metajar.dest.dir}" includes="**\*"/> <echo>打包元数据完毕!</echo>

<copyfile src="${juanyaclassjar.dest.dir}" dest="${juanyaclassjarsign.dest.dir}"/>

<echo>开始签名</echo>

<kingdeesignjar jar="${juanyaclassjarsign.dest.dir}"/>

<input>打包完毕,回车退出...</input>

</target>

</project>

这个脚本的运行步骤就是:首先删除上次打包的内容,然后将eclipse编译后的class文件打包,将发布后的元数据打包成metas.jar,将打包后的class复制一份,然后对复制后的jar包签名(portal客户端使用,如果客户现场没有采用portal

方式登陆,则无需这一步)。

部署人员只要从cvs上同步代码(需要eclipse编译代码)、元数据,然后发布元数据(只发布客户化开发部分即可),运行此构建脚本,停止服务器,然后将构建出来的包部署到服务器相应目录下,然后重启服务器即可(第一次部署需要重新部署应用服务器)。

当然从cvs上同步代码、元数据,编译代码,发布元数据,停止服务器,部署包,重启服务器等操作都是可以写在脚本中的(发布元数据、启停服务器等操作可以使用bimant.jar中提供的Task来完成),对ant熟悉的同事可以将此脚本写的更自动化,这样部署人员只要运行一下脚本,所有的构建部署工作就会自动完成。

客户现场开发和在研发中心开发的一个重要不同之处就是必须考虑如何将客户化开发的部分构建到标准产品包中。代码jar包可以通过分包的方式解决,但是由于所有的元数据都放在metas.jar中,所以将客户化开发的内容融合到标准产品的metas.jar中就成了大问题。因为不仅要把客户化开发的元数据打包到metas.jar中,而且还要在entity_pkmapping.properties、facade_pkmapping.properties、com_kingdee_eas_base_botp.mdbview、com_kingdee_eas_base_codingrule.mdbview等文件中增加客户化开发的内容,这样如果手动去修改这些文件的话不仅难度大,而且很容易出错。而且一旦新的标准产品包到达现场以后又要重新修改这些文件。

我们可以借助BOSStudio的元数据发布功能解决此问题,借助BOSStudio的元数据发布功能会自动去更新这些文件。我们只要把metas.jar解压到一个路径下,然后把BOSStudio的元数据发布路径也指向这个路径。这样我们只要发布客户化开发部分,然后将构建脚本的打包元数据的路径指向此路径即可。当有标准产品新的metas.jar到现场后,只要将metas.jar重新解压到此路径,重新发布客户化开发部分即可。

(三)开发测试流程优化

在项目开发的前期,由于功能性、中断性bug比较多,如果在这个阶段测试要采用打包部署测试的方式会使得bug验证修改周期变长、测试服务器频繁重启、影响其他测试人员的测试,从而导致项目整体开发效率降低。因此在这个阶段我建议采用更高效的方式:如果测试人员的机器配置较好,可以在测试人员机器上安装开发环境,这样测试人员就可以立即验证开发人员修改的bug,甚至在需要的时候开发人员可以直接在测试人员机器上进行调试,加快bug的修改速度;如果测试人员的机器无法运行开发环境,那么可以采用PT方式登陆开发人员的机器,甚至对于验证耗时较短的bug可以直接在到开发人员的机器上去验证。

当然到了功能性、中断性bug明显减少的阶段,测试人员还是要回到测试服务器上去验证,这样不仅会做到开发、测试工作相对独立并行进行,而且也有助于发现更多用前一种方式无法发现的问题。

三、技术问题

(一)执行特定数据库方言sql的问题

在标准产品的开发中是严格禁止使用只有一种或部分数据库系统支持的特性的,但是客户化开发中使用的数据库系统通常是固定的。在一些情况下使用某些数据库的特性则可以大大加快项目进度。幸好KSQL为我们提供了一个很小但是很有用的功能:执行数据库方言。我们只要在sql语句前加注/*dialect*/,这

样KSQL就不会对此SQL进行翻译,而直接将此sql转交给数据库执行。这样就达到了我们想要达到的效果。

(二)在客户端直接执行sql的问题

由于现在机构数据的EAS技术体系的开发人员基本处于空白,所以对于如果项目开发中有机构的开发人员则可以采取一些变通措施来最大限度的发挥这些同事的作用。比如很多机构的同事以前都是习惯使用VB、Delphi等RAD工具进行开发或者是只熟悉Java+DAO这样的开发方式,他们习惯了直接在客户端写sql语句操纵数据库的方式,他们刚接触EAS这种分布式开发方式的时候会比较不适应,要他们在短期改变开发方式也是不实际的。我们可以建立一个facade,在这个facade中公布executeQuery(执行查询语句),executeSQL(执行无返回值的sql语句)这两个方法,这样开发人员就不需要ORM、EJB等这些知识就可以使用原有方式进行开发了。

当然这种方式必须要保证事务性并考虑并发操作等问题。

(三)开发数据库的选择

由于EAS是支持多数据库的,系统在数据库之间切换的代价非常小。所以对于比较大的客户现场开发项目我个人建议采用MS SQLServer进行开发,开发测试完成以后再切换到客户要求的数据库。

理由如下:

1、熟悉MS SQLServer的开发测试人员比熟悉其他数据库系统的人多,可以参考的参考资料也比较多,有利于提高开发速度。

2、MS SQLServer集成的开发用工具比较多,比如事件监听器、企业管理器、查询分析器等,而且易用性比较好。

3、MS SQLServer返回的错误信息也比较清晰易懂,有利于快速排错。

由于我参与过的客户化开发项目还比较少,因此上边说的有可能有疏漏与错误,希望各位前辈多多指教。


第二篇:Uasb调试经验总结


Uasb调试经验总结

1. 种泥的选择,个人比较认同书上写的污水处理厂厌氧消化污泥。接种量可以按厌氧容积的10%计算。污泥浓度60~70g(干污泥)/l,按80%的含水率计算,300~350kg/m3。有些书上写的30%的接种量,100g/l的污泥浓度。

2. 启动过程,低浓度有利于颗粒污泥的形成。Cod浓度至少在1000mg/l,不高于20xx/l启动初期间歇进水,在容积负荷0.5~2kgcod/m3.d期间,刚开始最好以略高于0.2kgcod/m3.d运行,HRT大于24小时,待cod去除率达到80%,再考虑增加负荷,按20%-30%的增幅增长,还是采用间歇进水,HRT保持不变,一直等到负荷到达2kgcod/m3.d,此后开始在此负荷下延长进水时间,直到24小时运行。上升流速低于0.5m/h。

3. 加入微量元素肥料,提供惰性载体如活性炭,璜化煤,膨润土和有机高分子絮凝剂有助于颗粒污泥的形成。

4. 在运行过程中,需要准备好纯碱或者小苏打,以防厌氧内碱度不足,水体酸化。

5. 对于VFA的测定,由于设备有限,需要仔细观察ph,尽量让ph维持在7.0左右,或者略高于7.0. 根据经验,ph很难维持在7,一般在6.2左右就很好了。

6. 有几个问题,对于低负荷运行时,究竟选择大流量短时间还是小流量长时间对颗粒污泥的形成有利需要探讨。

7. 在设计时,需对调节池采取“特殊”对待,既能满足一般调节池作用,又能在后期时采取临时措施,起到水解酸化池作用,换句话说采用 “水解酸化工艺+UASB”工艺,其实质时两段法的变相应用。水解酸化池的污泥来自好氧系统产生的剩余活性污泥,前提是变性。

8. UASB随着负荷的增加会出现轻质污泥的洗出,这种现象与污泥膨胀有关联。

更多相关推荐:
9月份客户开发总结

9月份销售总结9月份的工作主要是以开发新客户为主,其中包括发放9周年活动单页。前半个月的活动范围主要是公司周边的大厦,如:金城大厦、府琛广场、星北大厦、中创大厦、常高新科技园等。下半个月主要去了一些工业园,给一…

如何让开发大客户总结

听了付遥老师《如何开发大客户》的专题讲座,我懂得了“客户是企业的生命线”、“开发客户是企业运行的关键性工作”,讲座把如何开发大客户销售中所需的技能,对以往的经验和新的营销理论进行整合,以便更好的开展大客户销售活…

客户开发心得体会

加油站作为销售公司最主要的支撑点,是企业生存与发展的主要力量,而客户是加油站赖以生存的根本,是加油站这台发动机的燃料;加油站的销量要提升,效益要提高,客户开发就是唯一的手段,因此客户开发工作是加油站所有工作中的…

如何开发海外客户-总结篇

外贸新手必读如何开发海外客户总结篇外贸企业如何开拓海外市场找客户实践操做绝对有用面对国际市场希望集团刘永好的几句话说的不错开发国际市场首先你必须在国内形成有竞争力的产品核心竞争力首先有一个较好的机制比如在菲律宾...

客户开发案例分析

客户开发之案例分享范晓东一汽轿车一汽轿车是xx年新分给我的,当时我对这个客户也不是很了解,经询问此客户的原负责人王小波后才初步了解了一些此客户情况,他还把他所联系的客户办公室电话给了我,联系的结果是电话都通,就…

7种有效开发外贸客户方法(有总结的网站,可以看看)

7种开发业务的方法20xx08261716引用地址未提供标签目录网站amp网络使用技巧浏览字体大中小一参加展览会这是迄今为止最有效的出口营销方法效果因参展人员的策划能力和经验的不同而异参加展览会的作用有帮助企业...

新客户开发阶段汇总

新客户开发流程心得一客户寻找1客户资料的收集搜集渠道的整理和总结需思维开阔敏捷目前主要渠道百度文库百度搜索世界工厂网阿里巴巴网2潜在客户联系1步骤之一通过陌生电话拜访主要需培养高效的电话沟通能力声音语速表情精神...

非常实用的Ggoogle 与 B2B 结合开发客户心得

非常实用的Ggoogle与B2B结合开发客户心得今天来说说找客户的方法首先声明我是一个只上7个月班的菜鸟我把很多种方法一一去做了验证然后选出适合自己的找客户的方法我认为有两种主动和被动先说被动就是B2B包括免费...

加油站客户开发与维护策略建议

加油站客户开发与维护策略建议随着国内成品油市场的进一步开放对加油站客户的争夺更加激烈谁占有终端市场和加油卡市场谁拥有较大程度的客户品牌认同度谁就将在竞争中占有优势为强化客户开发做好客户维护提高固定客户和持卡消费...

客户开发经验

客户开发经验通过总结自己多年从事销售工作的经验和客户对于服务的需求以及自己以往享受服务的经历就企业开发客户而言总结归纳一下主要做好下面六点一专业取信客户首先是要注重仪容仪表给人的第一印象很重要这是销售最基本的再...

“如何开发客户”心得分享

如何开发客户心得分享广告行业的本质贩卖创意有能力说服他人接纳你的观点向老板说服企划案向部属说服观念行销需遵循的三大原则进行说服销售明智掌握客户的企业处境克服无法让你做成生意的任心理研究行销对象的个性及该公司的化...

快消品新客户开发实战

快消品新客户开发实战快速消费品由于其特定消费性质面对的是广大的直接消费者所以要做好快速消费品就必须要开发大量的新客户如果你不开发很快就会被竞争对手吃掉所以我就对我从事的快速消费品新客户开发的实战经验和大家一起分...

客户开发总结(29篇)