LoginSignup
2
0

More than 5 years have passed since last update.

モデルが空のServiceを作成する Liferay 7.0 / DXP

Last updated at Posted at 2017-07-01

空のサービスが必要なケース

LiferayにはService Builderという仕組みがあり、データベースアクセスをモデルへのアクセスとして隠蔽してくれる仕組みがあるが、データベースへのレコードの作成は必要ないが、以下の理由で空のサービスが必要になるケースがある。

  1. Web APIが必要
  2. 複数の他のサービスを組み合わせて、1つのトランザクションとして扱いたい(ユーザーが登録されたら、同時にサイトも作成する、のような場合、ユーザー管理のサービスと、サイト管理のサービスを1つのトランザクションで扱う必要がある、など)
  3. データベースアクセスのない、カスタムのサービスを作成したい。(計算処理を行う、文字列処理を行う、など)

その際に以下の方法でデータベースにレコードを作成しないサービスを作成できる。ただし、データベースにテーブルは生成されてしまう。

生成手順

  • 通常通り、Liferay IDE / Liferay Developer Studio / Bladeツールなどで、Liferay Workspaceを作成する。詳細に関してはユーザーガイドを参照してください。
  • ${liferay_workspace_root}/modulesに移動、サービスビルダーでサービスを作成する。ここでは例として、blade create -t service-builder -p com.liferay.test tasksとコマンドを打って、サービスを生成する。
  • tasksフォルダが生成されるので、tasks/tasks-service/service.xmlを開く
  • <entity local-service="true" name="Foo" remote-service="true" uuid="true">の行のuuid="true"uuid="false"に変更、フィールド定義を全て削除する。コードは以下のようになる
service.xml
<?xml version="1.0"?>
<!DOCTYPE service-builder PUBLIC "-//Liferay//DTD Service Builder 7.0.0//EN" "http://www.liferay.com/dtd/liferay-service-builder_7_0_0.dtd">

<service-builder package-path="com.liferay.test">
    <namespace>FOO</namespace>
    <!--<entity data-source="sampleDataSource" local-service="true" name="Foo" remote-service="false" session-factory="sampleSessionFactory" table="foo" tx-manager="sampleTransactionManager uuid="true"">-->
    <entity local-service="true" name="Foo" remote-service="true" uuid="false">
    </entity>
</service-builder>
  • gradle buildServiceを実行すると、空のモデルでサービスが生成される。
  • あとは普通のService Builderで生成されたサービスと同じく、*LocalServiceImpl.java, *ServiceImpl.javaにメソッドを書いて、再度gradle buildServiceを走らせることで、対応するインターフェースが自動生成される。
2
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
2
0