サンプル: 複数の PDF を複数の XML から生成する

www.altova.com このトピックを印刷 前のページ 1つ上のレベル 次のページ

ホーム >  ジョブの構成の例 >

サンプル: 複数の PDF を複数の XML から生成する

このサンプルでは、複数の XML ファイルを入力として取り、出力 複数の PDF ファイルを返す FlowForce Server ジョブの作成の方法について説明されています。 FlowForce Server ジョブは、 MapForce Server (複数の ソース XML ファイルから XML 出力を生成するために) と StyleVision Server (XML 出力を PDF に変換するために) を呼び出します。

 

このサンプルは、 MapForce マッピング と StyleVision 変換に関する基本的な理解を必要とします。 StyleVision と MapForce の初心者の場合は、 MapForce と StyleVision ドキュメントの「チュートリアル」チャプターを最初に読むことが奨励されています:

 

クイックスタートチュートリアル (MapForce)
クイックスタートチュートリアル (StyleVision)

 

必要条件

必要とされるライセンス: MapForce Enterprise または Professional Edition、 StyleVision Enterprise または Professional Edition、 MapForce Server または MapForce Server Advanced Edition、 StyleVision Server、 FlowForce Server
FlowForce Server は、構成されたネットワークアドレスとポートで作動します (次を参照: ネットワーク設定の定義)。
使用中の FlowForce Server ユーザーアカウントはの内の1つのコンテナー (デフォルトでは、認証済みのユーザーがアクセスすることのできるこのサンプルで使用されている /public コンテナー)へのパーミッションが与えられています。
このサンプルで作成されるマッピング ジョブは、オペレーティングシステム複数の PDF ファイルを作成します。 ですから、FlowForce Server が実行されている場所に対して、ディレクトリ内にファイルを作成することのできる権利が必要になります (このサンプルは、ディレクトリ C:\FlowForceWorkingDir を使用しています )。

 

使用することのできるデモファイル

このサンプルは、次のパスでみつけることのできるサンプルファイルを使用しています: <Documents>\Altova\MapForce2019\MapForceExamples

 

MultipleInputToMultipleOutputFiles.mfd (MapForce マッピングファイル)
PersonListWithGrouping.sps (StyleVision 変換 ファイル)
Nanonull-Branch.xml, Nanonull-HQ.xml (ソース XML ファイル)

 

MapForce マッピングのしくみ

下に表示されるとおり、 マッピングは、ソース コンポーネント (Altova_Hierarchical)、ターゲットコンポーネント (PersonList)、出力に書き込むためのその他の文字列をビルドするために使用されると多種の MapForce ビルトイン関数から構成されています。

 

マッピングはディレクトリ <Documents>\Altova\MapForce2019\MapForceExamples から「Nanonull-」という名前の XML ファイルを入力として取ります。この項目をソース MapForce コンポーネント設定内で定義することができます(MapForce 内では、下に表示されるように Altova_Hierarchical コンポーネントのヘッダーを右クリックし、コンテキストメニューから 「Properties」 を選択します)。入力ファイルは、アステリスクがワイルドカードの役割を果たす、 Nanonull-*.xml に設定されています。文字通り、 入力は、「Nanonull-」から開始する、.xml 拡張子を持つファイルです。

fs_multiple_xml_to_pdf_01

MultipleInputToMultipleOutputFiles.mfd

ターゲットコンポーネント、 PersonList、 は、ソース XML ファイル.のファイル名をベースにしてファイル名を動的に生成するように構成されています。これは、コンポーネントの上の「File/String」ボタンを右クリックし、 「マッピングにより与えられる動的ファイル名を使用する」 メニューオプションを選択することにより定義することができます。「ファイル <dynamic>」 ノードへの接続は、新規ファイルはソース内の各値のために作成されます。 remove-folder 関数は、ソースパスから(フォルダー名無しの) ファイル名のみを取得することを意味します。これは、 Persons-<Source filename> などの文字列をビルドするトップ concat 関数に対する値としてパスされます。

 

2番目の concat 関数は、マッピングパスへの完全なパスが後に続く、 Generated by Altova... などの文字列をビルドします。 結果はターゲット XML ファイル内のコメントとして書き込まれます。

 

3番目の concat 関数は文字列をビルドするために、ソースからマップされる個人のレコードの個数を示す count 関数の出力を使用します。 結果はターゲット XML ファイル内のコメントとして書き込まれます。

 

ターゲット Person ノードへの接続は、ターゲットへのソースから個人のデータをコピーします。マップされる必要のある 「Person」 の各子要素のための個別の接続が存在します。

 

更に、 ターゲットコンポーネントで 生成された出力を各 XML に生成されたファイルのために PDF に変換するように構成されている場合、ターゲットコンポーネントのヘッダーを右クリックし、 Properties を選択し、 StyleVision .sps スタイルシート への相対パスを指定する StyleVision Power スタイルシート ファイル テキストボックスを確認してください。後者は、 XML から PDF への実際の変換を実行します(下で更に詳しく説明されています)。

 

このマッピングの出力を直接 MapForce 内でプレビューするには、マッピングペインの下の 出力 タブをクリックします。 StyleVision 変換の PDF 結果をプレビューするには、 PDF タブをクリックします。出力ペイン内で複数の XML  (または PDF) が出力されます。以下を参照してください:

fs_multiple_xml_to_pdf_02

 

この段階では、(デフォルトでは、 MapForce は一時ファイルを作成するため)ディスクに 2つの 出力 XML ファイルの1つを保存することが奨励されます。 StyleVision 内で StyleVision パワー スタイルシートを開きテストする場合ファイルは、 サンプル (作業 XML)としての役割を果たします(次のセクションを参照してください)。 出力ファイルを保存するには、「出力」 タブをクリックして、出力 メニューから、「出力ファイルの保存」をクリックします。

 

StyleVision 変換について

StyleVision を作動し、 PersonListWithGrouping.sps 変換 ファイルを開きます。このファイルは、 MapForce マッピングで説明されている同じディレクトリと同じファイルで、 ターゲット MapForce コンポーネントにより参照されています。

fs_multiple_xml_to_pdf_03

PersonListWithGrouping.sps

上記の StyleVision .sps スタイルシートは、 単一の XML をソースとして表示しており、 PDF を作成します。 PDF ドキュメントは、 見出し (「h2」)、紹介パラグラフ、動的に作成されたテーブル、終わりのパラグラフにより構成されています。  見出しと紹介パラグラフは、静的テキストを含んでいますか、終わりのパラグラフは、ラッピングタブで指定されているとおり、ソース XML ファイルのノードから作成されています。

 

StyleVision でこの変換を直接プレビューするには、下のステップに従います:

 

1.「デザイン概要」 ペイン内で、「作業 XML」 fs_stylevision_browse をクリックします。

fs_multiple_xml_to_pdf_04

2.「作業 XML ファイルの割り当て」 を選択して、 MapForce から保存された XML 出力ファイルを参照します(前のセクションを参照してください)。

 

.sps スタイルシートは、実際の名前、または、ソース XML ファイルのオリジンに対して未知であり、(指定された XML スキーマに準拠する限り)入力として与えられた XML ファイル を処理し、 PDF を作成します。このスタイルシートを自動化し、複数の PDF ファイルを生成するように構成するには、下に示されるように、 FlowForce Server にデプロイされる必要があります。

 

FlowForce Server にファイルをデプロイする

このサンプル内で使用される MapForce マッピング と StyleVision 変換の目的について説明されましたが、 MapForce マッピング と StyleVision スタイルシートのデザインに関する詳細に関しては、これらの製品のドキュメントを参照してください (https://www.altova.com/ja/documentation.html)。

 

自動化を可能にするために、両方のファイルは、 FlowForce Server にデプロイされる必要があります。上の「必要条件」 セクションで指定されているとおり、 FlowForce Server にライセンスが与えられており、 MapForce Server と StyleVision Server が FlowForce Server の管理下で実行されている必要があります。 Windows 上では、ライセンスのステータスをチェックするための verifylicense コマンドを使用することができます。 ライセンスが見つからない、または、無効な場合、他の オペレーティングシステムでは、ジョブ実行に失敗すると、は適切なメッセージが表示されます。 

 

StyleVision スタイルシートを FlowForce Server にデプロイする:

 

1.「ファイル」 メニューから、「FlowForce (Server) にデプロイする」をクリックします。
2.ファイルを PXF (Portable XML Form) フォーマットとしてデザインファイルを保存するようにプロンプトされると、「OK」をクリックします。

fs_multiple_xml_to_pdf_06

3.デプロイされたパッケージ内に含まれるようにファイルを選択するようにプロンプトされると、デフォルトの設定を保留してください。このサンプル内で、 PDF のみが生成されますが、 HTML と RTF 後になどのフォーマットで出力することができます。

fs_multiple_xml_to_pdf_07

4.プロンプトされると、  FlowForce Web Server への接続の詳細を入力します。簡素化のために、下のイメージ内では、変換はプレーン HTTP を使用してローカルマシンのポート 8082 にデプロイされていますが、FlowForce Web Server がこのような接続を受け入れるように構成されていると前提して、リモートアドレスを指定して、 SSL-暗号化された接続を使用してファイルをデプロイすることもできます (次を参照: ネットワーク設定の定義)。ユーザーとパスワードの値がルート FlowForce アカウントのために説明されています。この場合、指定されたパスにデータを書き込むパーミッションが存在すると前提し、他の FlowForce ユーザーアカウント を使用できる場合があります。  このサンプルでは、ジョブの構成は異なるステップであり、後に説明されているため、「新規ジョブを作成するためにブラウザーを開く」 チェックボックスは、意図的にチェックされていません。

fs_multiple_xml_to_pdf_08

 

MapForce マッピングを FlowForce Server にデプロイする:

 

「ファイル」 メニューから、「FlowForce Server にデプロイする」をクリックします。 StyleVision のために上で説明されているとおり接続の詳細を記入します。

fs_multiple_xml_to_pdf_05

FlowForce Server にログインすると、ファイルのデプロイに成功すると、指定された FlowForce コンテナーに対応するエントリが表示されます (この場合、 "/public") :

fs_multiple_xml_to_pdf_09

上記のエントリは、まだ、ジョブではないことに注意してください。実際のジョブが作成される FlowForce 関数 を作成する必要があります。

 

FlowForce ジョブの作成と構成

MapForce マッピング と StyleVision 変換が FlowForce Server にデプロイされました。これらは、必要とするジョブを作成するために使用されます。方法は以下のとおりです:

 

1.FlowForce /public コンテナーに移動し、前にデプロイされた 関数 MultipleInputToMultipleOutputFiles.mapping をクリックします。 MapForce マッピングのソースコンポーネントは、FlowForce 関数に対する入力パラメーターになっています。また、マッピングにより処理されるインスタンス XML ファイルにパスされるデフォルトの値が存在します。この値は、必要に応じて後に上書きすることができます。 「作業ディレクトリ」 パラメーター が自動的に FlowForce により追加されています。 次のステップでこのパラメーターの役割が次のセクションで説明されています。

fs_multiple_xml_to_pdf_10

2.「ジョブの作成」をクリックします。
3.名前を入力し、ジョブの詳細を任意で入力します。
4.ジョブの 「実行ステップ」 部分を以下のように構成します。

fs_multiple_xml_to_pdf_11

5.「サービス」から、「HTTP を使用してこのジョブを使用する」チェックボックスを選択し、オンデマンドでトリガーされる Web サービスの名前を入力します。ジョブを予定して実行する、または、ファイルシステムトリガーとして実行するには、適切なトリガーを設定してください (次を参照してください: トリガーの管理)。

fs_multiple_xml_to_pdf_12

6.「資格情報」にオペレーティングシステム ユーザーアカウントのユーザー名とパスワードを入力します  (ジョブは、このユーザーとして実行されます)。 FlowForce Web 管理インターフェイスのパスワードとパスワードを区別してください (次を参照してください: 証明書のしくみ)。

fs_multiple_xml_to_pdf_13

7.「保存」をクリックします。

 

 

ジョブの作動を理解するには、ジョブの 「実行ステップ」 セクションに注目してください。最初の実行ステップは、前にデプロイされたマッピングを呼び出します。  2番目のパラメーターは、作業ディレクトリを定義します。 作業ディレクトリとは、ジョブが入力ファイルを展開、または、出力ファイルを保存する場所が必要な場合の、実行ステップにより必要とされるパラメーターです。 FlowForce Server は、また、作業ディレクトリをステップの実行中に発生する相対パスを解決するために、使用します。 作業ディレクトリを与えるように問われた場合、 FlowForce Server が実行されているオペレーティングシステム上の有効なパスを与えてください。ステップを作成中に、作業ディレクトリが与えられない場合、  FlowForce Server は一時的なディレクトリを使用します。 このサンプルでは、 作業ディレクトリは「C:\FlowForceWorkingDir」です。

 

最初の実行ステップにより返された出力は、マッピングにより返されたデータを表しています。次のステップ内で参照できるように、 output と明示的に名前が付けられています。

 

ジョブの2番目のステップは 「for-each」 ステップです。「for-each」 ステップが FlowForce 式 results(output) を使用して、(マッピングにより返された出力である)最初のステップにより返されたデータにアクセスします。 具体的には、 式は、前のステップにより返された引数出力として取る関数 results()を呼び出します。次を参照してください: ステップ結果関数。 FlowForce 式の説明に関しては、次を参照してください: FlowForce 式言語.

 

「for-each」 ステップは、2つの小さい実行ステップにより構成されています:

 

1.最初のステップは、マッピング出力を(通常 file と呼ばれる ).実際のファイルに変換する /system/compute ビルトイン関数を呼び出します。 重要な点は、 results(output) 式の出力は、ファイルではなく、ストリームである点です。(このサンプル同様)マッピングが複数の出力 を返す場合、 マッピング出力は、ストリームのシーケンスを表示しています。 この理由のため、 FlowForce 式 関数 (as-file) が(反復される) 現在のストリームを実際のファイルに変換するために使用されます。
2.2番目のステップは、前に StyleVision 変換によりデプロイされた反復される各ストリームを呼び出します。 具体的には、反復ごとに、 StyleVision Server が呼び出され、XML ファイルが入力として与えられ、PDF ファイルは、出力として返されます。 FlowForce 式 {filename(file)}.pdf は、 実際の PDF ファイル名をディスク上に生成します。このオペレーションは、「作業ディレクトリ」 パラメーターにより指定された作業ディレクトリ内で実行されます。

 

メモ:このサンプルでは、 同じ作業ディレクトリは、StyleVision 変換を実行する両方のマッピングとステップで使用されています。 一部の場合、ファイル名の競合と、ジョブの実行エラーを回避するために個別に作業ディレクトリを指定する必要があります。

 

ジョブの実行

このジョブは、 Web サービスとして作成され、 ブラウザーからリンクをクリックしてオンデマンドで実行することができます。 これを行うには、ブラウザー アドレスバー内に 次の URL を入力します: http://localhost:4646/service/。  FlowForce Server のために構成された異なるホストとポートに従い URL をアダプトしてください、次を参照してください: ネットワーク設定の定義.

fs_multiple_xml_to_pdf_14

 

ジョブを実行するために Web サービスリンクをクリックします (この場合、「GenerateMultiplePDFs」)。 ジョブが完了すると、 作業ディレクトリ C:\FlowForceWorkingDir 内にジョブにより生成された PDF ファイルが表示されます。簡素化のために、 エラーの処理はジョブ内で使用されていません。  PDF ファイルをブラウザーに出力することができないため、ブラウザーに「ジョブを出力することができません」 が、実行が成功した場合でも表示されます。 (これは、ブラウザーに出力することのできないファイルが生成されるために発生します)。ジョブがなんらかの理由で実行に失敗した場合、 ブラウザーは、「サービスの実行に失敗しました」メッセージを表示します。  この場合、 ジョブのエラーログをチェックして、ステップの失敗の原因を確認するには、次を参照してください: ジョブ ログの確認.


(C) 2019 Altova GmbH