Dynamics CRM 2014 年春/SP1 SDK の新機能 ソリューション展開ツールとパッケージテンプレート その 3

みなさん、こんにちは。

今回も前回に引き続き、ソリューション展開ツールとパッケージ
テンプレートの紹介です。今回は前回作成したパッケージをさらに
カスタマイズしていきます。まだパッケージを作成していない方は
前回の記事を参考にして作成してください。

初めに/終わりに画面

まずは初めにと終わりに画面のカスタマイズを行います。これらの
画面は多言語対応が可能です。ここでは英語と日本語の画面を作成
していきます。

英語画面のカスタマイズ

英語の画面は既定で用意されています。以下手順で編集します。

1. ソリューションエクスプローラーより PkgFolder\Content\en-us
WelcomeHtml\HTML\Default.htm をクリックします。

image

2. 39 行目のタイトルを以下のように変更します。

<h2 class="CommonTitle">Deployer Test Package</h2>

3. 41行目に説明を入力します。HTML 形式です。今回は以下の説明
を入れてみました。

<div style='text-align: left; font-family: Segoe, Arial, Helvetica; font-size: 80%;'>
    This package contains 3 custom entities with relationships and sample data.
    <br />
    <br />
    <br />
</div>

日本語画面の作成

次に日本語画面を追加します。

1. PkgFolder\Content 直下の en-us フォルダをコピーして同じ階層に
貼り付けます。

image

2. フォルダ名を ja-jp に変更します。

3. 配下の WelcomeHtml\HTML\Default.htm を日本語にします。

<h2 class="CommonTitle">配置テスト用パッケージ</h2>
<div style='text-align: left; font-family: Segoe, Arial, Helvetica; font-size: 80%;'>
    このパッケージには 3 つのカスタムエンティティと関連、およびサンプルデータが含まれます。
    <br />
    <br />
    <br />
</div>

上記手順を EndHtml にも繰り返します。

パッケージの実行

ソリューションを再度コンパイルして配置後、ソリューション
展開ツールを再度実行してみます。以下の様に画面が更新されて
いれば成功です。

image

image

パッケージ名のカスタマイズ

上記画面ではパッケージ名が Package Short Name, Package Long
Name のままです。HTML を編集して変更することは可能ですが、
以下に正しい変更手順を紹介します。

1. PackageTemplate.cs を開きます。

2. 短い名前の変更は GetNameOfImport メソッドを変更します。
現在の言語を取得する方法として今回は LCID を使ってみました。

public override string GetNameOfImport(bool plural)
{
    CultureInfo culture = CultureInfo.CurrentCulture;
           
    switch(culture.LCID)
    {
        case 1041:
            return "配置テスト用パッケージ";
        case 1033:
            return "Deployer Test Package";
        default:
            return "Package Short Name";
    }           
}

3. 長い名前を変更する場合 GetLongNameOfImport メソッドを
書き換えます。ここでも言語は LCID を使いました。

public override string GetLongNameOfImport
{

    get {
        CultureInfo culture = CultureInfo.CurrentCulture;

        switch (culture.LCID)
        {
            case 1041:
                return "配置テスト用パッケージ バージョン 1.0";
            case 1033:
                return "Deployer Test Package Ver. 1.0";
            default:
                return "Package Long Name";
        }
    }
}

コンパイルして再度動作を確認します。

image

フラットファイルの利用

前回の記事ではデータのインポートに Configuration Migration
ツールからエクスポートした zip ファイルを利用しましたが、
今回 CSV ファイルを指定する方法も紹介します。また今回は
事前にマッピングファイルも作成済であると仮定します。

ファイルの配置

CSV ファイルとマップファイルは PkgFolder 配下に配置します。

image

※必ずいずれのファイルも、プロパティより出力ディレクトに常に
コピーするように設定を変更してください。

構成ファイルの変更

1. ソリューションエクスプローラーより PkgFolder\Content
ImportConfig.xml を開きます。

image

2. 以下の要素を filestoimport ノードに追加します。

<configimportfile filename="取引先企業.csv"
                  filetype="CSV"
                  associatedmap="取引先企業CSVマップ"
                  importtoentity="account"
                  datadelimiter=""
                  fielddelimiter="comma"
                  enableduplicatedetection="false"
                  isfirstrowheader="true" 
                  isrecordownerateam="false"
                  owneruser=""
                  waitforimporttocomplete="false" /> 

- asscoiatemap はマッピングファイル名ではなく、マッピングが
作られた際のレコード名を指定。
- importtoentity にインポート先エンティティの論理名を指定。

その他は属性名が示す通りの意味となります。

3. 以下の要素を filesmapstoimport ノードに追加します。

<configimportmapfile filename="取引先企業CSVマップ.xml" />

4. ソリューションをコンパイルします。

動作確認

コンパイルしたファイルとフォルダを PackageDeployer フォルダ
にコピーして、PackageDeploer.exe を実行します。基本的な動作
は同じですが、処理がフラットファイルとマッピングファイル
の分だけ増えて、以下の画面出ます。

[準備画面]
image

[処理画面]
image

まとめ

大分ソリューション展開ツールとパッケージテンプレートの
使い方が分かってきたのではないでしょうか。次回はさらに
踏み込んだ使い方を紹介していきますので、お楽しみに!

- 中村 憲一郎