Openbravo如何新建一个调用
一. 需求
在商品管理页面,商品编码由商品名称和种类名构成。比如,商品名为orange,分类名为fruit,那么商品编码自动变成orange_fruit。如何实现商品名,或者分类名变化的时候,商品编码跟着变,是本文要介绍的内容。
二. 步骤
1. 新建一个模块
点击Application dictionary->module,打开模块管理页面,点击新建。下面设置的参数是举例,你们可以自己设置成其他的或者直接按照我说的设置。表头java package: org.openbravo.lws.howtos name:lwstest type: module description: for test callout version:1.0.0。表体,dependency页签:新建一行记录dependent module选择User Interface Application。DBPrefix页签新建一条记录,录入LWS321. Data Package页签新建一条记录,name录入lwstest data package,java package录入org.openbravo.lws.howtos.data.
2. 编写后台代码
项目src目录下面新建一个类ProductConstructSearchKey,包名为:org.openbravo.lws.howtos.ad_callouts内容如下:
// the package name corresponds to the module's manual code folder
// created above
package org.openbravo.lws.howtos.ad_callouts;import javax.servlet.ServletException;import org.openbravo.base.secureApp.VariablesSecureApp;
import org.openbravo.dal.service.OBDal;
import org.openbravo.erpCommon.ad_callouts.SimpleCallout;
import org.openbravo.model.common.plm.ProductCategory;
import org.openbravo.utils.FormatUtilities;public class ProductConstructSearchKey extends SimpleCallout {private static final long serialVersionUID = 1L;@Overrideprotected void execute(CalloutInfo info) throws ServletException {String strProductName = info.getStringParameter("inpname", null);String strProductCategoryId = info.getStringParameter("inpmProductCategoryId", null);info.addResult("inpvalue", getConstructedKey(info.vars, strProductName,strProductCategoryId));}protected String getConstructedKey(VariablesSecureApp vars,String strProductName, String strProductCategoryId) {final ProductCategory productCategory = OBDal.getInstance().get(ProductCategory.class, strProductCategoryId);String strProductCategoryName = productCategory.getName();String generatedSearchKey = FormatUtilities.replaceJS(strProductName.replaceAll(" ", ""))+ "_" + strProductCategoryName.replaceAll(" ", "");return generatedSearchKey;}
}
3. 将调用注册到数据字典
点击 Application Dictionary || Setup || Callout 新建一条记录,module选择我们刚刚新建的module,name填写product_Construct_Searchkey,表体java class name填写刚刚新建的那个类org.openbravo.lws.howtos.ad_callouts.ProductConstructSearchKey。
4. 将调用跟数据库列对应起来
点击 Application Dictionary || Tables and Columns ,找到m_product表,切到表体column页签找到name列和Product Category列。将里面的Callout字段值设置为刚刚新建的callout:product_construct_searchkey。
5. 导出数据与编译
运行项目openbravo目录下面的export.database.launch文件,也就是运行ant export.database命令。
然后运行eclipse.compile.launch文件,弹出框输入需要重新编译的窗口也就是Product。重启tomcat应该就可以看到效果了。
Openbravo如何新建一个调用相关推荐
- (测试)Openbravo如何编写一个测试用例
一. 目标 这一篇文章的目标在openbravo里面建立一个测试用例,用来单元验证一段代码的正确性.比如我们写了一个后台持久化方法,需要验证是否写得正确,而前台又没有写好,无法测试.这个时候,我们可以 ...
- java web service_怎样新建一个Java的Web Service
展开全部 1.web service分客户端和服务端. 2.新建服务端:在这里我教你用MyEclipse自带的工具62616964757a686964616fe4b893e5b19e31333337 ...
- eclipse新建一个java_Eclipse中新建一个java源文件的步骤
[简答题]请根据第六次讨论题目进行讨论.并将你的讨论回答的ppt传到此处. [简答题]P152页,习题9 一.二(2,3).请将回答的word文档上传到此处. [简答题]第五次讨论:讨论题目参见课程网 ...
- VS2005下如何新建一个WINCE设备的DLL工程
一. 动态链接库简介 1.1 DLL概述 动态链接库(Dynamic Link Library, j简称DLL)是一些编译过的可执行的程序模块,可以在应用程序中或其他DLL中被调用.DLL ...
- Java中怎样新建一个list并给其赋值
场景 在Java中新建对象并赋值的方法一般是 int a = 1; String b="公众号:霸道的程序猿"; 即使是数组,在新建时并赋值 int[] x={1,2,3,4}; ...
- Intellij IDEA 新建一个EJB工程(三)
之前都是用IDEA启动JBoss服务器,并在启动的同时将EJB项目部署上去.在构建 artifacts 时遇到很多问题,明明是EJB项目却不能用EJB导出,真是奇怪~~ 后来用Web Applicat ...
- 如何用python新建文件夹_用Python编写一个每天都在系统下新建一个文件夹的脚本...
这个程序的功能非常的简单,就是每天在系统中新建一个文件夹.文件夹即当前的时间.此代码是在同事那边看到的,为了锻炼下自己薄弱的Python能力,所以花时间重新写了一个.具体代码如下: import ti ...
- django新建一个项目_如何使用Django创建项目
django新建一个项目 Now that we know how to create virtual environments and use pip, we can begin building ...
- Android:新建一个Activity(隐式/显式),并携带数据
新建一个Activity(隐式/显式),并携带数据 目录 新建一个Activity(隐式/显式),并携带数据 一.项目结构 二.隐式Activity 三.显式Activity 四.效果图(三个界面) ...
- ad 新建一个componen的类_Glyphs智能母件:字体设计师的好帮手 Glyphs smart Component: a good helper font designer...
http://www.ad518.com/article/2017/11/12536 我们将为大家介绍Glyphs最受人瞩目的一项功能:智能母件(Smart Component) 字体是大家每天都在接 ...
最新文章
- 适用于WIFI Hacking的无线网卡推荐
- python 读下一行-Python-将前一行和下一行绑定到当前行。
- c语言中的运算符和表达式试卷答案,c语言试卷和答案1
- mysql 批量增加字段命令_sql使用命令批量给一个表添加字段
- C++文件流操作备忘录
- python咖啡名称提取_(转)Python中文全攻略
- Lucene组件概述
- Android【报错】Description	Resource	Path	Location	Type Call requires API level 9 (current min is 8):
- 2022年网络工程师考试知识点:网络攻击
- 十六、react UI组件库
- 智汇上海:微软在中国的AI人工智能布局
- mysql analyze_MySQL数据库执行analyze采集信息
- 大数据入门最全组件思维导图
- java lowpoly低多边形风格图片生成
- The server is invalid. Error occurred reading server credential. Required file or directory ‘serverO
- 向量点积衡量相似度_点积相似度、余弦相似度、欧几里得相似度
- 一文读懂ADAS系统
- 淘宝封杀selenium的ua算法分析
- python 获取当前网页_你好,想知道python scrapy 如何获取当前页面url?
- 医院医生护士都不愿说的医学小常识