OFBiz定时任务详解

OFBiz中的job相关的业务还是比较重要的,异步的service、eca已经任务计划都是通过这个来实现和调度的。

但是如果部署了2个OFBiz实例的话,就会出现冲突,每个实例都认为那些job是需要自己执行的,所以需要修改一些配置文件来达到这样的目的。

serviceengine.xml
这个文件正在framework/service/config/serviceengine.xml,找到以下代码

<!-- Thread pool configuration (max/min threads, uses to live and time to live) -->
<thread-pool send-to-pool="pool"
    purge-job-days="4"
    failed-retry-min="3"
    ttl="18000000"
    wait-millis="750"
    jobs="10"
    min-th[......]

继续阅读

Docker使用心得以及部署一个Mysql container

最近公司在使用Docker,确实是一个很好用的东西,就像集装箱一样,一层一层的堆叠,操作简单,实用性强,性能也特别好,玩法有很多,可以结合自己项目的实际情况来定制。

安装 Docker

方法可以在官网上看,www.docker.com
在Ubuntu 14.x 以上版本是无缝安装:

$ which curl
$ sudo apt-get update
$ sudo apt-get install curl 
(如果有了curl忽略上面的3步)
$ curl -fsSL https://get.docker.com/ | sh

完成后,docker 就安装完成了,打 sudo docker version就可以查看当前的docker的版本号。
file

Mac 和 Windows的安装有点小麻烦,需要安装官方的 Docker Toolboxhttps://www.docker.com/products/docker-toolbox 实际上就是一个虚拟机,然后在虚拟机中运行Ubuntu来安装Docker。

下载Mysql的image

Mysql 可以从官方的dockerhub上去pull,也可以使[……]

继续阅读

OFBiz的国际化XML代码快速生成

因为公司要求项目中除了注释外,前台的view中不要出现中文,全部都使用国际化的代码来配置,增加了很多工作量,而且英文不好的人来说简直是天大的灾难,于是我就写了个小工具,来生成OFBiz的国际化的标签,支持自己配置,也可以直接输入中文,在线翻译。

调用有道翻译的API,为什么不调用Google Translate,因为注册有点麻烦。

<html>
    <head>
        <title>自动转换OFBiz国际化</title>
        <script type="text/javascript" src="http://apps.bdimg.com/libs/jquery/2.1.4/jquery.min.js"></script>
        <script type="text/javascript">
            $(function(){
                $("#gen&quo[......]

继续阅读

OFBiz常用实体介绍

Party  人员组织
Person  人员(人)
PartyGroup  用户组(公司、组织等)
PartyRole  人员角色(给PARTY 加角色,比如职员、快递公司、客户等)
RoleType 角色定义表(定义了角色)
PartyAttribute 人员组织属性表(其他扩展属性,比如社保号等)
PartyRelationship  人员组织关系表(比如某个人关联到某个公司,角色是员工)
UserLogin  登陆用户表 
SecurityPermission 权限表,定义了一些权限
SecurityGroup 权限组
SecurityGroupPermission 把权限定义成很多个权限组
UserLoginSecurityGroup 登陆用户关联的权限组

PartyContactMech 人员联系机制表
PartyContactMechPurpose 人员联系机制目的表
PostalAddress 地址表
TelecomNumber 电话表

Product  产品
ProductAttribute 产品属性
ProductPrice  价格
ProductAssoc 产品和产[……]

继续阅读

OFBiz常用代码片段分享

1、快速封装需要调用services 的参数

ModelService promoModel = dctx.getModelService( "updateContent" );
Map<String, Object> invokeCtx = promoModel.makeValid(tempMap, ModelService.IN_PARAM);

2、快速验证services返回是否正确和错误信息

ServiceUtil.isError(result)
ServiceUtil.getErrorMessage(result)

3、快速将一个实体对象转换成Map

Map<String,Object> tempMap = genericvalue.getAllFields();

4、在screen中使用groovy调用java方法

<actions>
    <set field= "productStore"  value= "${groovy: org.ofbiz.product.store.P[......]

继续阅读

Ofbiz tenant架构配置

一、 手动配置一个 demo
a) 配置好 OFBiz 的主数据库和 tenant 多租户数据库,

配置 default 的主数据库 org.ofbiz 和 tenant 的配置数据库 org.ofbiz.tenant (里面存放的是每个 tenant 的数据库配置、默认的模块等信息),这里已 mysql 数据库为案例,下面的具体配置就不贴了,就是默认的。

b) 配置一个 demo 的 tenant
打开 OFBIZ-HOME/framework/entity/data/TenantDemoData.xml.xml 配置这个 demo tenant 的数据库配置,如下

这里需要注意的是,如果使用mysql数据库的话,必须提前创建好数据库,mysql不知道有没有自动创建数据库的功能,我没找到,到时候可以使用shell或者其他方式来做。并且在TenantDataSource标签的entityGroupName属性不能写org.ofbiz.tenant

c) load-demo 后,会在 tenant 的配置数据库中写入所有的 tennat 的配置,包括数据库信息,可以使用的组[……]

继续阅读