チュートリアル: マーケティングオートメーションUIにアクティビティの種類を追加する

Version:
日本語翻訳に関する免責事項

このページの翻訳はAIによって自動的に行われました。可能な限り正確な翻訳を心掛けていますが、原文と異なる表現や解釈が含まれる場合があります。正確で公式な情報については、必ず英語の原文をご参照ください。

アクティビティの種類 は、Marketing Automation Engineが連絡先をキャンペーンに登録するときに実行するアクションを定義します。組み込みのアクティビティ タイプはいくつかありますが、カスタム アクティビティ タイプを作成することもできます

アクティビティタイプを作成したら、コンテンツ作成者が使用できるように、そのアクティビティタイプをマーケティングオートメーション (MA) ユーザーインターフェースに追加する必要があります。これを行うには、Node Package Manager(NPM) パッケージに含まれるTypeScriptクラスとAngularベースのアクティビティエディタを組み合わせてMAプラグインを形成します。

このチュートリアルでは、次のタスクを実行する方法について説明します。

大事な

ワークステーション上にTypeScript、JSON、JavaScript、およびXMLファイル用のプロジェクトフォルダを作成する必要があります。このフォルダは、アクティビティタイプを作成したフォルダと同じである必要はありません。このチュートリアルでは、プロジェクト フォルダーを <project folder>と呼びます。

NPMパッケージを作成する

NPMパッケージの基本はpackage.jsonファイルです。他のNPMパッケージをパッケージに追加して、その機能を簡単に拡張できます。

NPMパッケージを作成するには:

  1. <project folder>/ フォルダーに、sample/ フォルダーを作成します。

  2. sample/フォルダに移動し、NPMを使用してpackage.jsonファイルを作成します。

    npm init
    メモ

    NPMはパッケージ フォルダー名にちなんでパッケージに名前を付け、オプションのフィールド (バージョン、説明、エントリ ポイント、テスト コマンド、gitリポジトリ、キーワード、作成者、ライセンス) のいずれにもカスタム値を選択する必要はありません。

  3. package.jsonファイルに、不足している依存関係を追加します。

    sample/package.json (for Sitecore 9.1+)
    
    "dependencies": {
      "@sitecore/ma-core": "<wwwroot>/<sitecore instance>/sitecore/shell/client/Applications/MarketingAutomation/packages/ma-core",
      "@angular/common": "5.2.11",
      "@angular/compiler": "5.2.11",
      "@angular/compiler-cli": "5.2.11",
      "@angular/core": "5.2.11",
      "@angular/forms": "5.2.11",
      "@angular/http": "5.2.11",
      "@angular/platform-browser": "5.2.11",
      "@ngx-translate/core": "9.0.2",
      "rxjs": "5.5.11",
      "zone.js": "^0.8.4"
    },
    "devDependencies": {
      "ts-loader": "4.4.2",
      "typescript": "2.5.3",
      "webpack": "4.43.0",
      "webpack-cli": "3.3.11"
    }
  4. package.jsonファイルを保存します。

  5. 不足している依存関係を次のコマンドでインストールします。

    npm install

アクティビティの種類を作成する

アクティビティの種類は、カスタムビジネスロジックを定義する場所です。 @sitecore/ma-coreパッケージには、拡張できる次の組み込みアクティビティの種類が含まれています。

アクティビティタイプを作成するには:

  1. <project folder>/sample/フォルダに移動します。

  2. src/フォルダを作成します。

  3. src/フォルダに移動し、sample-single-item-activity-type.tsファイルを作成します。

  4. サンプルのTypeScript実装をSingleItemアクティビティの種類からコピーします。

  5. オプションのカスタムコードを追加します。

  6. sample-single-item-activity-type.tsファイルを保存します。

アクティビティ エディターを作成する

コンテンツ作成者がアクティビティタイプに基づいてキャンペーンアクティビティを定義するときに使用するアクティビティエディター (グラフィカルユーザーインターフェイス) を作成する必要があります。

アクティビティエディターを作成するには:

  1. <project folder>/sample/src/フォルダに移動します。

  2. editor/フォルダを作成します。

  3. editor/ フォルダにsample-single-item-editor.component.tsファイルを作成します。

  4. アクティビティ エディターからサンプルのTypeScript component実装をコピーします。

  5. オプションのカスタムコードを追加します。

  6. sample-single-item-editor.component.tsファイルを保存します。

  7. sample-single-item-editor.module.tsファイルを作成します。

  8. アクティビティ エディターからサンプルのTypeScript module実装をコピーします。

  9. sample-single-item-editor.module.tsファイルを保存します。

MAプラグインを準備する

MAプラグインは、アクティビティ タイプとアクティビティ エディターが組み合わされる場所です。

MAプラグインを準備するには:

  1. <project folder>/sample/src/フォルダに移動します。

  2. 次のTypeScriptコードを含むsample.plugin.tsファイルを作成します。

    sample/src/sample.plugin.ts
    
    import { Plugin } from '@sitecore/ma-core';
    
    @Plugin({
      activityDefinitions: [ ]
    })
    
    export default class SamplePlugin {}
    大事な

    この時点では、アクティビティの種類をactivityDefinitionsセクションに追加しないでください。

    手記

    export defaultステートメントは、プラグインをパッケージのデフォルトエクスポートにします。これは、MAアプリケーションがそれを検出するために必要です。

  3. sample.plugin.tsファイルを保存します。

Angular AOTコンパイラを構成する

TypeScriptコードをコンパイルするには、Angular Ahead-of-Time (AOT) コンパイラ を構成する必要があります。

Angular AOTコンパイラを構成するには:

  1. <project folder>/sample/フォルダに移動します。

  2. package.jsonファイルに、Angular AOTコンパイラdevスクリプトを追加します。

    sample/package.json
    
    "scripts": {
      "test": "echo \"Error: no test specified\" && exit 1",
      "dev": "ngc -p ./src/tsconfig.aot.json"
    }
    手記

    Angular AOTコンパイラは、各MAプラグインのファクトリを生成します。このファクトリは、アクティビティエディターモジュールをプラグインデコレータに登録するために必要です。

  3. package.jsonファイルを保存します。

  4. 次のJSON構造を含むtsconfig.jsonファイルを作成します。

    sample/tsconfig.json
    
    {
      "compilerOptions": {
        "emitDecoratorMetadata": true,
        "experimentalDecorators": true,
        "target": "es5",
        "module": "es2015",
        "moduleResolution": "node",
        "removeComments": true,
        "sourceMap": true,
        "outDir": "./codegen",
        "rootDir": "./",
        "declaration": true,
        "lib": [
          "es2016",
          "dom"
        ],
        "baseUrl": ""
      }
    }
  5. tsconfig.jsonファイルを保存します。

  6. src/ フォルダーに、次のJSON構造を含むtsconfig.aot.jsonファイルを作成します。

    sample/src/tsconfig.aot.json
    
    {
      "compilerOptions": {
        "emitDecoratorMetadata": true,
        "experimentalDecorators": true,
        "target": "es5",
        "module": "commonjs",
        "moduleResolution": "node",
        "removeComments": true,
        "sourceMap": true,
        "outDir": "../codegen",
        "rootDir": "./",
        "declaration": true,
        "lib": [
          "es2016",
          "dom"
        ]
      },
      "angularCompilerOptions": {
        "genDir": "../codegen",
        "skipMetadataEmit": true,
        "generateCodeForLibraries": true
      }
    }
  7. tsconfig.aot.jsonファイルを保存します。

アクティビティの種類とアクティビティ エディターをコンパイルする

アクティビティの種類とアクティビティ エディターのTypeScriptをコンパイルし、それらをMAプラグインに追加する必要があります。

アクティビティタイプとエディタをコンパイルしてMAプラグインに追加するには:

  1. <project folder>/sample/フォルダに移動します。

  2. Angular AOTコンパイラを使用してcodegen/ フォルダーを作成し、次のコマンドでTypeScriptをコンパイルします。

    npm run dev

アクティビティタイプとアクティビティエディタをMAプラグインに追加する

アクティビティタイプとアクティビティエディタをMAプラグインのactivityDefinitionsプロパティに追加する必要があります。

activityDefinitionsプロパティは、ActivityDefinitionオブジェクトの配列です。各オブジェクトには、次の必須プロパティがあります。

財産

種類

形容

id

string

sitecore/System/Settings/Analytics/Marketing Automation/Activity Typesアイテムの下のMasterデータベースに存在するSitecoreアクティビティ アイテムID。

activity

ItemBase

SingleItemFinalItemConditionItem、またはDecisionPointItemクラスを拡張する必要があるアクティビティ クラス。

editorComponent

EditorBase

codegen/ フォルダーから参照する必要があるアクティビティ エディター クラス。

editorModuleFactory

NgModuleFactory<any>

Angular AOTコンパイラによって生成されるファクトリ アーティファクト。

アクティビティタイプとアクティビティエディタをMAプラグインに追加するには:

  1. <project folder>/sample/src/ フォルダのsample.plugin.tsファイルに、次のimportステートメントとactivityDefinitionsを追加します。

    sample/src/sample.plugin.ts
    
    import { Plugin } from '@sitecore/ma-core';
    import { SampleSingleItemActivityType } from './sample-single-item-activity-type';
    import { SampleSingleItemModuleNgFactory } from '../codegen/editor/sample-single-item-editor.module.ngfactory';
    import { SampleSingleItemEditorComponent } from '../codegen/editor/sample-single-item-editor.component';
    
    @Plugin({
      activityDefinitions: [
        {
          // The ID of the sitecore activity item that exists in the Master database under
          // sitecore/System/Settings/Analytics/Marketing Automation/Activity Types item
          id: '5908ca79-1089-440b-9af1-a2f47766a783',
          activity: SampleSingleItemActivityType,
          editorComponenet: SampleSingleItemEditorComponent,
          editorModuleFactory: SampleSingleItemModuleNgFactory
        }
      ]
    })
    
    export default class SamplePlugin {}
  2. sample.plugin.tsファイルを保存します。

webpackモジュール バンドラーを構成する

webpackモジュールバンドラーを設定して、プラグインアーティファクトを1つの出力ファイルに結合する必要があります。

大事な

MAアプリケーションはSystemJSを使用してプラグインをロードします。つまり、プラグインモジュールの形式は、SystemJSでサポートされている任意の形式にすることができます。ここでは、libraryTargetプロパティで定義されているユニバーサル モジュール フォーマット (UMD) を使用します。

webpackモジュール バンドラーを設定するには:

  1. <project folder>/sample/フォルダに移動します。

  2. 次のJavaScriptコードを使用してwebpack.config.jsファイルを作成します。

    sample/webpack.config.js
    
    var path = require("path");
    
    module.exports = {
      entry: "./src/sample.plugin.ts",
      module: {
        rules: [
          {
            test: /\.ts$/,
            use: "ts-loader",
            exclude: path.resolve(__dirname, "node_modules")
            }
          ]
      },
      resolve: {
        extensions: [".ts", ".js"]
      },
      output: {
        path: path.resolve(__dirname, "dist"),
        filename: "sample.plugin.js",
        library: "samplePlugin",
        libraryTarget: "umd"
      },
      externals: [
        "@sitecore/ma-core",
        "@angular/core",
        "@ngx-translate/core"
      ]
    };
    手記

    MAアプリケーションは、実行時に @sitecore/ma-core@angular/core、および @ngx-translate/coreライブラリを提供します。 externalsとして設定されていない場合、プラグインアーティファクトにバンドルされ、プラグインはロードできません。

  3. webpack.config.jsファイルを保存します。

  4. package.jsonファイルにwebpack buildスクリプトを追加します。

    sample/package.json
    
    "scripts": {
      "test": "echo \"Error: no test specified\" && exit 1",
      "dev": "ngc -p ./src/tsconfig.aot.json",
      "build": "webpack"
    }
  5. package.jsonファイルを保存します。

MAプラグインをビルドします。

単一ファイルのMAプラグインをMAアプリケーションにデプロイするには、それをビルドする必要があります。

MAプラグインをビルドするには:

  • <project folder>/sample/フォルダで、次のコマンドを使用してMAプラグインをdist/sample.plugin.js fileにビルドします。

    npm run build

MAプラグインをデプロイする

MAプラグインをSitecoreにデプロイして、MAアプリケーションが検出できるようにする必要があります。

プラグインをデプロイするには:

  1. <project folder>/sample/フォルダに移動します。

  2. 次のコマンドを使用して、MAプラグインファイルをMAアプリケーションにデプロイします。

    cp dist/sample.plugin.js <webroot>/sitecore/shell/client/Applications/MarketingAutomation/plugins/
  3. 次のXMLを使用してSamplePlugin.config構成ファイルを作成します。

    SamplePlugin.config
    
    <?xml version="1.0" encoding="utf-8"?>
    <configuration>
      <sitecore>
        <marketingAutomation>
          <pluginDescriptorsRepository>
            <plugins>
              <!-- Assuming that the plugin bundle file name is sample.plugin.js
              and is deployed directly under the plugins folder -->
              <plugin path="./plugins/sample.plugin.js" />
            </plugins>
          </pluginDescriptorsRepository>
        </marketingAutomation>
      </sitecore>
    </configuration>
  4. 次のコマンドを使用して、SamplePlugin.config設定ファイルをMAアプリケーションにデプロイします。

    cp SamplePlugin.config <webroot>/App_Config/Include/

アクティビティの種類を確認する

コンテンツ作成者がアクティビティタイプを使用できるかどうかは、MAユーザーインターフェースで確認する必要があります。

アクティビティタイプを確認するには:

  1. Sitecoreスタート画面で、Marketing Automationをクリックします。

  2. 既存のキャンペーンを開くか、新しいキャンペーンを作成します。

  3. 画面の右側にある ツールボックス ウィンドウで、アクティビティの種類が存在するかどうかを確認します。

この記事を改善するための提案がある場合は、 お知らせください!