⾦蝶实习(⼗⼀)——简单的⼆次开发
⼀转眼⼜星期五了,这周最后⼀天的实习也不能放松,昨晚对⾃⼰这么暗⽰来着,今早⼀觉睡到7点半还是室友的⼿机闹铃把我叫醒的。于是⽕急⽕燎地洗脸刷⽛,头发也没洗早饭也没吃(准确说是没在教育超市喝粥,不过在站台旁买了俩包⼦,嘿嘿)。幸好今天上帝还算照顾,8点就上36路车接着⼀下车就正好赶上66路,太幸运了到公司也就8点45的样⼦,欧也!
今天龙哥来了,应该是昨天⾦蝶HR给他打电话询问关于我实习的事情,HR说实习⽣每个⽉也要做个总结什么的,然后公司根据业绩发放⼀定的薪酬,还要补签个实习合同(晕,不早说!)。说实话当时来实习之前确实是本着赚钱的⽬的⽽来的,但经过这⼏天的接触发现即使是⼆次开发也不是想象地那么容易的。⾸先把⾦蝶开发的EAS BOS Studio软件在短时间内搞熟就已经很不容易了,它包括业务建模⼯具、业务设计⼯具和业务流程图设计,对于⼆次开发的⼈员来说主要使⽤的是前⾯两种。⽽真正做起开发来这显然是不够的,还要有Eclipse、Oracle等⽀持,其中最复杂的就是⾦蝶内嵌在Eclipse平台中的原型项⽬。我们⼆次开发就是基于⾦蝶总部开发的EAS BOS框架,真正要我们⾃⼰动⼿编写的程序是很少的(相对于整个系统⽽⾔)。
作为实习⽣,我们最痛苦的也就在这⾥,初来乍到⼀⽅⾯对EAS BOS这个开发⼯具本⾝就不熟悉,Eclipse以前倒是⽤过,Oracle也从未使⽤过;另⼀⽅⾯南京这边开发⼈员本⾝就少,虽然⼀开始公司指定
了龙哥做我的导师,但他除了给我好⼏⼗篇⽂档外⼏乎很少和我交流。龙哥在⾦蝶算是元⽼级任务了,整个办公室的⼈有什么不懂的都问他,开发⽅⾯和业务⽅⾯的。可能龙哥忘了我没有任何⼯作经验的⾝份了,给了我⽂档后⼏天后就问我“能做东西了么?”
“什么东西?”我⼩声问道。
“就是我们现在做的啊”他说。
“我可以试试”
“那你把这⼏天⾃⼰做的⼀些代码给我看看”。听了这句话我差点吐⾎,其实这⼏天来我就是照着⽂档断断续续的敲了⼀些代码⽽已,之余调试⼏乎很少成功的,甚⾄连这些代码⽤来⼲嘛的都⼀头雾⽔。这时我猜体会到看别⼈的代码真是痛苦啊,更何况是⾦蝶成百上千的员⼯开发出来的呢!他们的⽂档⾥没有注释,给的PPT也很概括。我只能顺着他们的条条框框⼤致摸清了软件的功能。⾄于怎么完整地做⼀个单据,除了使⽤业务建模⼯具添加表头、分录的字段、属性和做⼀些简单的界⾯规则校验外,对于元数据以及JAVA代码中的接⼝、抽象类和实现类中的各式各样的属性、⽅法则还是云⾥雾⾥。
龙哥显然对我做得不太满意,其实我⾃⼰也不知道⾃⼰都做了什么!后来他让我做⼀个实际的订单功能,尽量⾃⼰做。
总体需求是这样的:在供应链业务组别下⾯的销售报价单的业务单元中加⼀个功能,就是能够计算出缺货数量。具体的思路是这样的:⾸先在分录中加了两个字段“当前库存”和“缺货数量”,然后在⼯具栏中加⼀个按钮(设为“计算缺货”吧,命名btnCalLackNum),在单据增加界⾯点击它就能算出整个分录中每条记录的缺货数量。缺货数量=审批数量-当前库存。
好了,需求就这么多。
拿到⼿后我就⼀直在琢磨到底怎么做呢?不管三七⼆⼗⼀先把界⾯做起来再说。对于在界⾯上拖拽控件我还是很熟的,之前Visual Studio 也没少⽤。在建模⼯具中对分录的当前库存字段加了⼀个更新⽅法calculateLackNum(),就是在库存不为空⽽且⽽且库存⼩于审批数量
时“缺货数量=审批数量-当前库存”(后来在抽象类中看到了代码)。只是EAS BOS⽐⼀般的Eclipse和Visual Studio更复杂,主要是它引⼊了“元数据”。⼀张单据通过业务建模⼯具设计完毕后发布⽣成许多元数据,这⾥包括界⾯(.UI)、表(.table)、查询(.query)、关系
(.relation)等。我们这⾥增加按钮必须在界⾯元数据上的toolbar中增加,这⾥还可以调整⼯具顺序什么的。
界⾯设计完后,我就开始着急了,按钮的功能写在哪⾥呢?对了上次发布后打开JAVA透视图后就会看到app包和client包中有ControllerBean.java和EditUI.java以及ListUI.java,只需要在这些⾥⾯增加⾃⼰的代码就OK了。好,开始发布。居然出错,在42%的时候,之前也有过这种情况。我下意识地打开java透视图,不出意外有⼏个java⽂件⾥有错误。果然,到底哪⾥出错呢?都是⾃动⽣成的啊,经过反复排除,终于发现了⼀个问题。那就是src⽂件夹⾥⾯只存放发布过得元数据⽣成的类,原来这个单据⽤到了其它业务组别的内容,要把它们也⼀并发布才⾏。
发布的问题解决了,谁知道今天发布后这些JAVA⽂件连影都不见,只是⼏个抽象类,那些都是⾃动⽣成的,龙哥说⼀般不要修改它,那我应该在哪⾥写代码呢?郁闷!⼀直怀疑是不是哪⾥出错了,了半天
没有丝毫进展,倒是想到了在分录实体(.entry)中新建⼀个取库存的⽅法(后来证明那是胡扯)。
实在不知道该怎么进⾏下去了,厚着脸⽪问⼈吧,反正实习期满就打道回府了,也丢不了很长时间的⼈。后来那位同事告诉了我具体的做法。那就是先创建界⾯,如果完全⾃⼰从模板新建的单据,那么发布后会有ControllerBean.java和EditUI.java以及ListUI.java这些实现类,他们都是继承抽象类的,⽽这⾥我们是直接修改的原有单据,因此只有抽象类。也就是说,元数据发布后只需要在这些抽象类中添加代码就可以了。那么怎么添加呢?他给我做了个⽰范,在界⾯元数据中的⼯具栏按钮的第⼀个事件中双击,这样⼀个客户端的点击事件就可以添加了。晕!这不是和Visual Studio⼀样么!
再⼀次发布元数据,打开java透视图,在AbstractQuotationEditUI.java中就出现了⽅法btnCalLackNum_actionPerformed()。好了现在就可以做⼀些简单的测试了。
那么怎样从数据库中取数据呢?我原以为和我们在学校做的系统⼀样直接⽤SQL语句或存储过程连接数据库呢,现在⾯临⼀个问题,数据库表那么多,我怎么知道要⽤的是哪张呢?“没有数据字典吗?”那位同事惊讶地问道,于是他给了我⼀张数据字典,⾥⾯密密⿇⿇的全是数据库表以及它们对应的字段详细信息。
我绞尽脑汁,于是到了⼀个DbUtilFromClient类,看名字的意思是从客户端对数据操作的⼯具类。于是我就写了如下代码:
String sql="select FCurStoreQty from T_IM_Inventory where FMaterialID="+material+"";
DbUtilFromClient a=new DbUtilFromClient();
Connection Conn("10.25.26.43","1521","wz","wz","wz");
怎么用java编写app软件ute(con,sql);
转念⼀想,不对啊!万⼀换了数据服务器怎么办呢?呵呵,⼜被那个同事鄙视了⼀下,要我回去好好看⽂档,上⾯有说明。⼜是⽂档!郁闷啊!
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论