在Liferay二次开发中使用ServiceBuilder

(2009-10-23 09:39:46)
标签:

liferay

servicebuilder

杂谈

分类: Liferay学习笔记

在Liferay二次开发中使用ServiceBuilder:

根据Xml描述文件,使用ServiceBuilder可以产生如下信息:

   Java Beans
   SQL scripts for database tables creation
   Hibernate Confguration
   Spring Confguration
   Axis Web Services
   JSON JavaScript Interface

下面是此xml举例:

<?xml version="1.0"?>
<!DOCTYPE service-builder PUBLIC "-//Liferay//DTD Service Builder 
  5.2.0//EN" "http://www.liferay.com/dtd/liferay-service-
  builder_5_2_0.dtd">
<service-builder package-path="com.ext.portlet.reports">
  <namespace>Reports</namespace>
  <entity name="ReportsEntry" 
          uuid="true" 
          local-service="true" 
          remote-service="true"
          persistence-class="com.ext.portlet.reports.service.
                            persistence.ReportsEntryPersistenceImpl">
    <!-- PK fields -->
    <column name="entryId" type="String" primary="true" />
    <!-- Audit fields -->
    <column name="companyId" type="String" />
    <column name="userId" type="String" />
    <column name="userName" type="String" />
    <column name="createDate" type="Date" />
    <column name="modifiedDate" type="Date" />
    <!-- Other fields -->
    <column name="name" type="String" />
    <!-- Order -->
    <order by="asc">
      <order-column name="name" case-sensitive="false" />
    </order>
    <!-- Finder methods -->
    <finder name="CompanyId" return-type="Collection">
      <finder-column name="companyId" />

  </finder>
    <finder name="UserId" return-type="Collection">
      <finder-column name="userId" />
    </finder>
  </entity>
  <exceptions>
    <exception>EntryName</exception>
  </exceptions>
</service-builder>

service.xml编写规范

 

序号 属性名 必须 描述
1 service-builder ->package-path 必填 包路径
2 namespace 必填 命名空间
3 entity->name 必填 实体名
4 entity->table 必填 数据库表名称
5 entity->local-service 必填 本地服务
6 entity->remote-service 必填 远程服务
7 column->primary 必填 每个实体中至少有一个主键,primary="true"表明该列是主键

 

 

然后在ext ext-impl中的build.xml中添加相应的任务:

<target name="build-service-portlet-reports">
   <antcall target="build-service">
      <param name="service.file" 
             value="src/com/ext/portlet/reports/service.xml" />
   </antcall>
</target>

下面就可以使用Ant。

 

 

在Ant build-service-portlet-reports的任务中,可以明显看到调用了build-service

而透过Ant build-parent.xml可以清晰的看到执行com.liferay.portal.tools.ServiceBuilder

经过查询com.liferay.portal.tools.ServiceBuilder的源代码,我们可以清晰的看到他的执行过程

它首先会获取Ant 任务参数获取,然后创建ServiceBuilder实例。。。。。。

 

其实根据这个ServiceBuilder我们可以清晰的明白中hibernate spring 清晰的业务处理关系