次の方法で共有


外部サービスを使用したラベルの印刷

この記事では、外部サービスを使用してラベルを設定および印刷する方法について説明します。 この機能は、Document Routing Agent (DRA) を必要とせず、HTTP API を介して通信するフレームワークを提供することで、Microsoft Dynamics 365 Supply Chain Management とサードパーティ ソリューション間の直接対話を可能にします。 Seagull Scientific BarTender®Loftware NiceLabel のようなサードパーティのラベル製品を使用することで、さまざまなタイプのラベルをデザインし、印刷することができます。

次の図は、DRA 経由の印刷と外部サービス経由の印刷を比較したものです。 それぞれの方法の利点と欠点を強調し、お客様のビジネスニーズに最も適した印刷ソリューションを決定するのに役立ちます。

DRA を使用してラベルを印刷する

DRA を使用してラベルを印刷します。

外部サービスを利用したラベル印刷

外部サービスを利用したラベル印刷です。

ドキュメント ルーティング フレームワークの詳細については、Document Routing Agent をインストールしてネットワーク印刷を有効にする を参照してください。

Loftware NiceLabel サードパーティ ラベル印刷サービスにこの機能を設定するには、Loftware NiceLabel ラベルサービス ソリューションを使用してラベルを印刷する を参照してください。

サードパーティ製ラベル印刷サービス Seagull Scientific BarTender のこの機能の設定方法については、Seagull Scientific BarTender ラベル サービス ソリューションを使用したラベル印刷 を参照してください。

前提条件

この記事で説明されている機能を使用するには、Supply Chain Management バージョン 10.0.34 以降を実行している必要があります。

必要な構成の概要

外部サービスを介したラベル印刷を有効にするには、次の要素を設定する必要があります:

  • 外部サービス定義 – この要素は、外部 API の呼び出し方法を定義します。 定義は 1 つ以上の操作で構成されます。
  • 外部サービス インスタンス – この要素は、外部サービス定義によって記述されるサービスの特定の展開を表します。 サービスの URL と使用する認証シークレットを指定します。 外部サービス定義ごとに、1 つ以上のインスタンスを使用できます。 たとえば、複数の倉庫を設定し、各倉庫にラベル付けソフトウェアを独自のオンプレミスでインストールすることができます。
  • ラベル プリンター – この要素は、ラベル付けサービスによって管理されるラベル プリンターを定義します。
  • ドキュメント ルーティング設定 – この要素は、特定のビジネス プロセスのどのレイアウトにどのプリンタが使用されるかを定義します。
  • ラベル レイアウト – この要素はラベル レイアウトを定義します。

この記事の残りのセクションでは、これらの各要素の構成方法について説明します。

外部サービス定義の設定

外部サービス定義は、特定のサービスを呼び出す方法を定義します。 この構成は、外部サービスがサポートする API 定義に依存します。 通常、これらの API 定義は外部サービス プロバイダーによって提供されます。

外部サービス定義を設定するには、次の手順に従います。

  1. 倉庫管理 > 設定 > 外部サービス > 外部サービス定義 に移動します。

  2. アクション ペインで、新規 を選択して外部サービス定義を作成します。

  3. 新しいサービス定義の以下のフィールドを設定します:

    • 外部サービス定義 – サービス定義の名前を入力します (例: External)。
    • 説明 – 定義の簡単な説明を入力します (例: External)。
  4. アクション ウィンドウで、保存を選択します。

  5. 外部サービス操作 クイック タブで、ツールバーの 操作の編集 を選択します。

  6. 外部サービス操作 ページが表示されます。 外部サービス操作は、システムが外部サービスへの HTTP リクエストをどのようにフォーマットするかを定義します。 ラベルの印刷に使用される操作を少なくとも 1 つ追加する必要があります。 アクションペインで 新規 を選択して新しい操作を追加し、以下の手順に従ってください:

    • 新規レコードのヘッダーで、次のフィールドを設定します:

      • 外部サービス定義 – この読み取り専用フィールドには、外部 の値が表示されます。
      • 外部サービス操作 – 操作の名前を入力します。
      • 説明 – 操作の簡単な説明を入力します。
    • 一般クイック タブで、次のフィールドを設定します。

      • HTTP メソッド – 使用する HTTP メソッドを選択します (GETPOSTPUT)。

      • 操作タイムアウト – 操作のタイムアウト期間をミリ秒単位で選択します (例: 500)。

      • 要求本文のタイプ – サービスが期待する本文のタイプを選択します:

        • – サービスは XML または JSON メッセージを予期します。
        • form-data – サービスは、HTTP フォームとしてフォーマットされたデータを予期します。
      • 相対 URL – サービスを呼び出すための URL の相対部分を入力します。 外部サービスプロバイダーがこの値を提供する必要があります。

    • リクエスト全体を URL で表現する場合は、リクエスト クエリ文字列 クイックタブを使用して、リクエストを認証するためのクエリ パラメータを定義します。

    • HTTP リクエスト ヘッダー クイックタブを使用して、HTTP 認証ヘッダーを定義します。これは、認証情報を提供するための最も一般的な方法です。

    • 要求本文 (フォームデータ) ファーストタブは、 要求本文タイプ フィールドが Form-data に設定されている場合に表示されます。 これを使用して、フォーム データ フィールドの名前とその値を指定します。 ツール バーを使用して、必要に応じてグリッドの行を追加または削除します。 各行で、次のフィールドを設定します:

      • キー – フォーム データ フィールドの名前を入力します。
      • – フォーム データ フィールドの値を入力します。
      • ファイル名 – このフィールドは、値がアップロードされたファイルに共通するとサービスが予期する特別な場合にのみ必要です。 たとえば、Zebra の SendFileToPrinter サービスではこれが必要です。
    • 要求本文 (行) ファーストタブは、 要求本文タイプ フィールドが に設定されている場合に表示されます。 これを使用して、本文のコンテンツとコンテンツ タイプを指定します。 次のフィールドを設定します。

      • コンテンツ タイプ – MIME コンテンツ タイプ識別を指定します (例: application/xmlapplication/json 、または テキスト/プレーン)。
      • 要求本文 – 本文の内容を入力します。

    ヘッダー値、フォーム データ値、またはリクエスト本文で次の置換プレースホルダーを使用できます。

    • $auth.secret$ – このプレースホルダーは、外部サービス インスタンスで構成されている認証シークレットに置き換えられます。 これを使用して、外部サービス インスタンスでの認証に必要な共有キー、トークン、またはパスワードを保存します。
    • $label.printer$ – このプレースホルダーは、後で構成するプリンターの名前に置き換えられます。 これを使用して、ラベルを印刷する場所を外部サービスに通知します。
    • $label.body$ または $label.body:base64$ – このプレースホルダーは、ラベル レイアウトまたはドキュメント ルーティング レイアウトから生成されたラベルに置き換えられます。 外部サービスが Base64 でエンコードされた Zebra プログラミング言語 (ZPL) スクリプトを必要とする場合は、base64 フォーマットのバージョン ($label.body:base64$) を使用します。
  7. 追加のサービス操作 (たとえば、ZPL ベースのレイアウト用に 1 つと変数ベースのレイアウト用に 1 つ) が必要な場合は、前の手順を繰り返して追加します。

  8. アクション ウィンドウで、保存を選択します。 外部サービスの定義 ページに戻るには、閉じる ボタンを選択します。

  9. ラベル印刷サービス タブで、次のフィールドを設定します:

    • 印刷操作 – ZPL ベースのレイアウトを印刷するための操作を作成した場合は、その操作の名前を選択します。 この手順で前述したように、操作は現在のサービス定義に対してすでに定義されている必要があります。
    • 変数ベースの印刷操作 – 変数ベースのレイアウトを印刷するための操作を作成した場合は、その操作の名前を選択します。 この手順で前述したように、操作は現在のサービス定義に対してすでに定義されている必要があります。
    • 変数ラベルレイアウトテンプレート – 変数ベースのレイアウトを使用している場合は、変数ベースのレイアウト テンプレートのコンテンツを入力します。
  10. アクション ウィンドウで、保存を選択します。

外部サービス インスタンスの設定

各外部サービス インスタンスは、外部サービスの特定のインスタンスを定義します。

  1. 倉庫管理 > 設定 > 外部サービス > 外部サービス インスタンス に移動します。

  2. アクション ペインで、新規 を選択して外部サービス インスタンスを作成します。

  3. 新しいサービス インスタンスの以下のフィールドを設定します:

    • 外部サービス インスタンス – サービス インスタンスの名前を入力します (例: External)。
    • 説明 – 定義の簡単な説明を入力します (例: External)。
    • 外部サービス定義 – インスタンスで使用するサービス定義を選択します。 この記事で先に提案したサービス定義値の例は External でした。
  4. 一般タブで、次のフィールドを設定します。

    • ベース URL: 外部サービスのインストールのホスト名を入力します。

    • 認証シークレット – サービスでの認証に使用される認証シークレット (パスワードまたは共有キー) を入力します。

    • ログ レベル – 生成するログ エントリのレベルを選択します:

      • エラーのみ – エラーのみをログに記録します。
      • 成功とエラー – 成功とエラーの両方を記録します (推奨)。
      • なし – ログ エントリを生成しません。
    • リクエストの本文のログ – ログ エントリにどの程度の詳細を含めるかを選択します。

      • エラーのみ – エラーに関する詳細が含まれます。
      • 成功とエラー – 成功例と失敗例の両方の詳細が含まれます (推奨)。
      • なし – 詳細を含めません。 ログ ヘッダーのみを表示します。
    • サービスがオフライン – サービスがしばらくオフラインになることがわかっている場合は、このオプションを はい に設定して、システムが接続を試行しないようにします。 この設定により、システムがサービスが要求に応答するのを待つことがなくなるため、システム リソースの節約に役立ちます。 サービスがオンラインに戻ったら、このオプションを いいえ に戻します。

  5. アクション ウィンドウで、保存を選択します。

ログ エントリを読み取る方法については、この記事で後述する 外部サービス リクエスト ログを確認する セクションを参照してください。

プリンターの設定

プリンターと外部印刷サービスを連携するには、次の手順を実行します。

  1. 倉庫管理 > 設定 > ドキュメント ルーティング > ラベル プリンター に移動します。

  2. アクション ウィンドウで新規を選択して、プリンターをグリッドに追加します。

  3. 新しいプリンター用に次のフィールドを設定します:

    • 接続の種類 – プリンターとの通信に使用される接続の種類を選択します:

      • 外部ラベル サービス – 外部サービスを通じてクラウド プリンターに接続します。 クラウド プリンターには、外部ラベル サービスからのみアクセスできるプリンターが含まれます。
      • Document Routing Agent/ハイブリッド – DRA プリンタに接続するか、サービスがラベルを印刷できない場合の外部サービスのフォールバックとして DRA を使用します。
    • プリンター名 – プリンター名を入力または選択します。 この値は、Supply Chain Management の内部プリンタ名を表します。 プリンタがすでに DRA プリンターとして設定されている場合は、検索ダイアログ ボックスでその名前を選択できます。 外部サービスを設定するには、プリンター名を指定する必要があります。 この名前は、DRA プリンターにすでに使用されていてはなりません。 外部サービス プリンタの名前を入力するときは、接頭辞や別の方法を使用して、外部サービス プリンタの名前を、将来DRAを通じて登録する可能性のあるプリンターとは区別しておくことをお勧めします。

    • プリンターのストック タイププリンターのストック タイプを選択します。 プリンターのストック タイプは通常、特定のプリンターが使用する用紙のタイプを表します。 また、特定のラベル レイアウトを印刷する用紙の種類を指定するためにも使用されます。 プリンターのストックタイプの設定方法については、プリンターのストックタイプの設定 を参照してください。

    • バッチ印刷 – このチェック ボックスを選択すると、選択したプリンターに複数のラベルを 1 つのバッチジョブとして送信できます。 一度に 1 つのラベルを送信するには、このチェックボックスをオフにします。 バッチジョブは、他の印刷ジョブに中断されることなく、一度にラベルを印刷します。

    • 最大ファイルサイズ – プリンターのバッチ印刷を有効にした場合は、プリンタに送信するバッチファイルの最大サイズをメガバイト単位で入力します。 値は 0 (ゼロ) より大きい値に設定する必要があります。 最大サイズを超えるバッチは、送信前に小さなバッチに分割されます。 大きいサイズのファイルには、バッチごとに多くのラベルを含めることができます。 ただし、バッチが大きい場合は印刷に時間がかかり、他のジョブが遅れる可能性があります。 あるいは、プリンターのメモリ容量を超えると失敗する可能性があります。 サポートされる最大値については、プリンターの仕様を参照してください。

    • ラベル印刷サービス インスタンス – 使用するサービス インスタンスを選択します。 この記事で先に提案したサービス インスタンスの例は External でした。

    • ラベル印刷サービスのプリンター名 – 外部サービスで定義されているプリンター名を入力します。 この値は、外部サービスで使用される外部プリンター名を表します。

    • ラベル印刷サービス実行ポリシー接続タイプ フィールドが Document Routing Agent/ハイブリッド に設定されている場合は、次の値のいずれかを選択して、外部サービスへのリクエストが失敗した場合にシステムが実行する動作を指定します。

      • ラベル印刷サービスのみを使用する – システムは、DRA の使用がオプションであるプリンターであっても、DRA を使用してラベルを印刷しません。
      • Document Routing Agent へのフォールバック – システムは DRA を使用してラベルの印刷を試みます。

ラベル レイアウトを構成する

ラベル レイアウトは以下のいずれかの方法で構成できます:

  • ZPL または別のプリンタ コマンド言語を直接使用します。
  • 外部サービスがラベル レイアウトの生成と印刷に使用する XML、JSON、または同様のデータ形式を指定します。

コンテナー ラベルのレイアウトおよび設定の詳細については、ライセンス プレート ラベル印刷の有効化 を参照してください。

このセクションの残りの部分では、外部ラベル サービスに JSON リクエスト本文を使用する方法を示す例を示します。 この例では、外部サービスには、特定のプリンターにラベルを印刷するために次のJSON本文 (いくつかの変数を含む) を必要とする操作があります。

{
    "printer": "LABELPRINTER",
    "labelfile": "/Labels/SimpleLicensePlateLabel1",
    "variables": {
        "Item": "ITEM1",
        "Container": "CONTAINER1"
    }
}

この JSON リクエスト本文の一部はラベル レイアウトによって生成され、特定のラベルのデータが含まれます。 その後、ラベルに固有ではないプリンタやその他のデータを指定する、外部サービス操作のリクエスト本文定義に埋め込まれます。 プリンターはメーカーから提供されているため、$label.printer$ 置換すると、リクエストのこの部分が外部サービス操作に入ります。 ラベル ファイルと変数は各ラベルに固有であるため、リクエストのこの部分をラベル レイアウトに含める必要があります。

次の例は、外部サービス操作のリクエスト本文がどのようになるかを示しています。

{
    "printer": "$label.printer$",
    $label.body$
}

次の例は、ラベル レイアウト (この場合はナンバー プレート ラベルのレイアウト) がどのようになるかを示しています。

"labelfile": "/Labels/SimpleLicensePlateLabel1",
"variables": {
    "Item": "$ItemId$",
    "Container": "$LicensePlateId$"
}

ドキュメント回覧を設定します

ドキュメント ルーティングの設定方法については、ライセンス プレート レイアウトと印刷 を参照してください。

カスタムラベルを印刷するシナリオを実行する

ラベルの印刷を試したい場合は、場所ラベルを印刷するためのシナリオを設定できます。 詳細については、ラベル レイアウト印刷のカスタマイズ を参照してください。 そこにある指示に従い、この記事で説明されているシナリオがサポートされていることを確認します。

外部サービス要求ログの確認

外部サービス要求ログには、システムが外部サービスに送信する各要求に関する情報が含まれます。 問題のトラブルシューティングに役立ちます。

ログに記録される詳細の量は、各外部サービスインスタンスに指定されている ログ レベルログ要求本文 の設定によって異なります。 (詳細については、この記事の前の 外部サービスインスタンス構成 のセクションを参照してください)。

リクエストごとに、システムは外部サービスが HTTP 成功コード (200) を返したことを確認します。 別の HTTPコード (4 xx や 5 xx など) が返された場合、関連するログ オプションが有効になっていれば、システムはエラーを報告します。

ラベルが外部サービスに印刷されるときに生成される要求ログを確認するには、次の手順に従います。

  1. 倉庫管理 > 照会およびレポート > 外部サービスのリクエストログ の順に移動します。 または、特定のインスタンスのログを確認するには、倉庫管理 > 設定 > 外部サービスインスタンス > リクエストログ にアクセスします。
  2. グリッドで、レビューするリクエストログを選択します。
  3. 操作ウィンドウで、詳細の要求 を選択します。
  4. ログ ファイルを確認します。

その他のリソース