- 浏览: 518889 次
- 性别:
- 来自: 北京
文章分类
最新评论
-
u011165335:
distinct不影响使用半连接
(转)关于semi-join/anti-join的一点探讨 -
353790060:
redo 记录事务执行后的日志 undo 记录事务回滚的日志 ...
Oracle redo与undo浅析 -
jayxigua:
redo用于在失败时重放事务(即恢复事务),undo则用于取消 ...
Oracle redo与undo浅析 -
aa_qq110:
Openbravo有中文包吗
Openbravo开发手册 -
iocaop:
不错,写的很清晰易懂
JAVA 服务提供者框架介绍
一. 客户端代码开发工具
Openbravo3.0客户端代码开发是大量的javascript代码,CSS代码和极少量的html代码开发。我们是通过浏览器加载来查看客户端主要的javascript代码的,一般如下两个工具选择一个,Chrome Developers Tools和Firebug
二. smartclient源码整合入Openbravo项目
1. 到如下地址将smartclient源码下载下来: https://code.openbravo.com/erp/mods/org.openbravo.userinterface.smartclient.dev/,点击如下图的zip即可。
2. 将下载下来的smartclient源码,解压缩(注意先要重命名一下,名称太长,解压缩会报错)放到openbravo项目的modules文件夹下面,比如:G:\openbravo3.0\Openbravo-3.0MP11\modules。
3. 命令行窗口,切换到openbravo项目的顶层目录,比如:G:\openbravo3.0\Openbravo-3.0MP11。运行如下命令:ant smartbuild。
4. 编译成功之后,刷新在eclipse里面的openbravo项目,可以在modules文件夹下面看到smartclient module。今后直接从这里查看smartclient的源码。(可以使用Ctrl+Shift+r命令快速打开某一个源文件,比如FormItem.js)
三. 客户端获取没有压缩和模糊的JS代码
openbravo会自动压缩javascript代码,为了减轻客户端的加载压力。但是,这回让客户端调试代码更加困难,那么如何获取没有压缩的javascript代码。
openbravo如果发现这个模块不是开发状态,就会压缩javascript代码。但是,如果是开发态就不会了。通常我们将如下几个模块设置成处于开发状态:org.openbravo.client.kernel,org.openbravo.client.application,org.openbravo.userinterface.selector
smartclient源码在加载到客户端的时候,通常会被压缩。但是,客户端调试的时候,非常需要看得见smartclient的源码。为了能够看到,需要安装smartclient模块,也就是第二步所说的。第二步做完之后,启动服务,浏览器进入模块管理页签,将smartclient模块修改成处于开发状态,然后重启服务。
客户端如何调试代码,通过chrome浏览器打开某一个页面之后,打开chrome开发人员工具,点击scripts查看javascript代码,下拉框找到一个名词很长的javascript代码,比如:27c45aef548fedad34ife42.js. 这个js代码包含了整个压缩了的js代码。需要注意几点:
1. 这个javascript名称是动态生成的,内容变化,名称就会变化,浏览器就会重新加载。
2. 如果这个文件是被压缩的,请查看如上说的那三个通常说要设置成开发态的模块是否设置了。
3. 这个文件不包含smartclient的源码。
找到这个js文件之后,在上面代码搜索里面输入this.messageBar = isc.OBMessageBar.create ,定位之后,在左边数据行号的地方点击右键就可以加断点了,然后随便打开一个窗口,就会触发这个断点。
四. 添加javascript到openbravo系统
javascript加入到openbravo系统可以通过如下方式:
1. 静态的javascript文件必须放在它所在模块的如下目录:web/[modulepackage]/js
2. javascript必须要注册通过java语言,比如:
globalResources.add(createStaticResource( "web/org.openbravo.client.application.examples/js/example-view-component.js", true));
五. openbravo客户端javascriptAPI介绍
当添加新的实例或者类的时候,需要遵守如下协议:
1. 所有的全局数据必须加载全局对象OB里面。
2. 所有CSS样式命名必须以OB打头。
3. 所有的smartclient类命名必须以OB打头。
在这一部分,我们将探讨OB对象里面的功能函数。
1. OB.Application
它包含服务器端的一些基本信息,比如采用的是那种语言,基本访问路径是什么,系统版本之类的。见下图:
2. OB.User
包含当前登录用户的相关信息
3. OB.Constants
包含了在整个系统运作过程中会用到的常量。
4. OB.Datasource
提供标准和定制的数据源,它提供2个方法,create和get。
get方法在获取数据源的时候,会先判断在客户端是否已经缓存了,如果缓存了直接返回。如果没有,则发生一个请求到服务端,要求服务端生成一个数据源返回。需要注意的是,这个get方法是异步的:
// ** {{{ OB.Datasource.get(dataSourceId, target, dsFieldName) }}} ** // // Retrieves a datasource from the server. The return from the server is a // javascript string which is evaluated. This string creates a datasource. The // datasource // object is set in a field of the target (if the target parameter is set). This // is done asynchronously. // // The method returns the datasourceid. // // Parameters: // * {{{dataSourceId}}}: the id or name of the datasource // * {{{target}}}: the target object which needs the datasource // * {{{dsFieldName}}}: the field name to set in the target object. // * {{{doNew}}}: if set to true then a new datasource is created // If not set then setDataSource or optionDataSource are used. // OB.Datasource.get = function(/* String */dataSourceId, /* Object */ target, /* String */dsFieldName, /*Boolean*/ doNew) { ... }
create方法不会调动服务器端来生成数据源,而是在客户端自己生成,利用传过来的参数
// ** {{{ OB.Datasource.create}}} ** // Performs a last check if the datasource was already registered before // actually creating it, prevents re-creating datasources when multiple // async requests are done for the same datasource. // Parameters: // * {{{dsProperties}}}: the properties of the datasource which needs to be // created. OB.Datasource.create = function(/* Object */dsProperties) {
OB.Datasource通过isc.OBRestDataSource来创建数据源,isc.OBRestDataSource继承自SmartClient RestDatasource方法。
5. OB.Format
负责当前用户全局日期,数字的格式设置, 特殊字段的设置在format.xml里面设置,
6. OB.I18N
改对象提供一个getLabel方法,用于获取一个翻译过的提示信息,当用户加载一个窗口的时候,系统会自动调用这个方法将提示信息下载下来。方便今后使用。
7. OB.PropertyStore
负责获取和设置一些属性值。
get方法,可以返回一个特定窗口的某一个属性值。
dataPageSizeaux = OB.PropertyStore.get('dataPageSize',this.view.windowId);
set方法, function(propertyName, value, windowId, noSetInServer, setAsSystem):设置某一个属性值。如果不需要设置服务器端这个属性的值,noSetInServer为true. 如果要在系统中都设置,setAsSystem为true.
OB.PropertyStore.set('OBUIAPP_GridConfiguration', result, this.windowId);
OB.PropertyStore可以加监听, 值改变的时候会通知监听对象。
8. OB.RemoteCallManager
负责调用服务端的方法,提供一个Call方法,有如下参数:
actionName:接收请求处理的类名。
data:请求的表体数据
requestParams:请求的参数
callback:请求返回时,调用的方法
callContext
9. OB.ViewManager
管理我们打开的所有页签,像回退,刷新页面也属于它的管辖范围。它有一个比较重要的方法是打开一个页签,openView(viewName, params), viewName: 将要创建“视图”的名称。params: 创建“视图”需要的一些数据。页签也就是视图,有一个属性showItSelf,如果设置成true,那么就是弹出窗口。如果false,那么就会在页签里面打开视图。
10.OB.Utilities.Action
用来定义一系列动作执行方法,定义方法如下:
OB.Utilities.Action.set('showAlert', function (paramObj) { alert(paramObj.text); });
执行方法如下:
OB.Utilities.Action.execute('showAlert', {'text': 'This is just an example'});
executeJSON方法可以顺序执行多个方法,如下:
OB.Utilities.Action.executeJSON([{'showAlert': {'text': 'This is the first alert'}}, {'showAlert': {'text': 'This is the second alert'}}])
当调用executeJSON方法的时候,会生成一个线程,全程监控执行过程。这个线程可以中止执行,暂停执行和继续执行。比如:
OB.Utilities.Action.set('confirmDialog', function(paramObj) { var text = 'Hello ' + paramObj.name + ', do you want to continue with the thread?'; if (!confirm(text)) { OB.Utilities.Action.cancelThread(paramObj.threadId); } }); OB.Utilities.Action.set('promptDialog', function(paramObj) { var text = ''; if (paramObj.value) { text += 'You have introduced: ' + paramObj.value + '\n'; } text += 'Please, introduce here a 0 in order to continue' paramObj.value = prompt(text); if (paramObj.value === '0') { OB.Utilities.Action.resumeThread(paramObj.threadId); } else { OB.Utilities.Action.pauseThread(paramObj.threadId); OB.Utilities.Action.execute('promptDialog', paramObj, 100); } }); OB.Utilities.Action.set('alertDialog', function(paramObj) { var text = 'You have finished the thread!\nBye ' + paramObj.name; alert(text); }); OB.Utilities.Action.executeJSON([ { 'confirmDialog': { name: 'John Smith' } },{ 'promptDialog': { } },{ 'alertDialog': { name: 'John Smith' } } ]);
11. OB.Utilities.Number
提供几个方法用来格式化数字,比如:
OB.Utilities.Number.roundJSNumber(num, dec)将数字num按照dec设置的精度处理。
OB.Utilities.Number.OBMaskedToJS(numberStr, decSeparator, groupSeparator):将OB中格式的数字转换成JS中的格式。
OB.Utilities.Number.JSToOBMasked(number, maskNumeric, decSeparator, groupSeparator, groupInterval):将JS格式的数字转换成OB中的格式。
12. OB.Utilities.Date
格式化日期,比如:
OB.Utilities.Date.OBToJS(OBDate, dateFormat):将OB中date的格式转换成JS中的格式
OB.Utilities.Date.JSToOB(SDate, dateFormat): 反之。
13. OBGrid
OBGrid是openbravo中的表格定义类,如果你要实现自己的表格类,必须继承它,以保证你的表格跟系统中的表格风格一样。
14. Openbravo Window Components
Openbravo里面的一个窗口是由多个页签组成,每一个页签有编辑模式和表格模式,另外,还有工具栏和消息框。下面具体介绍一下这些信息。
OBStandardWindow:窗口对象
Openbravo里面的窗口是通过实例化窗口对象创建的,窗口对象里面的页签是通过实例化OBStandardView创建的。每一个页签对象里面包含了多个子页签,每一个页签通过实例化OBViewGrid来实现表格模式和实例化OBViewForm来实现编辑模式。窗口对象一般包含以下属性:
1. WindowId:窗口存储在数据库中对应的id
2. view:根页签
3. views:窗口中所有的页签
OBStandardView:页签对象
页签对象包含以下一些信息:
a form(一个编辑页面),a grid(一个表格页面),a tab set with tabs(一个包含页签的页签集合),a message bar(消息显示条),a toolbar(工具栏)
OBStandardView有如下属性:
tabId:tab ID
tabTitle:页签的标题
StandardWindow:一个返回所属窗口的链接
childTabSet:所有子页签集合
parentView:一个返回父页签的链接,如果是子页签
parentTabSet:一个返回父页签所有子页签集合的链接
toolBar:本页签OBToolBar实例化对象
messageBar:消息框
viewForm:编辑页面
viewGrid:列表页面
dataSource:为编辑页面和列表页面提供数据
isActiveView:一个方法,如果页签是活动的返回true
OBViewGrid:表格页面
OBViewGrid是smartclient ListGrid的子类,除开listGrid的属性外,它还有额外的属性:
setItemValue(item,value)方法:为item设值,并触发onChange事件。
getSelectedRecord:得到当前选中行
getEditForm:当编辑表格某一行的时候,返回当前编辑的一行信息
getEditRow:得到当前编辑的行
setValue(item,value),设置item的值,不触发onChange事件
OBViewForm:编辑页面
OBViewForm是DynamicForm的一个子类,有如下重要属性:
view:指向所属页签
gird:
hasChanged:如果至少有一个字段的值改变,则为ture
isNew:the form是否是为了新增一条记录而打开
OBMessageBar:提示信息框
给予用户一些提示信息,比如警告,错误等等。它有如下方法:
setType(type):设置消息的类型,不同类型的消息颜色和图标不同,type有如下几种: isc.OBMessageBar.TYPE_SUCCESS,TYPE_ERROR,TYPE_WARNING,TYPE_INFO.
setText(title,text):设置提示信息框的内容,和标题,如果标题为空,则设置为默认的
setMessage(type,title,text):上述两方法结合,同时会显示消息框
hide/show:隐藏或者显示消息框。
OBToolBar:工具栏
窗口中的每一个页签都有一个工具栏,但是窗口只显示一个工具栏。当前活动的页签,的工具栏才会显示,如果不是活动页签,它所属的工具栏就会隐藏。
发表评论
-
Openbravo 论坛
2014-03-12 20:55 67大家好, 新开了一 ... -
Openbravo与淘宝对接文档二
2014-01-01 17:49 4089这篇文章介绍消息服务的使用 1. 登陆沙箱用户 ... -
openbravo与淘宝对接文档一
2013-12-31 21:53 1901首先进入沙箱首页:http://www.tbsandbox ... -
How to automatically populate search keys
2013-05-20 21:13 1002Introduction Search keys are ... -
How to create an Alert
2013-05-12 22:24 1257Objective The objective of t ... -
Openbravo 如何给窗口添加新字段
2012-12-17 21:04 1420以薪资表为例,假设我们现在有生效日期,还没有失效日期,支付时 ... -
Openbravo3.0 服务端技术--数据访问层(Data Access Layer)
2012-10-24 23:46 1939Data Access Layer(DAL)描述 ... -
Openbravo3.0 体系结构
2012-08-29 22:14 5449在Openbravo 3.0中,我 ... -
Openbravo3.0 组织机构设置介绍
2012-06-24 17:31 2627一. 简要介绍 ... -
Openbravo3.0 用户操作界面介绍
2012-06-12 22:57 1788一. Openbravo3.0 新颖特征介绍 ... -
Openbravo3.0 怎样新建一个窗口
2012-03-15 21:28 2609一.需求背景 假设我们在开发一个人力资源模 ... -
Openbravo3.0与Eclipse集成简介
2012-01-07 22:30 3561... -
Openbravo 3.0 销售管理组织机构消失问题
2011-06-09 18:43 1076请参考如下文章: http://wiki.openbravo ... -
Openbravo 3.0汉化包
2011-05-26 22:30 8135附件有openbravo3.0的汉化包下载,不过不完 ... -
Openbravo ERP 3.0安装指南
2011-05-22 16:21 20286Openbravo ERP 3.0已经发布有一段时间 ... -
Openbravo 手工导入商品库存与价格
2011-05-19 16:36 1600由于Openbravo自带的导入功能 不能够导入商 ... -
Openbravo 窗口字段自定义
2011-05-19 16:00 1469假如openbravo的添加产品页面有很多字段,我 ... -
Openbravo ERP 定制菜单
2011-05-10 12:15 1715一. 删除菜单节点 1.点击 ... -
Openbravo ERP 通过数据字典定制属性
2011-04-29 11:13 2077有些时候,openbravo并不 ... -
OB汉化包
2010-09-08 12:01 1302上传一个OB2.4汉化包,供日后下载。
相关推荐
Openbravo 3.0 会计文件,适用与openbravo 3.x所有版本
Openbravo3.0二次开发部署步骤
100%汉化过的Openbravo 3.0 mp26 中文语言包
openbravo 汉化包,目前只汉化了80%左右的文字,不过主要的部分都以及汉化了。
Openbravo-3.0PR18Q3.2汉化包本人亲测,90%的汉化率。
openbravo-3.0PR19Q3
NULL 博文链接:https://liwenshui322.iteye.com/blog/1054473
### Openbravo 开发手册知识点解析 #### 一、Openbravo 概述 - **定义**:Openbravo是一款专为中小企业设计的基于Web的ERP(企业资源规划)软件,具备高度可扩展性。 - **核心功能**:集成了CRM(客户关系管理)、...
可以通过 Subversion (SVN) 获取 Openbravo ERP 的最新源代码,这是进行自定义开发和贡献代码的基础。 **2.3 系统支持的平台架构** Openbravo ERP 支持多种操作系统平台,包括 Windows、Linux 和 macOS,同时也兼容...
《OpenbravoPOS 2.3汉化包详解与应用》 OpenbravoPOS,全称为Openbravo Point of Sale,是一款开源的销售点管理软件,专为零售业设计,旨在提供灵活、高效且易用的销售解决方案。2.3版本的汉化包是针对中国用户特别...
- **模型驱动开发**:Openbravo 通过模型驱动的方式来简化应用程序的开发过程。这种方式允许开发者通过定义数据模型来自动生成相关的代码,从而极大地提高了开发效率。 - **AD 应用字典**:这是一种用于存储应用程序...
java开发erp源码下载Openbravo ERP 这是Openbravo ERP的Bippo开发版本。 更多信息: 有用的参考: 准备 Tomcat 设置 安装(不要使用它的 Ubuntu 包)。 不要使用Apache 7.0! (Hendy 的注解:也许应该尝试使用 ...
Openbravo数据库关系表
5. **开放源码**:Openbravo是遵循LGPL许可证的开源项目,这意味着用户可以自由查看、修改和分发代码,促进社区协作和持续改进。 6. **国际化**:支持多种语言,包括本次提供的中文汉化,适应全球企业需求。 7. **...
openbravo compiere adempiere 开发部署日志 新建ReportView.doc compiere&adempiere开发日志.doc adempiere开发规则.doc 新建加审核的WorkFlow.doc ERP开发基础日志.doc compiere+常见144个问答.doc 开发手册中文...
Openbravo_ERP 的中文介绍,帮你快速走入 Openbravo_ERP 的世界
openbravoPOS 实操 底层数据库写入逻辑 业务推测
Openbravo erp 实施笔记
与openbravo 安装相关的openbravo 安装相关的openbravo 安装相关的openbravo 安装相关的openbravo 安装相关的openbravo 安装相关的openbravo 安装相关的openbravo 安装相关的openbravo 安装相关的openbravo 安装相关...