一.需求背景
假设我们在开发一个人力资源模块,现在需要一个窗口来管理员工的工资信息。这里面涉及到员工信息与工资信息。OB里面已经有管理员工信息的窗口了,只需要把ISEMPLOYEE勾选上,这个客户信息就变成了员工信息了。我们只需要新建一张表来保存对应的工资信息就好了。
二.具体步骤
1. 创建一个模块
Openbravo的ERP的2.50推出了模块化概念。模块化使开发人员能够开发,打包和分发他们的工作。对于Openbravo ERP的用户而言,模块化设计使得他们可以下载,安装和更新自己想要的模块。
a. 主菜单:Application Dictionary ---> Module 如下图所示建立一个模块
b. 切到这个模块下面的3个子页签:Dependency,DB Prefix,Data Package。依次如下设置:
Dependency(模块依赖,所有新增的模块都依赖于Core模块)
DB Prefix(这个模块对应的数据库表的表前缀,表前缀必须全局唯一,在你将你这个模块注册到OB的Central Repository的时候,会检查它的唯一性,避免你开发的模块的表与其他开发者开发的表混淆。另外注册的时候,也会检查你模块的java package是否重复)
Data Package(存放着与数据库中表对应的对象,也就是我们常说的pojo类. 在src-gen文件夹下)
2. 创建对应的表
a. 利用PLSQL登陆上oracle数据库,在里面新建一张表。(如果你用的是大象数据库,自己想办法) SQL语句如下:
- create table LWE_SALARY
- (
- LWE_SALARY_ID VARCHAR2(32) not null,
- AD_CLIENT_ID VARCHAR2(32) not null,
- AD_ORG_ID VARCHAR2(32) not null,
- ISACTIVE CHAR(1) default 'Y' not null,
- CREATED DATE default SYSDATE not null,
- CREATEDBY VARCHAR2(32) not null,
- UPDATED DATE default SYSDATE not null,
- UPDATEDBY VARCHAR2(32) not null,
- C_BPARTNER_ID VARCHAR2(32) not null,
- AMOUNT NUMBER not null,
- C_CURRENCY_ID VARCHAR2(32) not null,
- VALIDFROM DATE not null
- )
- tablespace USERS
- pctfree 10
- initrans 1
- maxtrans 255
- storage
- (
- initial 64K
- minextents 1
- maxextents unlimited
- );
- alter table LWE_SALARY
- add constraint LWE_SALARY_KEY primary key (LWE_SALARY_ID)
- using index
- tablespace USERS
- pctfree 10
- initrans 2
- maxtrans 255
- storage
- (
- initial 64K
- minextents 1
- maxextents unlimited
- );
- alter table LWE_SALARY
- add constraint LWE_SALARY_AD_CLIENT foreign key (AD_CLIENT_ID)
- references AD_CLIENT (AD_CLIENT_ID);
- alter table LWE_SALARY
- add constraint LWE_SALARY_AD_ORG foreign key (AD_ORG_ID)
- references AD_ORG (AD_ORG_ID);
- alter table LWE_SALARY
- add constraint LWE_SALARY_C_BPARTNER foreign key (C_BPARTNER_ID)
- references C_BPARTNER (C_BPARTNER_ID);
- alter table LWE_SALARY
- add constraint LWE_SALARY_C_CURRENCY foreign key (C_CURRENCY_ID)
- references C_CURRENCY (C_CURRENCY_ID);
-- Create table create table LWE_SALARY ( LWE_SALARY_ID VARCHAR2(32) not null, AD_CLIENT_ID VARCHAR2(32) not null, AD_ORG_ID VARCHAR2(32) not null, ISACTIVE CHAR(1) default 'Y' not null, CREATED DATE default SYSDATE not null, CREATEDBY VARCHAR2(32) not null, UPDATED DATE default SYSDATE not null, UPDATEDBY VARCHAR2(32) not null, C_BPARTNER_ID VARCHAR2(32) not null, AMOUNT NUMBER not null, C_CURRENCY_ID VARCHAR2(32) not null, VALIDFROM DATE not null ) tablespace USERS pctfree 10 initrans 1 maxtrans 255 storage ( initial 64K minextents 1 maxextents unlimited ); -- Create/Recreate primary, unique and foreign key constraints alter table LWE_SALARY add constraint LWE_SALARY_KEY primary key (LWE_SALARY_ID) using index tablespace USERS pctfree 10 initrans 2 maxtrans 255 storage ( initial 64K minextents 1 maxextents unlimited ); alter table LWE_SALARY add constraint LWE_SALARY_AD_CLIENT foreign key (AD_CLIENT_ID) references AD_CLIENT (AD_CLIENT_ID); alter table LWE_SALARY add constraint LWE_SALARY_AD_ORG foreign key (AD_ORG_ID) references AD_ORG (AD_ORG_ID); alter table LWE_SALARY add constraint LWE_SALARY_C_BPARTNER foreign key (C_BPARTNER_ID) references C_BPARTNER (C_BPARTNER_ID); alter table LWE_SALARY add constraint LWE_SALARY_C_CURRENCY foreign key (C_CURRENCY_ID) references C_CURRENCY (C_CURRENCY_ID);
b. 在应用字典注册这张表
主菜单下面: Application Dictionary ---> Tables and Columns
Data Package : 选择模块里面定义的那个Data Package
Name: 用于在程序中定位到这张表的唯一标志
DB Table Name:对应数据库中表的名称
Java Class Name:这张表对应的pojo类的名称。(在src-gen文件夹定义的那个Data Package下面能够找到这个类)
Data Access Level:数据访问级别,这里可以设置是集团访问,公司访问还是 系统才能访问等等。
Window:这里不需要填,还没有定义对应的窗口。(这个得定义好了窗口回来填写)
b. 点击保存之后,点击 Create columns from DB 这个按钮,会自动生成对应的列。
c. 主菜单:Application Dictionary ---> Synchronize Terminology 这个程序将会自动将系统里面已经定义好的一些通用信息(比如,集团,组织机构,是否有效,创建人,创建日期等等)与你这个表里面的通用信息挂上钩,方便今后维护。
d. 那些自动生成的列有一些需要调整,具体调整如下:
- Amount: Reference = Amount, Length = 10
- C_BPartner_ID: Reference = Search, Reference Search Key = Business Partner, Length = 32, Link To Parent Column = Y
- Valid From: used as Record Identifier = Y
- Amount: used as Record Identifier = Y
3. 创建窗口
a. 主菜单:Application Dictionary ---> Windows, Tabs and Fields 如下图所示:
b. 切到Tab子页签,点击新建,如下图所示
c. 保存之后,点击Copy Tab Fields 按钮,选择Business Partner-Business Partner 这一项。点击OK。
d. 仍然在Tab页签,点击新建,创建第二个页签
Module:选择我们上面创建的那个模块
Name:页签名称
Table:对应在应用字典注册好的表
e. 保存之后,点击 Create Fields 按钮,即可自动创建字段。当然这些字段可能不符合要求,你可以进行隐藏或者布局之类的,就不细讲了。
f. 将窗口与在应用字典定义的表对应起来,也就是第2步的b步骤,将window字段填上我们刚刚定义好的窗口。
4. 新建菜单
a. 主菜单:General Setup ---> Application ---> Menu ,点击新建
Module: 选择我们定义的模块
window:选择我们定义好的窗口
b. 保存之后,点击工具条上 如下按钮 。切换到菜单树形结构,拖动刚刚新建的菜单到想要的位置。
5. 编译
a. 编译之前最好把tomcat停掉。
b. 在eclipse里面选中 eclipse.compile.launch文件点击右键 Run As -->Eclipse Compile , 在弹出的对话框中输入窗口的名称。如下图所示
如果编译成功,重新编译整个项目,然后启动tomcat应该就可以使用了!