`
jiasudu1649
  • 浏览: 723829 次
  • 性别: Icon_minigender_1
  • 来自: 上海
社区版块
存档分类
最新评论

Opentaps Ajax 页码框架

阅读更多
http://www.opentaps.org/docs/index.php/Opentaps_Ajax_Pagination_Framework
jiasudu翻译。望大家指正错误,谢谢。
Opentaps Ajax 页码框架

    * 1 配置Screen Widget
    * 2 配置页码查询
    * 3 在FTL分页
    * 4 调试
    * 5 笔记


在这个指南, 我们将显示给您怎么用一个Ajax form分页替换一个静态form-widget,
其中使用opentaps Form页码框架。

例如
财政> 配置> > 帐户显示:所有总帐户被配置为公司。最初, 帐户列表ofbiz form widget被创造, 但因为一个公司有几百个帐户与它交往, 这样一个静态形式不是非常不友好的。它总是每页显示了100 个GL 帐户, 并且分页是很缓慢的。


一、配置Screen Widget

第一步将编辑screen widget XML和移除form widget。编辑hot-deploy/financials/widget/financials/screens/ConfigurationScreens.xml
并且寻找screen "listGlAccounts" 。ajax 页码需要写在freemarker (FTL) 中, 您可以去除类似下面的form widget :

<container style="screenlet-body">
    <include-form name="listGlAccounts" location="component://financials/widget/financials/forms/configuration/ConfigurationForms.xml"/>
</container>

你也许要删除以下内容:

<set field="viewIndex" from-field="parameters.VIEW_INDEX" type="Integer" default-value="0"/>
<set field="viewSize" from-field="parameters.VIEW_SIZE" type="Integer" default-value="100"/>

这些已不再是必要的,因为他们从服务器端控制GL 帐户列表的页码, 但是opentaps Ajax pagination form允许用户设置页码选择。



配置分页查询


第二步将配置数据为分页。如果您做一个查询或建立List of Maps 或者GenericValues, 您不需要做什么: 您可以把list直接传给paginator。您也可以在beanshell中为paginator定义一个查询 。这样paginator仅仅查询您需要的, 而不是把这个实体的所有数据都都查出来,然后存在内存中。

在多数opentaps 应用, bsh脚本是用来做查找数据,和然后返回一个list 或者 list iterator为FTL 页面或 form widget XML, 象这样:

accounts = EntityUtil.filterByDate(delegator.findByAndCache("GlAccountOrganizationAndClass",
               UtilMisc.toMap("organizationPartyId", session.getAttribute("organizationPartyId")), UtilMisc.toList("accountCode")));
context.put("accounts", accounts);

Ajax 分页中, FTL 页面需要动态数据, 我们通过bsh查询数据返回给FTL 。


glAccountListBuilder(organizationPartyId) {

   entityName = "GlAccountOrganizationAndClass";
   where = UtilMisc.toList(
       new EntityExpr("organizationPartyId", EntityOperator.EQUALS, organizationPartyId),
       EntityUtil.getFilterByDateExpr()
   );
   orderBy = UtilMisc.toList("accountCode");

   return this;
}

这个方法定义哪个实体(GlAccountOrganizationAndClass) 将被查询, 需要什么条件, 并且查询结果如何排序。 entityName, where, orderBy, having, fieldsToSelect,  可以用来配置查询分页。注意, orderBy 指定这里最初的命令由序列。
然后, 您必须确定方法这样做:

   return this;

下一步是正确的通过这个方法返回给FTL, 象这样:
context.put("glAccountListBuilder", glAccountListBuilder(session.getAttribute("organizationPartyId")));

在 FTL中分页

GL 帐户的分页在一个FTL 文件将被处理,例如 glAccounts.ftl, 开始只显示header。首先我们将import the opentaps form 指令:

  < @import location="component://opentaps-common/webapp/common/includes/lib/opentapsFormMacros.ftl"/>

然后, 我们用< @paginate > form 指令调用在BSH 中创建的list:

   < @paginate name="glAccountOrganization" list=myList >



我们能够使用我们在BSH 创建的方法:

  < @paginate name="glAccountOrganization" list=glAccountListBuilder >

我们将关闭freemarker里的分页指令:

< # noparse >


接下来, 我们使用页码按钮, 对首页和尾页的list以< @paginationNavContext/>:

  <div class="subSectionHeader">
    <div class="subMenuBar">
      <@paginationNavContext />
    </div>
  </div>

这在大部分时候都是必需的。 你会装饰你的form中的 table的header, 使用 <@headerCell> 来装饰 the heading ,list 结果也能够order排序:

<table class="listTable">
     <tr class="listTableHeader">
        <@headerCell title=uiLabelMap.FinancialsGLAccountCode orderBy="accountCode"/>
        <@headerCell title=uiLabelMap.FinancialsGLAccountName orderBy="accountName"/>
        <@headerCell title=uiLabelMap.FinancialsPostedBalance orderBy="postedBalance"/>
        <td> </td>
     </tr>

其次, 您会使用FTL <#list> 来显示各自的列。 pageRows 从分页指令返回:

<#list pageRows as row> 
       <tr class="${tableRowClass(row_index)}">
         <@displayCell text=row.accountCode/>
         <@displayCell text=row.accountName/>
         <td class="textright" style="padding-right: 40px"><@displayCurrency amount=row.postedBalance/></td>
         <td>
           <@displayLink href="reconcileAccounts?glAccountId=${row.glAccountId}" text=uiLabelMap.FinancialsReconcile/>
           <@displayLink href="updateGlAccountScreen?glAccountId=${row.glAccountId}" text=uiLabelMap.CommonEdit/>
           <@displayLink href="addSubAccountScreen?glAccountId=${row.glAccountId}" text=uiLabelMap.FinancialsAddSubAccount/>
           <@displayLink href="removeGlAccountFromOrganization?glAccountId=${row.glAccountId}&organizationPartyId=${row.organizationPartyId}" text=uiLabelMap.FinancialsDeactivate/> 
         </td>
       </tr>
     </#list>

tableRowClass 为您由页码来定义不同的CSS为不同的列。您能使用FTL 和HTML 显示结果或者使用form指令, 例如< @displayLink > 或< @displayCell > 。

最后, 您会象这样:  </table>
</#noparse>
</@paginate>



调试

您应该注意调试paginator 的几点事项:

   1. ofbiz 框架缓存freemarker 文件, 因此在改变您的ftl 文件以后, 确定您清除缓存(Webtools > Cache)。否则, 变化不能出现。
   2. paginator 的内容被查询通过AJAX 在主页装载了之后。 如果您做了一个" "View Page Source"" 在您的浏览器, 它不会显示内容里面的页数。如果您使用Firefox, 您能高亮现示分页的区域, 用鼠标右键单击, 和点击"View Selection Source" 观看您的paginator HTML 代码。

笔记

如果您使用EntityListBuilder, 然后增加另外的字段, 您不能用数据库table中没有的字段排序。

paginator 可能接受另外的参量。他们可能通过作为@paginate 的一部分, 象这样:

<@paginate name="pendingInboundEmails" list=inboundEmails
teamMembers=teamMembers>

然后, 在paginator 里面, 您能访问他们使用parameters Map, 象这样:

<#if parameters.teamMembers?has_content>
...
<#list parameters.teamMembers as option>
  • Opentaps Ajax框架.zip (5.9 KB)
  • 描述: 把Opentaps Ajax框架.zip 改成Opentaps Ajax框架.txt 就可以看了,不需要解压。
  • 下载次数: 93
分享到:
评论
12 楼 eserver220 2007-12-30  
   博主答复毫无保留,快言快语,谢谢,我会一直关注您的blog.
   
    刚拿到 the data model resource book,待我研究研究再说。
  
11 楼 jiasudu1649 2007-12-29  
pentaho和jaspersoft server都知道一些,都没有深入。
我的水平还没进步到商业智能阶段。只能算报表阶段吧。
我以前使用过报表工具ireport(jasper可视化工具)和birt。
比较讨厌ireport,总是遇到乱码问题。还是使用birt比较爽。birt用了一年,才遇到一次乱码。还是因为linux系统上没有相关的字体。

jaspersoft server是由jasper报表发展起来的吧。我从心里面抵制jasper报表。所以对jaspersoft server也没什么好感。遇到别人问,要使用什么报表工具,我总是推荐birt。由birt了解到pentaho。知道pentaho是一个宏大的开源智能计划。我一心想深入学习一下pentaho。总是没有机会。下一步的项目可能会用到商业智能,如果时间不是很紧张的话,真想好好学习一下pentaho。
10 楼 eserver220 2007-12-29  
     单位总部可真有钱,今天上网一看他们出钱买了升级版。

是Hyperion 8.3 client版本可供下载,IE不兼容的问题解决了。

    前一阵子,我也比较了一下java opensource BI的几个项目。

开始我觉得pentaho挺好。特别是有个机器学习部分weka。后来,

发现jaspersoft论坛的活跃程度要大大超过pentaho,特别是

jaspersoft今年获得风险投资后,roadmap更加清晰,更加国际化。

借助ireport/jasperreport的人气,可能会在不久的将来超越

pentaho。 虽然,pentaho收购了多个ETL/OLAP的子项目,

不知怎么,我觉得jaspersoft的demo要显得更加整齐划一。


  上个月,看到国光公司用jasperreport/ireport做的一个项

目,确实与Brio做出来的还是差距不小。Brio的designer被嵌套到

IE中,table之间的关系可以自由关联,几乎表的每个field都可以加

入限制条件(其实就是where子句)。


 
引用
Recent Developments

The past few months have been a period of significant changes in opentaps. By incorporating several new open source applications into our core framework, we are now positioned to transform opentaps from an ERP application to an enterprise-wide application platform. The new opentaps 1.0 will offer a full range of capabilities, including mobile connectivity and a choice of open source business intelligence tools, on top of our core ERP and CRM features.

Some of key developments include:

Integration of the Funambol Data Synchronization via the Spring framework to allow users to share contacts and calendars between opentaps and mobile phones and desktop applications such as Outlook and Evolution.
Integration of both JasperReports and Pentaho business intelligence suites into opentaps.
Integration of FCKEditor for web-based email and marketing applications.
New tools for integrating opentaps with Amazon.com, eBay, and Froogle.
Voice Over IP integration into opentaps CRM.

New opentaps Ajax UI framework tools have been developed and will now allow us to re-design much of the legacy static screens and forms.
New warehouse management applications for managing inventory, shipping (including UPS/DHL/FedEx integration), manufacturing.
New purchasing application for managing suppliers, purchase orders, and automating the procurement process.

Support for lot-level inventory management for food and beverage, pharmaceutical, and chemical industries.
New sales order entry systems in the CRM module, with enhanced support for bulk mailings and customer address validation.
Support for payroll, commissions, third party billing, and contract-based billing.
New library of tools for building online stores for opentaps with other languages and frameworks, developed in conjunction with the open source Joomla! content management project.
Last but not least, we have created a new opentaps documentation site which will be professionally developed and freely available to all opentaps users.



  以上是opentaps项目的最新进展,看来项目准备同时集成pentaho

和jaspersoft server,不知博主对此有何看法, pentaho和

jaspersoft server目前阶段哪个更适合与opentaps集成?
9 楼 eserver220 2007-12-27  
  已经买了,就等货到,还买了本weka 2nd的书。
   正版的Brio/BO单位里都有。可咨询公司一干玩就走了。还是研究个开源的,一方面是学习别人的思想,另一方面也方便项目开发中的自由组合。
   单位的Brio是6.5版本的,IE升级后插件就装不上了。问公司,他们的方法是打开IE后做windows update。要不就付钱,升级到高版本。
   有种说法就是开源是给穷人用的。想想确实有道理,如果在总部工作,站得高,看得远。有问题的话付钱找开发商搞定。不仅身价高,也不会有吾辈的辛苦啊!
8 楼 jiasudu1649 2007-12-27  
数据模型韘资源
中文版书店有售
你可以买本来看看
好像是两本
7 楼 eserver220 2007-12-27  
  数据模型韘资源 e版下载地址:
   http://www.itpub.net/348243.html
6 楼 eserver220 2007-12-25  
引用

  想深入学习一个庞大框架的技术,没有半年时间是不可能的。如果自己入门更是艰难的很。
ofbiz我到现在学习了,也有四个月左右了。有一个研究ofbiz五六年的专家。可以随时提问。
如果独自一人入门学习ofbiz,没半年或一年的时间是不可能入门。



  谢谢,总算对这个问题有点认识了。博主看来近来是专攻OFBiz和opentaps了。我先看看相关资料,以后有问题再请教。

   刚才搜了一把,发现有个公司正和 Si Chen谈Opentaps的汉化事宜!

    


   北京朗华世纪科技发展有限公司

   朗华世纪2007年开发计划及执行情况:

   7、汉化OpenTaps ERP + CRM

  完成情况:未完成。答应Si Chen至少汉化其中的CRM部分。

5 楼 jiasudu1649 2007-12-25  
这是我在我的email上的的聊天记录。
在07-12-15,8080 jiasudu <jiasudu8080@gmail.com > 写道:
Compiere和opentaps(ofbiz)比较。

一 ,首先从技术上看。
compiere 未来将集成的第三方报表,已经决定仅支持 Pentaho (开源的报表与商业智能解决方案)
opentaps也是最近才支持Pentaho,不过现在已经可用了.


compiere的大部分是基于swing做的
compiere的一部分是基于ejb2做的

compiere技术架构的结构比较混乱。

基于compiere,扩展他的功能的项目。 SourceForge.net 上有49个
他们各有特点  如果用的话,只能用其中一个,每个项目的优点不能集中起来使用。
现在使用ejb2技术已经处于淘汰技术了,懂ejb2的人会越来越少。懂swing的人应该很多,入门级别的多,精通的少。

基于ofbiz,扩展他的功能的项目。 SourceForge.net 上有19个
基于opnetaps 扩展他的功能的项目。 SourceForge.net 上有5个

他们各有特点  如果想用的话,每个项目的优点都集中起来使用。
ofbiz是他们的基础 子项目开发的模块在一个单独的文件夹里面,复制进入就可以用了,删除就没有了,可插拔性非常好。
就是说这二十几个项目可以整合成一个项目,只是复制粘贴那么容易。

ofbiz是一个技术平台,集成众多开源技术自成体系。

ofbiz和compiere 相比,是compiere功能多
opnetaps和compiere相比,是compiere功能多
但是众多基于ofbiz的项目集中起来,就比compiere功能多了

中国的财务管理和外国的财务管理不同,这块不论ofbiz,还是compiere都很难适合中国国情的。
只能修改一条路走了。

简单的初步使用和实施,应该是compiere占上风。
要先深入修改,还是ofbiz有优势。

想深入学习一个庞大框架的技术,没有半年时间是不可能的。如果自己入门更是艰难的很。
ofbiz我到现在学习了,也有四个月左右了。有一个研究ofbiz五六年的专家。可以随时提问。
如果独自一人入门学习ofbiz,没半年或一年的时间是不可能入门。

compiere 想入门使用和实施的话,应该一个月就可以了
想精通compiere达到修改自如地步的话,应该也得半年到一年时间。只是compiere的技术架构太旧了,还不成体系,应该以后会换掉吧
用的java最老的swing技术,和仅仅应用了很少的ejb2.0 。说明他更新太慢了。
对compiere了解的越多,就越不敢有修改compiere的想法了。

用现在java最主流的技术struts,spring,hibernate编程序不难。
用ofbiz修改程序,扩展功能也不难。
但是看来修改compiere应该很困难的。
直接实施compiere应该比直接实施ofbiz,可以实现的功能多一些。可是不进入修改程序那个阶段,不会有咱们的核心竞争力的。

4 楼 eserver220 2007-12-25  
  博主,我看了Javaeye上有关OFBiz的讨论。才发现JavaEye卧虎藏龙啊。我是因为想学习opensource BI/ pentaho jaspersoft才偶然发现opentaps这个项目。想不到又扯到了OFBiz。你的blog谈了不少OFBiz的问题,能不能介绍一下对OFBiz前景的看法。
3 楼 eserver220 2007-12-25  
  博主见解果然精辟,非常佩服!

   我今年三、四月份比较过compiere/admpiere/openbravo,最后安装 compiere试了一下。就没深入下去。 compiere是不错,但关于架构的资料不多。且从3.0开始web部分将不再开源。可能是因为openbravo获得风险投资基金,目前发展势头比较猛的原因吧! (openbravo 的活跃程度在sourceforge上已经排第一了)
   我的担心是openbravo 最近发布版本的bug fix太多,这可能也是opensource软件的通病。如果开发太快,不注意测试和文档,以后可要吃苦头。
   我的日常工作只要做做表示层开发,无太高要求。只是兴趣所致,想找个开源研究研究。我也发现Opentaps/Ofbiz是非常有前途的。
这不仅因为有The Data Model Resource Book 作为理论依据。还有ofbiz/opentaps的具体实施。

   另外,我发现opentaps项目的Committer Si Chen是个充满激情的人,他写的每篇blog都很有见地。我赞成博主的看法,opentaps是个有前途的项目。
2 楼 jiasudu1649 2007-12-24  
引用
你好,博主。 看见你写的opentaps的文章,看来对opentaps一定有研究。
有个问题请教,在java open source ERP软件中,请比较一下 compiere/openbravo/admpiere/opentaps。

能不能从易上手和发展前景两个方面谈谈,谢谢


嘿嘿,没太大的深入,很粗浅的了解过compiere 。
openbravo仅仅见过demo,不了解。
我以前简单对比过compiere和基于ofbiz的系列项目。
基于compiere的项目也很多,不知道他们能否全部集成为一个项目,compiere看了很久,才看出里面有一些模块是以前的ejb做的,功能很多
你要是仅仅使用而不进行二次开发的话,使用compiere最合适吧。(当然,你如果精通ejb2,肯定可以进行二次开发)
毕竟compiere的功能和完善性都是最强的
admpiere是compiere的衍生出来的,理论上功能应该比compiere更多,性能上也应该更好,架构也更新。只是时间上没compiere久远,有bug也在所难免。不过,随着时间推移admpiere肯定会比compiere有作为。而且admpiere社区也是很活跃的。opentaps是基于ofbiz项目中最优秀的一个项目,用它来代表ofbiz不为过。当然其他基于ofbiz的项目也不乏经典之作。因为基于ofbiz的项目都是模块化开发的
所以把所有基于ofbiz的项目整合起来也是轻而易举。这样算下来ofbiz的功能最多。
ofbiz的架构是从一个很高的业务角度来搭建的,即使从技术角度上看现在java主流struts+spring+hibernate要发展出如此知名度高的框架也得再花一些时间吧。
ofbiz以前的目标要发展成为一个无所不包与ejb并驾齐驱的主流框架。
众所周知,现在的主流是struts+spring+hibernate。因为主流的框架熟悉的人多,入门简单。
不代表ofbiz技术上落后于struts+spring+hibernate。
现在ofbiz定位是一个商务套件。定位比较准确,目标比较明确。
如果有心思,以后做二次开发的话,还是入手学opentaps好.
做erp实施,不做二次开发,概率很小。除非,你想让企业变得适合软件,而不是软件变得适合企业。

1 楼 eserver220 2007-12-24  
  你好,博主。 看见你写的opentaps的文章,看来对opentaps一定有研究。
   有个问题请教,在java open source ERP软件中,请比较一下  compiere/openbravo/admpiere/opentaps。

   能不能从易上手和发展前景两个方面谈谈,谢谢
 

相关推荐

    OPENTAPS综合资料文档

    OPENTAPS的架构设计基于Java技术,利用J2EE标准和Apache OFBiz框架。系统由多个模块组成,包括但不限于:销售管理、采购管理、库存管理、财务管理、项目管理等。了解OPENTAPS的结构有助于优化系统性能和扩展性,文档...

    opentaps 结构分析

    2. `framework`:这是底层框架和基础服务的所在,包括base、start、entity、security、minilang、testtools、datafile等,提供了核心功能和工具。 3. `hot-deploy`:这是一个热部署目录,用于放置开发者自定义的应用...

    windows 下安装Opentaps

    在Windows环境下安装Opentaps是一项综合性的IT任务,涉及到多个步骤和组件的配置。以下是根据提供的文件信息,详细解析在Windows下安装Opentaps所需的关键知识点: ### 1. 安装并配置JDK 首先,确保安装了JDK1.5或...

    opentaps0.9相关文档

    "opentaps0.9相关文档"这一标题所指的,是关于开源企业资源计划和商业智能系统OpenTaps的一个特定版本——0.9的文档集合。OpenTaps,全称为“Open Source Total阿P Solution”,是一个集成的企业应用套件,包括了ERP...

    Opentaps开发安装、配置、应用文档

    Opentaps是一个开源的企业资源规划(ERP)和客户关系管理(CRM)系统,与Ofbiz紧密集成。这个压缩包文件包含了一系列文档,旨在帮助开发者和用户进行Opentaps的开发、安装、配置以及应用。 1. **安装文档.docx**: ...

    opentaps 1.0.2的partice(练习)例子

    **opentaps 1.0.2 实战指南** OpenTaps(Open Source Total阿P Solution)是一款开源的企业资源规划(ERP)与客户关系管理(CRM)系统,它结合了电子商务、供应链管理、销售和市场等功能,为企业提供了一站式解决...

    win7 安装Opentaps 1.5

    在Windows 7操作系统中安装OpenTaps 1.5是一个涉及多个步骤的过程,因为这个开源企业资源规划系统并不直接支持Windows。以下是对安装过程中需要修改的文件和操作的详细解释: 1) **修改entityengine.xml文件**: -...

    opentaps+ ofbiz

    【opentaps+ ofbiz】是一个集成的企业资源规划(ERP)和客户关系管理(CRM)系统,主要用于电子商务和在线业务管理。系统的核心组件包括产品管理、特性管理、分类管理、目录管理、店铺管理、订单处理、产品定价和...

    opentaps (from apache ofbiz) 架构图 (chart of architecture)

    OpenTaps的目标是为企业提供一个完整的、开箱即用的解决方案,而不仅仅是开发框架。 **3. 架构组件** - **服务层**:OfBiz和OpenTaps都使用服务组件架构(Service Component Architecture, SCA),这是一种面向...

    xp opentaps2.5安装

    ### Openbravo 2.5在Windows XP下的安装与配置指南 #### 一、环境准备与配置 在开始安装Openbravo 2.5之前,我们需要先准备好一系列的基础软件及环境变量。 **1.... - **Oracle数据库:** 使用的是`win32_11gR1_...

    opentaps开发示例.pdf

    文件中多次提及GWT,表明opentaps在开发过程中使用了GWT框架来开发Web界面组件。如AgentScreens.xml定义了与代理商相关的界面组件。 5. web.xml(Web应用配置文件): web.xml文件是Java Web应用的标准配置文件,...

    Windows 安装opentaps 1.5

    WINDOWS下安装Opentaps1.5相关教程...全程指导...适合新手... Opentaps:开源的ERP,

    安装Opentaps1.5[Windows].doc

    ### 安装Opentaps1.5[Windows] #### 知识点一:JDK环境配置 为了确保Opentaps1.5能在Windows环境下顺利安装并运行,首先需要正确安装Java Development Kit (JDK) 1.5或以上版本,并进行必要的系统环境变量配置。 ...

    ofbiz-opentaps表关联

    opentaps 所有表关联,HTML的。

    crm源码java-opentaps-1:原始的基于Java的opentaps开源ERP+CRM

    2. **J2EE框架**:基于Java的ERP和CRM系统通常会利用J2EE(Java Platform, Enterprise Edition)框架,如Spring、Hibernate或Struts,来处理事务管理、持久化、MVC(模型-视图-控制器)设计模式等。 3. **数据库...

    opentaps_seas:opentaps智能能源应用套件

    opentaps智能能源应用套件(SEAS)是面向未来清洁能源的应用平台。 它旨在帮助建筑所有者和经理,能源技术公司和服务提供商,公用事业,市政当局和公共机构管理,衡量和资助从建筑节能项目到可再生微电网的清洁能源...

    opentaps安装必读

    这是opentaps的安装过程介绍,包括mysql安装与设置,jdk的安装

Global site tag (gtag.js) - Google Analytics