インデックステーブルの更新は、データの割り当てワークフローアクティビティによって行われる処理です。このアクティビティでは、他のドキュメントや外部システムからの値やインデックスデータを、現在のワークフロードキュメントのインデックステーブルに追加したり、既存の値を置き換えたりすることができます。
インデックステーブルは、DocuWareのインデックスフィールドの一種です。インデックステーブル内の特定のエントリを指定するには、まず正しい列と行を特定する必要があり、通常はフィルターを適用して行います。詳細についてはインデックステーブルをご覧ください。
インデックステーブルへのデータ追加手順は、次の2つの要素によって異なります。
データソース:データの取得元が固定値、インデックステーブル、またはアーカイブされたドキュメントのインデックスフィールドのいずれであるか。
宛先列の数:編集対象として宛先インデックステーブル内で選択する列の数。
以下の例では、手順を順を追って説明します。本記事ではDocuWareからインデックステーブルにデータを割り当てる方法のみを扱い、外部データソースは対象外です。
宛先としてのインデックステーブルの選択
まず、データ割り当ての宛先として、現在のワークフロードキュメントのインデックステーブルを定義します。この手順は、以降のすべての説明で共通です。
DocuWare 設定 > コラボレーション > Workflow Designerを開きます。
新しいワークフローボタンをクリックするか、編集をクリックして既存のワークフローをキャンバスで開きます。
左側のサイドバーでデータの割り当てをクリックします。
データの割り当て、最初の割り当てを追加、データの割り当てを設定の各リンクをクリックします。
宛先タイプ:インデックステーブルを選択します。
宛先エントリとして、現在のワークフロードキュメントのインデックステーブルを選択します。
指定したインデックステーブルの列を1つまたは複数選択します。
.png)
インデックステーブルへのデータの追加
現在のワークフロードキュメントのインデックステーブルの末尾に、1行または複数の行を追加することができます。この例では、データソースはDocuWareに保管されている別のドキュメントです。
1. ソースと割り当てタイプの定義
宛先として、対象のインデックステーブルを選択します。
インデックステーブルのすべての列を選択します。
ソースタイプ:を選択します。
別のドキュメントのインデックスデータを追加する場合は、ファイルキャビネットを選択します。
DocuWareに保管されているインデックステーブルを指定する場合は、インデックステーブルを選択します。
テーブルの末尾に追加オプションを有効にします。
割り当てウィザードを開きます。
ソースタイプがファイルキャビネットの場合は、ファイルキャビネットが選択されていませんリンクをクリックします。
ソースタイプがインデックステーブルの場合は、テーブルの割り当てを構成リンクをクリックします。
.png)
2. 追加するインデックスデータの指定
この手順では、追加するインデックスデータレコードのセットを指定します。この手順の結果が、宛先テーブルにそのまま追加されます。
設定内容は、ソースタイプとしてファイルキャビネットとインデックステーブルのどちらを選択したかによって若干異なります。
ソースを選択
ソースタイプがファイルキャビネットの場合は、ファイルキャビネットを指定します。
ソースタイプがインデックステーブルの場合は、ファイルキャビネットとインデックステーブルフィールドの両方を指定します。
以下の例は、ソースタイプインデックスフィールドのダイアログです。
.png)
ソースをフィルター
まず、選択したファイルキャビネット内のドキュメントをフィルターするルールを作成します。ワークフローは、このルールに合致するドキュメントからインデックスデータを収集し、宛先インデックステーブルへの追加用に準備します。ソースがファイルキャビネットの場合の例:ワークフローは、選択したファイルキャビネット内のドキュメントのうち、Contactが「Werner Moser」、Companyが「Peter Engineering」であるものから、すべてのインデックスデータ(ただしインデックステーブルを除く)を取得します。
ソースがインデックステーブルの場合の例:ワークフローは、選択したファイルキャビネット内のドキュメントのうち、Contactが「Werner Moser」、Companyが「Peter Engineering」であるものから、インデックステーブルデータのみを取得します。
代替として、WHERE句を使用することもできます。WHERE句では複数フィールドの参照やネストされた条件指定が可能で、ルールエディターよりも複雑かつ柔軟なフィルタリングが行えます。
返される最大行数
このオプションでは、フィルターが返すドキュメント数の上限を設定します。これらのドキュメントのインデックスデータがソースデータとなります。
最大値はソースタイプによって異なります。ファイルキャビネット:最大行数は1000です。デフォルトは100に設定されています。この特定のケースでは、この設定により宛先テーブルに追加できる行数も制限されます。
インデックステーブル: 最大行数は20です。デフォルトは1に設定されています。
返される最大行数の設定はフィルタリングよりも優先されます。たとえば、フィルタリングルールが10件のドキュメントのインデックスデータまたはインデックステーブルデータを返し、返される最大行数が「1」に設定されている場合、最初のドキュメントのインデックスデータまたはインデックステーブルデータのみが添付されます。
3. フィルター済みソースインデックスデータの並べ替え
この手順では、前の手順で取得したソースインデックスデータを並べ替えます。インデックスデータはこの並び順で追加されます。
必要な数だけ並べ替え条件を追加してください。
.png)
ソースタイプをインデックステーブルとして並べ替える例:フィルター済みインデックステーブルデータを、色付けされたインデックステーブルの列で並べ替えることができます。
.png)
ソースタイプをファイルキャビネットとして並べ替える例:色付けされたファイルキャビネットのインデックスフィールドでソースデータを並べ替えます。
4. 宛先列へのデータの追加
各宛先列に追加するソース値を指定します。
各宛先列に対して、ソース列を1つ選択します。
マッピングできるのは、互いに適合するフィールドのみです。たとえば、テキストフィールドは別のテキストフィールドには割り当てられますが、日付フィールドには割り当てられません。完了ボタンをクリックします。
.png)
インデックステーブル内のデータの置換
インデックステーブル内の特定の値を置換する場合は、対象セルを列と行で特定する必要があります。
宛先を定義する際に列を選択します。
宛先テーブル内の行を指定するために、ウィザードには一致する行と行のフィルターという2つの追加フィルターが用意されています。これらはデータを追加する場合には不要です。
利用できるソースタイプとその後の割り当て手順は、列数によって異なります。
置換対象として1つの列のみを選択した場合は、特定のデータを入力するためのソースタイプとしてドキュメントインデックスと固定値も追加で利用できます。詳細は以下を参照してください。
置換対象として複数の列を選択した場合は、次のソースタイプでソースデータを指定します。
DocuWareに保管されている任意のドキュメントからインデックスデータ(インデックステーブルを除く)を収集するには、ソースタイプファイルキャビネット。
DocuWareに保管されている任意のドキュメントからインデックステーブルデータを収集するには、ソースタイプインデックステーブル。
ソースタイプローカルデータベース接続はこれらの設定のいずれでも利用できますが、外部データを扱うため本記事では対象外です。
ソースタイプの詳細については、ワークフローにおけるデータ割り当ての一般情報に関する記事をご覧ください。
インデックステーブル内の特定値の置換
インデックステーブル内の特定の値を、現在のワークフロードキュメントの別のインデックス値で置換します。
1. ソースと割り当てタイプの定義
宛先として、対象のインデックステーブルを選択します。
インデックステーブルの列を1つ有効にします。
ソースタイプ > ドキュメントインデックスを選択します。
現在のワークフロードキュメントのインデックスフィールドを選択します。マッピングできるのは、互いに適合するフィールドのみです。たとえば、小数フィールドは別の小数フィールドには割り当てられますが、テキストフィールドには割り当てられません。
行フィルターを構成オプションを有効にします。
.png)
2. インデックステーブルの行のフィルター
この手順では、テーブル内にすでに存在する値に基づいて宛先テーブルをフィルターします。
フィルターを追加リンクをクリックします。
例:宛先列の値は、同じ行のインデックステーブルフィールドCompanyの値に「Flying Tom」という名前が含まれている場合にのみ置換されます。完了ボタンをクリックして割り当てを保存し、ウィザードを終了します。
.png)
インデックステーブル内の複数列のセルまたは行全体の置換
現在のワークフロードキュメントのインデックステーブルで、複数列のセルまたは行全体を置換します。ソースは、DocuWareに保管されている別のドキュメントのインデックステーブルです。
1. ソースと割り当てタイプの定義
宛先として、対象のインデックステーブルを選択します。
置換するセルを含む列を選択するか、行全体を置換する場合はインデックステーブルの列 > すべて選択を選択します。
注:最終手順の「データの割り当て」で、ここで選択したすべての列をマッピングする必要があるため、置換に必要な列のみを選択してください。別のインデックステーブルのデータを置換に使用するには、ソースタイプ > インデックステーブルを選択します。
既存のテーブルデータを置換オプションを有効にします。
テーブルの割り当てを構成リンクをクリックして、ウィザードテーブルデータから割り当てを開きます。
.png)
2. 置換に使用するソースデータの指定
この手順では、宛先インデックステーブルのデータを置換するために使用するデータを指定します。
.png)
ソースを選択
ファイルキャビネットとインデックステーブルを指定します。ソースをフィルター
選択したファイルキャビネット内のドキュメントをフィルターするルールを作成します。ワークフローは、このルールに合致するドキュメントからインデックステーブルデータを収集します。このインデックステーブルデータを使用して、宛先インデックステーブルの行を置換します。
例(上のスクリーンショットも参照):ワークフローは、ファイルキャビネット(ここではDocument Pool test)内のドキュメントのうち、Companyが「Peter Engineering」かつAmountが9.999より大きいものから、すべてのインデックステーブルデータを取得します。
代替として、WHERE句を使用することもできます。WHERE句では複数フィールドの参照やネストされた条件指定が可能で、ルールエディターよりも複雑かつ柔軟なフィルタリングが行えます。
返される最大行数
このオプションでは、フィルターが返すドキュメント数の上限を設定します。これらのドキュメントのインデックステーブルデータがソースデータとなります。
ソースタイプがインデックステーブルの場合、最大行数は20、デフォルトは1に設定されています。
ソースタイプがファイルキャビネットの場合、最大行数は1000、デフォルトは100に設定されています。
返される最大行数の設定はフィルタリングよりも優先されます。たとえば、フィルタリングルールが10件のドキュメントのインデックステーブルデータを返し、返される最大行数が「1」に設定されている場合、置換データとして考慮されるのは最初のドキュメントのインデックステーブルのみです。
3. 一致する行による宛先のフィルター
この手順では、宛先テーブルとソーステーブルの行を照合することで、宛先の行を絞り込みます。
宛先インデックステーブルの行は、比較用に指定した列がソースレコードの対応する列と同じ値を持つ場合、一致とみなされます。これらの一致する行のみが更新または置換され、その他の行は変更されません。
注:照合を定義することで値が置換されるわけではありません。この手順では、どの行に対して置換が実行されるかを定義するだけです。
一致する行を使用して宛先インデックステーブルを絞り込むかどうかを選択します。
いいえを選択すると、宛先テーブルのすべての行が置換されます。
はいを選択すると、宛先テーブルで一致した行のみが置換されます。
この例でははいを有効にし、条件を追加をクリックして少なくとも1つの照合条件を定義します。以下の例では、照合ルールは次のように指定されています。
「宛先テーブルのフィールドComanyが、ソースドキュメントのインデックスフィールドCompanyのエントリと等しい場合にのみ、宛先インデックステーブルの行が置換される。」
.png)
ここでは複数の条件を追加できます。条件を追加するごとに、置換対象の行がさらに絞り込まれます。
1つの条件に対して複数の一致がある場合の動作: 複数の行が一致した場合の動作または希望する処理方法を指定します。
最初に一致する行のみを処理: この設定はデフォルトで選択されています。ソースドキュメントを並べ替えることで、関連するインデックスデータレコードを上位に表示することができます。最初に一致する行が割り当ての結果として選択されます。
最大10件の一致する行を処理: 最初の10件の結果が割り当てに使用されます。
4. 置換用のフィルター済みソースインデックスデータの並べ替え
この手順では、フィルター済みのソースインデックステーブルデータを並べ替えます。
並び順は、置換に使用されるデータの決定にも関わります。これを理解するには、ソースインデックスデータをテーブルとして考えてみてください。データ割り当ての手順では、ワークフローはこのテーブルを上から下へ順に処理するため、最上位の行のみが宛先テーブルに追加されます。必要なレコードが先頭に来るようにソースデータを並べ替えてください。
テーブルのフィルターについては、インデックステーブルセクションをご覧ください。
ファイルキャビネットのインデックスフィールドでソースデータを並べ替えます。
必要な数だけ並べ替え条件を追加します。
.png)
5. テーブル列による宛先のフィルター
行の照合フィルターに加えて、必要に応じて行のフィルターを適用して、宛先テーブルをさらに絞り込むことができます。
一致する行は、指定した照合コードを使用して、宛先テーブルを外部ソースデータと比較してフィルターします。
これに対して行のフィルターは、テーブル内にすでに存在する値に基づいてテーブルをフィルターします。
フィルターを追加リンクをクリックします。
例:宛先の行は、インデックステーブルフィールドCompanyの値に「Flying Tom」という名前が含まれている場合にのみ置換されます。.png)
6. 宛先行のデータの置換
ソース列を宛先にマッピングすることで、テーブルセルの値を置換するソースインデックスデータを指定します。
各宛先列に対して、ソース列を1つ選択します。
マッピングできるのは、互いに適合するフィールドのみです。たとえば、テキストフィールドは別のテキストフィールドには割り当てられますが、日付フィールドには割り当てられません。完了ボタンをクリックします。
.png)
インデックステーブルに関するFAQ
FAQ
インデックステーブルとは何ですか。
インデックステーブルは、DocuWareのインデックスフィールドの一種です。標準のテキストフィールドや数値フィールドと異なり、1つのインデックスフィールド内にテーブル形式で複数の値をドキュメントに対して保存できます。
下の図は、ファイルキャビネットのインデックスデータの構造を示しており、「Articles」という名前のインデックスフィールドの例を含んでいます。
ファイルキャビネットのインデックスデータ構造全体を、1つのテーブルとして考えてみてください。
このテーブルの各行は、ファイルキャビネットに保管されているドキュメントとそのインデックスエントリを表します。
各列は、例のファイルキャビネット内の1つのインデックスフィールド(「DocID」、「Company」、「Articles」など)を表します。
インデックステーブルフィールド「Articles」は、それ自体が複数の行と列で構成されています。いわば「テーブルの中のテーブル」です。
標準のテキストフィールドや数値フィールドのエントリは、ドキュメントを選択するだけで指定できますが、テーブル内の値を指定するには、まずドキュメントとインデックステーブルの両方を指定する必要があります。その後、行でインデックステーブルをフィルターできます。
.png)
インデックステーブルはどのようにフィルターされますか。
インデックステーブル内の特定のセルを指定するには、複数の手順が必要です。
インデックステーブルを選択します。ファイルキャビネットには、複数のインデックステーブルフィールドが存在する場合があります。
列を選択します。ここではテーブルフィールドの列「Invoice number」が選択されています。
.png)
ファイルキャビネット内の1つまたは複数のドキュメントをフィルターして、インデックステーブルの行を絞り込みます。
.png)
インデックステーブルデータを並べ替えて、特定のセルを指定します。たとえば、下の例で請求書番号「245」をデータ置換に使用する場合、ワークフローはデータレコードを常に上から下へ処理するため、この請求書番号のデータレコードが最上位にある必要があります。
.png)
これを実現するには、「Price」列で並べ替えます。.png)
インデックステーブルに列を追加するにはどうすればよいですか。
列の追加は、ファイルキャビネット設定でインデックステーブルを構成する際に行います。
インデックステーブルから列または行を削除するにはどうすればよいですか。
Workflow Designerの「インデックステーブルへのデータの割り当て」機能を使用すると、行の値を空のデータで置換することで削除できます。
「一致する行」の動作例を教えてください。
Workflow Designer > データの割り当て > 宛先:インデックステーブル > 既存データの置換では、インデックステーブルを絞り込むための2つの方法があります。
宛先テーブル自身の値に基づいてフィルターする方法。
ソースデータとの比較で照合を定義する方法。これが「一致する行」です。
これらのテーブルの照合コードは列「Company」です。Flying Tomの行がソースと宛先で一致した場合、値Aが値Gに置換されます。
.png)