はじめに
Jouleでは現状、SAP Buildのロビーまたはローコード用のテンプレートで作成したプロジェクトしかサポートされません。cds init
で作成したプロジェクトでJouleのアイコンをクリックしても、"Not Available"と言われてしまいます。
Jouleのロジック生成やテストコード生成はかなり便利であり、既存のプロジェクトでも使いたいと思い、試してみました。
SAP Build Codeを使ってみた記事はこちら
結論
package.jsonに以下の設定を追加することで、既存のコードに対してもJouleが有効になります。なお、この方法はCAP Node.jsに対してのみ有効で、Javaはサポートされません。
"lcap": true
実施したステップ
1. プロジェクトを作成
cds init <プロジェクト名>
2. package.jsonに設定を追加
以下の設定を追加します。
"lcap": true
3. dependencyをインストール
@sap/low-code-event-handlerをインストールします。
npm install @sap/low-code-event-handler
テンプレートで生成したコードはこのモジュールを使用します。
/**
* Code is auto-generated by Application Logic, DO NOT EDIT.
* @version(2.0)
*/
const LCAPApplicationService = require('@sap/low-code-event-handler');
const books_Logic = require('./code/books-logic');
class CatalogService extends LCAPApplicationService {
async init() {
this.after('CREATE', 'Books', async (results, request) => {
await books_Logic(results, request);
});
return super.init();
}
}
module.exports = {
CatalogService
};
4. Jouleが有効になったことを確認
ブラウザをリフレッシュしてからJouleを開きます。(リフレッシュしないと元の状態のままです)
このあと、cds add tiny-sample
によるデータモデルの追加、およびJouleによるアプリケーションロジックの生成を行い、Cloud Foundryにデプロイして正常に動くことを確認しました。
注意点
既存のソースファイルに対してはJouleは利用できません。試しにイベントハンドラがすでにある状態でJouleを有効化してみます。
Open Guideが表示されますが、このソースに対してはサポートが有効ではありません。
Graphical Modelerからロジックを追加すると、既存のソースは上書きされます。よって既存のソースがある場合は退避しておく必要があります。