外部サービスを使用したラベルの印刷
この記事では、外部サービスを使用してラベルを設定および印刷する方法について説明します。 この機能は、Document Routing Agent (DRA) を必要とせず、HTTP API を介して通信するフレームワークを提供することで、Microsoft Dynamics 365 Supply Chain Management とサードパーティ ソリューション間の直接対話を可能にします。 Seagull Scientific BarTender® や Loftware NiceLabel のようなサードパーティのラベル製品を使用することで、さまざまなタイプのラベルをデザインし、印刷することができます。
次の図は、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 定義は外部サービス プロバイダーによって提供されます。
外部サービス定義を設定するには、次の手順に従います。
倉庫管理 > 設定 > 外部サービス > 外部サービス定義 に移動します。
アクション ペインで、新規 を選択して外部サービス定義を作成します。
新しいサービス定義の以下のフィールドを設定します:
- [外部サービス定義 ] : 定義の名前を入力します (たとえば、外部 など。
- [ /&] : 定義の簡単な説明 ([External] など) を。
アクション ウィンドウで、保存を選択します。
外部サービス操作 クイック タブで、ツールバーの 操作の編集 を選択します。
外部サービス操作 ページが表示されます。 外部サービス操作は、システムが外部サービスへの HTTP リクエストをどのようにフォーマットするかを定義します。 ラベルの印刷に使用される操作を少なくとも 1 つ追加する必要があります。 アクションペインで 新規 を選択して新しい操作を追加し、以下の手順に従ってください:
新規レコードのヘッダーで、次のフィールドを設定します:
- 外部サービス定義 : この読み取り専用フィールドは、"外部" の値 示。
- [外部サービス ] : 操作の名前を入力します。
- [ 説明] : 操作の簡単な説明を入力します。
一般クイック タブで、次のフィールドを設定します。
HTTPメソッド : 選択使用するHTTPメソッドを選択します (GET, POST、または 2013年。
[タイムアウト ] : 選択のタイムアウト期間をミリ秒 (たとえば、ミリ秒) で 500。
[要求の本文 選択] : サービスが期待する本文のタイプを次に示します。
- [ : サービスにはXMLメッセージまたはXMLメッセージが必要です。
- フォーム データ : サービスには、HTTPフォームとして書式設定されたデータが必要です。
相対URL : サービスを呼び出すURLの相対的な部分を入力します。 外部サービスプロバイダーがこの値を提供する必要があります。
リクエスト全体を URL で表現する場合は、リクエスト クエリ文字列 クイックタブを使用して、リクエストを認証するためのクエリ パラメータを定義します。
HTTP リクエスト ヘッダー クイックタブを使用して、HTTP 認証ヘッダーを定義します。これは、認証情報を提供するための最も一般的な方法です。
要求本文 (フォームデータ) ファーストタブは、 要求本文タイプ フィールドが Form-data に設定されている場合に表示されます。 これを使用して、フォーム データ フィールドの名前とその値を指定します。 ツール バーを使用して、必要に応じてグリッドの行を追加または削除します。 各行で、次のフィールドを設定します:
- [ キー] : フォーム データ フィールドの名前を入力します。
- [値 ] : フォーム データ フィールドの値を入力します。
- ファイル名 : このフィールドは、サービスが値がアップロード 済みファイルと似ていると期待される特別な場合にのみ必要です。 たとえば、Zebra の
SendFileToPrinter
サービスではこれが必要です。
要求本文 (行) ファーストタブは、 要求本文タイプ フィールドが 行 に設定されている場合に表示されます。 これを使用して、本文のコンテンツとコンテンツ タイプを指定します。 次のフィールドを設定します。
- コンテンツ タイプ : MIMEコンテンツ タイプのID (たとえば 適用/xml、 適用//、または テキスト/無地) を指定します。
- [本文の要求 : 本文の内容を入力します。
ヘッダー値、フォーム データ値、またはリクエスト本文で次の置換プレースホルダーを使用できます。
$auth.secret$
: このプレースホルダは、外部サービス インスタンスで構成された認証認証で置き換されます。 これを使用して、外部サービス インスタンスでの認証に必要な共有キー、トークン、またはパスワードを保存します。$label.printer$
: このプレースホルダは、後で構成するプリンタの名前で置き換えられる場合があります。 これを使用して、ラベルを印刷する場所を外部サービスに通知します。$label.body$
または$label.body:base64$
: このプレースホルダは、ラベル ラベルまたはドキュメントのルーティング タイプから生成されたラベルレイアウトで置きレイアウト。 外部サービスが Base64 でエンコードされた Zebra プログラミング言語 (ZPL) スクリプトを必要とする場合は、base64 フォーマットのバージョン ($label.body:base64$
) を使用します。
追加のサービス操作 (たとえば、ZPL ベースのレイアウト用に 1 つと変数ベースのレイアウト用に 1 つ) が必要な場合は、前の手順を繰り返して追加します。
アクション ウィンドウで、保存を選択します。 外部サービスの定義 ページに戻るには、閉じる ボタンを選択します。
ラベル印刷サービス タブで、次のフィールドを設定します:
- [印刷 ] : ZPLベースのレイアウトを印刷するための選択を作成した場合は、その選択名前を入力します。 この手順で前述したように、操作は現在のサービス定義に対してすでに定義されている必要があります。
- [変数の印刷 操作] : 変数ベースのレイアウトを印刷する操作を作成した場合は選択名前を変更します。 この手順で前述したように、操作は現在のサービス定義に対してすでに定義されている必要があります。
- [変数レイアウトテンプレート : 変数ベースのテンプレートを使用しているレイアウト、変数ベースのテンプレートの内容をレイアウトします。
アクション ウィンドウで、保存を選択します。
外部サービス インスタンスの設定
各外部サービス インスタンスは、外部サービスの特定のインスタンスを定義します。
倉庫管理 > 設定 > 外部サービス > 外部サービス インスタンス に移動します。
アクション ペインで、新規 を選択して外部サービス インスタンスを作成します。
新しいサービス インスタンスの以下のフィールドを設定します:
- [外部サービス インスタンス ] : インスタンスの名前 ([External] など) を入力。
- [ /&] : 定義の簡単な説明 ([External] など) を。
- [外部サービス定義 ] 選択 インスタンスで使用するサービス定義に関連付けらた定義。 この記事で先に提案したサービス定義値の例は External でした。
一般タブで、次のフィールドを設定します。
[基本URL する] : 外部サービスのホスト名を入力します。
[認証 - ] : サービスで認証を行う場合に使用する認証 (パスワードまたは共有キー) を入力します。
ログ レベル : 選択生成するログ エントリのレベルを定義します。
- [エラーのみ ] : エラーのみをログに記録します。
- [成功とエラー ] : 成功とエラーの両方を記録します (推奨)。
- [ ] : ログ エントリを生成しない。
要求団体のログ : 選択に含める追加の詳細を次に示します。
- [エラーのみ ] : エラーに関する詳細を含めます。
- [成功とエラー ] : 成功とエラーの両方に関する詳細を含めます (推奨)。
- [なし ] : 詳細は含めなし。 ログ ヘッダーのみを表示します。
[オフラインサービス ] : サービスが一定の時間オフラインになるのを知っている場合は、このオプションを Yes に設定して、システムからそのサービスへのアクセスを接続にします。 この設定により、システムがサービスが要求に応答するのを待つことがなくなるため、システム リソースの節約に役立ちます。 サービスがオンラインに戻ったら、このオプションを いいえ に戻します。
アクション ウィンドウで、保存を選択します。
ログ エントリを読み取る方法については、この記事で後述する 外部サービス リクエスト ログを確認する セクションを参照してください。
プリンターの設定
プリンターと外部印刷サービスを連携するには、次の手順を実行します。
倉庫管理 > 設定 > ドキュメント ルーティング > ラベル プリンター に移動します。
アクション ウィンドウで新規を選択して、プリンターをグリッドに追加します。
新しいプリンター用に次のフィールドを設定します:
[接続 選択] : プリンタとの通信に使用される接続のタイプを定義します。
- 外部ラベル サービス : 接続を通じてクラウド プリンタに印刷されます。 クラウド プリンターには、外部ラベル サービスからのみアクセスできるプリンターが含まれます。
- ドキュメントルーティング エージェント/ハイブリッド : DRA接続に追加されます。サービスでラベルを印刷できない場合は、DRAを外部サービスの代替として使用します。
[プリンター名 ] : プリンタ選択名前を入力または編集します。 この値は、Supply Chain Management の内部プリンタ名を表します。 プリンタがすでに DRA プリンターとして設定されている場合は、検索ダイアログ ボックスでその名前を選択できます。 外部サービスを設定するには、プリンター名を指定する必要があります。 この名前は、DRA プリンターにすでに使用されていてはなりません。 外部サービス プリンタの名前を入力するときは、接頭辞や別の方法を使用して、外部サービス プリンタの名前を、将来DRAを通じて登録する可能性のあるプリンターとは区別しておくことをお勧めします。
プリンタの在庫タイプ : 選択印刷 の在庫タイプを。 プリンターのストック タイプは通常、特定のプリンターが使用する用紙のタイプを表します。 また、特定のラベル レイアウトを印刷する用紙の種類を指定するためにも使用されます。 プリンターのストックタイプの設定方法については、プリンターのストックタイプの設定 を参照してください。
バッチ印刷 : 選択ボックスをオンにすると、選択したプリンタに複数のラベルが1つのバッチ ジョブとして送信されます。 一度に 1 つのラベルを送信するには、このチェックボックスをオフにします。 バッチジョブは、他の印刷ジョブに中断されることなく、一度にラベルを印刷します。
[最大ファイル サイズ ] : プリンタでバッチ印刷を有効にした場合に、そのプリンタに送信されるバッチ ファイルの最大サイズをメガバイトで入力します。 値は 0 (ゼロ) より大きい値に設定する必要があります。 最大サイズを超えるバッチは、送信前に小さなバッチに分割されます。 大きいサイズのファイルには、バッチごとに多くのラベルを含めることができます。 ただし、バッチが大きい場合は印刷に時間がかかり、他のジョブが遅れる可能性があります。 あるいは、プリンターのメモリ容量を超えると失敗する可能性があります。 サポートされる最大値については、プリンターの仕様を参照してください。
ラベル印刷サービス インスタンス : 選択するサービス インスタンスに関連付きます。 この記事で先に提案したサービス インスタンスの例は External でした。
[ラベル印刷サービス プリンタ名 ] : 外部サービスで定義されているプリンタ名を入力します。 この値は、外部サービスで使用される外部プリンター名を表します。
ラベル印刷サービスの実行ポリシー : 外部サービスへの要求が失敗した場合のシステムの実行を指定するために、 接続タイプ フィールドが次のいずれかの値に設定されている場合 Document Routing agent/Hybrid, 選択 のいずれかの値。
- ラベル印刷サービスのみを使用します : DRAを使用しているプリンターの場合でも、DRAを使用する場合でも、DRAを使用してラベルが印刷されます。
- ドキュメントルーティング エージェントへの代替 : 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 など) が返された場合、関連するログ オプションが有効になっていれば、システムはエラーを報告します。
ラベルが外部サービスに印刷されるときに生成される要求ログを確認するには、次の手順に従います。
- 倉庫管理 > 照会およびレポート > 外部サービスのリクエストログ の順に移動します。 または、特定のインスタンスのログを確認するには、倉庫管理 > 設定 > 外部サービスインスタンス > リクエストログ にアクセスします。
- グリッドで、レビューするリクエストログを選択します。
- 操作ウィンドウで、詳細の要求 を選択します。
- ログ ファイルを確認します。