ofbiz实战——实验室预约系统项目总结

78 篇文章 6 订阅
49 篇文章 2 订阅

实验室预约管理系统已经完成,通过此项目对ofbiz的使用做个总结。

从功能点方面总结:

1. 单个实体的增删改查功能。可以参考教师管理模块的实现。

2. lookup检索数据功能。可以参考课程管理模块的实现。在实验项目维护时会使用到。

3. 上传和下载功能。可以参考批量导入学生信息功能。

4. 批量操作功能。如批量审核,批量考勤功能。

5. 分页功能。

6. 触发器功能。如新增修改学生和教师记录时,自动触发操作ofbiz自带的表,创建对应的登录账号,和重置密码等功能。


从技术点方面总结:

1. 实现实体的增删改查功能,可以从service.xml文件中看到主要是使用了entity-auto引擎和groovy引擎。

2. lookup技术理解后实现起来就比较简单了,之前也有文章专门分析过,该技术很好用。

3. 下载功能主要是通过org.apache.ofbiz.booking.download.DownloadEvents类实现。

      主要难点是对不同文件response.setContentType的设置不一样。具体可以参考http://tool.oschina.net/commons/

4. 批量导入功能其实技术点包含了上传功能和文件解析功能。

      4.1 上传功能。主要通过ofbiz自带的HttpRequestFileUpload类实现,使用发现原来的HttpRequestFileUpload类有点小问题,所以自己修改了下。点击链接查看详情

      4.2 文件解析功能。这是自己写的一个工具类ExcelUtil。点击查看

      4.3 具体例子可以查看 ofbiz实战10——学生管理实现代码

5. 批量操作。例子:ofbiz实战——学生预约申请管理界面以及代码  。里面的批量审核,和批量考勤功能。

6. 分页功能主要是使用了performFind服务实现。

使用performFind查询时如何设置查询条件值为null的情况

        entity-view实体视图的定义,包括分组统计功能。参考entitymodel_view.xml

7. 触发器功能主要是通过配置eecas.xml和secas.xml文件。

      OFBiz中有两种类型的ECA规则:Service Event Condition Actions(SECAs 服务事件条件动作)和Entity Event Condition Actions(EECAs 实体事件条件动作)。查看

8. xml配置文件中value值可以使用groovy脚本设置,类似StuBatchScreens.xml如下:

                        <screenlet title="${groovy: parameters.StuBatchId ? uiLabelMap.CommonEdit : uiLabelMap.CommonAdd}">
                            <include-form name="EditStuBatch" location="component://booking/widget/booking/StuBatchForms.xml"/>
                        </screenlet>

项目开发过程遇到的问题:

1. 分组统计视图定义。

    一起习惯用sql语句分组统计查询,现在改为了定义一个实体视图,发现有很大的区别。

    之前是想着根据sql写出等价的实体视图定义,后来发现这条路好像走不通。后来把一个视图分解为多个小视图,每个要统计的列专门定义一个实体视图实现这样,这样最后再把所有小的实体视图组装成一个最终的实体视图。这样实现起来条理就比较清晰了。


2. <form>里的控件在一行显示。比如多个field显示在一行,而不是每个field单独一行。

    这个问题暂时没找到解决办法。或许有相关属性配置一下就可以了,但我不知道。


3. <link>标签无法实现点击弹出窗口的效果,只能使用<hyperlink>.l例如:

<form name="FindStuBatchBar" target="FindStuBatchBar" title="" type="single"
        header-row-style="header-row" default-table-style="basic-table" >
		<field name="test" title=" " widget-style="buttontext">
			<hyperlink description="${uiLabelMap.AuditingStuBatchList}" target="EditAuditingResult"  also-hidden="false" link-type="layered-modal"/>
		</field>
    </form>

但其实我只是想实现layer弹出一个小窗口的功能,希望直接在Screens.xml中配置,而不是必须写到from表单里面。

在本项目中批量审核功能的实现,我试了很多办法,最终还是选择了使用了上面的方法。但上面的方法有个缺点就是,当希望一行有多个按钮时,就无法实现了(见问题2)。

一行出现多个按钮的一个解决方案: 可以写一个ftl模板加载进去,具体的弹出窗口功能,则自己使用layer框架实现。


4. 批量操作问题。实现批量审核功能时,我研究了一天的时间,最后才自己写js脚本实现批量操作数据提交表单。应该有更简单的方法。


5. 批量操作的全选复选框。想再批量操作的表格表头加上全选复选框,但不知道怎么弄。


6. 分页查询。目前都是通过定义实体视图使用performFind服务实现分页查询。之后有时间要研究一下,使用groovy脚本或者java自定义服务实现。


7. 熟悉一些常见的内置对象。掌握ftl,xml,groovy,java文件里哪些内置对象可以直接使用。因为之前开发过程对这方面知识掌握不是很透彻,很多时候都靠不停的调试才获取到正确的参数。

    事件和服务中有哪些隐藏对象

8. eecas.xml和secas.xml传参问题,以及groovy获取参数问题。

    经常获取不到期望的参数值,可能对这方面的传参不是很了解,有待深入研究。


9. 消息提示功能。使用eecas触发时,该如何修改提示信息?message消息提示功能有待深入研究。











评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值