このアクティビティでは、ワークフローはソースから直接データを読み込み、定義された移行先に書き込みます。つまり、ユーザーの操作を必要としない自動化された手順が実行可能になるということです。
アクティビティに名前を付けます。たとえば、「定期的な領収書データ」などです。
このダイアログの中央のエリアには、追加された移行先の割り当てがすべて独立した行で表示されています。左側にはデータの移行先について「移行先の種類」と「フィールド/変数」という 2 つの列があり、右側にはデータソースについて「エントリの種類」と「エントリ」という 2 つの列があります。
データの割り当てが追加されると、すぐに移行先の種類の選択オプションが表示されます。
移行先の種類/フィールド/変数
移行先は、移行先の種類とフィールド/変数の組み合わせの結果です。どの移行先の種類がどのフィールド/変数で使用可能かについては、以下の概要を参照してください。
Destination type | Field/Variable | Significance |
Fill area on the document | The fill areas of forms that have been created in the template designer of DocuWare Forms are displayed. | Workflow activity writes the value to the form. If the fill area is linked to a form field, any existing values will be overwritten. |
Document index data | The index fields of the document are displayed in the workflow. | Workflow activity indexes the document in the workflow or changes its index data. |
Workflow global variable | The names of the variables that you have created in the Workflow Designer are displayed, e.g. Invoice number | Workflow activity populates values into a global variable that can then be used in multiple workflow steps. |
File cabinet | Open the dialog to select any file cabinet and index field. Documents can be specified via SQL. | Indexes a document in the workflow or changes its index data. Only one index field can be changed per data assignment. |
Index table – multiple columns | The index tables of the current workflow document are displayed. | Adds to the content of an index table in the current workflow document or replaces it completely or column by column. |
Index table – single column | The columns of the index tables in the current workflow document are displayed. | The workflow activity adds to an index table column in the current workflow document or replaces it completely or row by row. |
ワークフローの変数とファイルキャビネットのインデックスフィールドの間でデータの割り当てを行う場合、互換性のあるフィールドの種類のみが表示されます。たとえば、数値の変数は数値のインデックスフィールドにしか割り当てることができません。データを割り当てる際に別の種類へと変換する場合には、CDate、CDec、CInt、CStrなどの VBA 関数を利用することができます。VBA 関数を使用する場合には、ワークフロー数式パーサーに関する情報も参照してください。
エントリの種類/エントリ
ドロップダウンリストからエントリの種類を選択してデータソースを指定します。どのエントリの種類がどのエントリで使用できるかについては、データソースの概要を参照してください。
Entry type | Entry | Significance |
Fixed entry | Text | The workflow activity writes the entered value to the destination. |
Workflow system variable | The names of the workflow system variables are displayed, e.g. the last decision maker | Writes a value from a system variable to the destination |
Workflow global variable | The names of the variables that you have created in the Workflow Designer are displayed, e.g. Invoice number | Writes a value from a global variable to the destination |
Arithmetic expression | Open the dialog to specify an arithmetic expression. | Writes a user-specific value to the destination, e.g. a combination of different variables |
Document index entry | Index fields of the file cabinet linked to the current workflow | Writes index data from the current workflow document to the destination |
Locale data connection (cloud) External data (on-premises) | Open the dialog for specifying the database and table of external data | Writes data from an external source to the destination. For DocuWare On-premises, the entry type is External data; for DocuWare Cloud, it is Local data connection. |
File cabinet | Dialog for selecting any file cabinet, index field, or document | The workflow activity writes index data from the selected file cabinet to the destination, for example to index tables: Match the line items of an index table with entries of a file cabinet or transfer values from data records and documents of the file cabinet. |
Index table | Open the dialog to specify an index table of the current workflow document. | Writes data from an index table to the destination. Only available for the index table destination type. |
また、条件における変数の比較に関する情報についてもご注意ください。
自動的にテーブルデータのインデックスを作成する
たとえば、定期的に行われる請求書の発行や既存のデータの自動フォーマットなど、ドキュメントからのインデックステーブルの生成または編集を自動で行うことができます。
データソースとなるドキュメントは、同一または別のファイルキャビネット、もしくは外部のデータソースに配置することができます。外部のデータソースには、エントリの種類「外部データ」(DocuWare On-premises) またはエントリの種類「ローカルデータ接続」(DocuWare Cloud) を介して接続します。
ソーステーブルを完全に転送する
あるインデックステーブルから別のインデックステーブルへとデータを完全に転送するには、データの割り当て先としてインデックステーブル > 複数列のエントリの順に選択します。
データの割り当てで置き換えが有効になっている場合には、移行先のテーブルの既存の行はすべて削除され、新しい行に置き換えられます。そうしなければ、行は新しい行として追加されます (手順 5 と 6 もご覧ください)。手順はどちらのオプションでも同じで、以下のようになります。
データを転送するインデックステーブルを転送先として、エントリの種類「インデックステーブル」を転送元として選択します。
次に、右側にある「編集」ボタンをクリックして転送元を構成します。
ファイルキャビネットとインデックステーブルを選択します。下にあるフィールドで、必要に応じて WHERE 句を適用してフィルターを指定し、ソースエントリを絞り込みます。
「行」タブで、「すべての行を固定された順序で適用する」オプションを有効化します。
「列」タブで、ソースの各列を転送先のテーブルのソースの列に割り当てます。
置き換えオプションが割り当てに対して有効になっていない場合には、転送元テーブルのデータが転送先テーブルに追加されます (ポイント 6 を参照)。
その一方で、置き換えオプションが割り当てに対して有効になっている場合には、転送先テーブルのデータは転送元テーブルのデータで置き換えられます (ポイント 6 を参照)。
以下の例では、すべての列が転送先のテーブルに割り当てられていますが、転送元には空の列もあります。転送先へは空の列も転送され、既存のデータは削除されます。
転送先の列および列が 1 列のみが割り当てられている場合、転送先にある未割り当ての列は消去されます。
そのため、転送元テーブルから単一列または複数列を転送する場合には、データの損失を避けるために Matchcode でコンパイルオプションを使用してください (次のポイントを参照)。OK で構成を完了します。最後の手順では、転送先のテーブルにある既存の行を置き換えるかどうかを指定します。
すべての値が転送されるため、この場合には行フィルターを使用することはできません。
転送元テーブルから個々の値を転送する
転送先は、以前の手順でのインデックステーブル > 複数列と同じです。しかしながら今回は、転送に条件を付けることで個々の値を具体的に選択します。
Matchcode で列をコンパイルする場合、置き換えオプションは常に有効化されます。
データを転送するインデックステーブルを転送先として、エントリの種類「インデックステーブル」を転送元として選択します。
次に、右側にある「編集」ボタンをクリックして転送元を構成します。
ファイルキャビネットとインデックステーブルを選択します。下にあるフィールドで WHERE 句を適用してフィルターを指定し、ソースエントリを絞り込みます。
「行」タブで、Matchcode で行をコンパイルするオプションを有効にします。そして、いくつかの条件を入力します。
例:
転送先の列 "項目番号" が、転送元の列 "項目番号" に等しい
これは、以下を意味します。転送先と転送元の項目番号が同じ場合、「列」タブで指定された列の値が転送されます。.並び替えの順序を指定します。一致が複数ある場合には、最初に一致したものが使用されます。たとえば項目番号が転送元で重複している場合、ここで指定した順序に従ってテーブルが並び替えられ、そのテーブルからエントリが転送されます。
「列」タブで、転送元テーブルの少なくとも 1 列を転送先テーブルの列に割り当てます。
Matchcode の条件で使用されている列をここで割り当てることはできません。
Matchcode を使用しない転送とは異なり、今回は割り当てられていない転送先の列の値は変更されません。これについては、以下の例で説明しています。
Matchcode は、"列 ID が列 ID に等しい" です。1 つの列が割り当てられ、転送先の 1 つの列が置き換えられます。
次の例では、2 つの列が割り当てられています。これにより転送先の 2 つの列が置き換えられ、転送先のその他の列は変更されません。
すべての列が割り当てられ、転送元でいくつかの列が空になっている場合には、対応する列は転送先でも空になります。
列が 1 つ割り当てられ、フィルターを使用して 1 行目と 3 行目が転送用に選択されています。フィルタリングの詳細については、ポイント 8 を参照してください。OKで転送元の構成を完了します。
フィルターを使用して、値を転送する行を絞り込みます。これを行うには、フィルターのダイアログで「これらの条件に適合する行のみを繰り返す」オプションを選択します。これにより、トリガー領域で指定した条件が適合する行のみが変更されるようになります。
注: フィルター内で転送先テーブルの列の値にアクセスするため、たとえば "税率" 列に "0%" が含まれていない場合にのみ、"売上税" 列に値を入力するように指定することができます。
また、システム列行番号でフィルタリングを行うこともできます。これにより、必要な行の値のみを簡単に変更できるようになります。
マッチング中の NULL 値の処理: テーブルのデータを行ごとに Matchcode で割り当てる場合、両方 (転送先と転送元) の指定された一致列の NULL 値は無視されます。つまり、これらの行の割り当てはスキップされます。
単一列の値を編集する
インデックステーブル - 単一列オプションを使用して転送元テーブルからこの列にデータをコピーするか、データを置き換えます。手順は複数列の場合と同じですが、違いとしては、最初の手順でテーブルの列を直接選択することにより手順を 1 つ省略することができます。
加えて、「単一列」オプションを使用すれば、ワークフロー内のドキュメントのインデックステーブルの列に特定の値を書き込むことができます。これを行うには、以下のオプションが利用可能です。
固定エントリ
演算式から派生した値 (演算式を参照)
同じドキュメントのインデックスエントリ
演算式を使用すると、同じインデックステーブルの列のセルも選択できるようになります。たとえば、行番号と項目の説明を結合するには、演算式を「行番号」テーブル列 (SYS_ROW_NUMBER) と接続します。
インデックステーブルにデータを割り当てる際のその他の注意事項:
数式で条件を定義する: 最初に処理を行う必要がある値を一致させる場合、テーブルのデータの一致条件を演算式で指定することもできます。たとえば、特定の文字を抽出したり、固定エントリや異なるインデックス/列の値と連結したりすることができるようになります。
演算式は、if/else 条件の場合と同様に "true" または "false" (ブール値) として返される必要があります。返された値が "true" の場合には条件は満たされており、"false" の場合には満たされていません。
複数一致の値を自動的に計算する: 一致するすべての行を処理すると既存の値に新しい値を追加するの 2 つのオプションを組み合わせて (次のデータの割り当てダイアログで) データを割り当てる際に、複数一致の行の小数部分の列の値を自動的に計算します。
たとえば、これを利用すれば、すべてが一度に納品されず、複数の納品書に記載されている商品の数量を割り出すことができます。合計金額を割り当てた後に、2 点または 3 点照合を行うことができます。
データソースとしての外部データベース
ワークフローで使用するためにデータベースから外部データを読み取りたい場合は、ここで関連する設定を行うことができます。
データベース
データベースの構成
ドロップダウンリストから希望するソースデータベースの構成を選択して下さい。
テーブル
ドロップダウンリストから希望するテーブルを選択して下さい。
列
ドロップダウンリストから希望するカラムを選択して下さい。
クラウドシステムとオンプレミスシステム間の迅速なデータ同期を有効にするには、クラウドシステムに Local Data Connector をインストールします。これは、DocuWare Desktop Apps がクラウド組織内からインストールされた場合に可能です。オンプレミスシステムでは、Connecgtor は使用できません。外部データダイアログでは、Local Data Connector を使用すると、ローカルデータベース接続を選択することができます。
ステートメントを選択
WHERE 句
エディタで SQL ステートメントを編集します。
データベース検索の並べ替えで特定の文字がサポートされていない場合は、次の手順に従います。ビューで入力した値を N パラメーターでエスケープします。または、値を変数で保存し、この変数をクエリで使用します。この場合、N パラメーターは自動的に追加されます。
演算子
ステートメントに演算子を追加するには、演算子を右クリックします。
変数
ステートメントに変数を追加するには、最初に必要な変数グループのタブを選択します。システム変数、グローバル変数またはテーブルフィールド。タブで目的の変数またはフィールドをクリックします。テーブルフィールドのオプションは、データベース > テーブルまたは列で行った設定によって異なります。
SQL ステートメントのプレビュー
これにより、生成されたステートメントが表示されます。
データソースとしてのファイルキャビネット:
データ割り当てのエントリのタイプとしてファイルキャビネットを選択した場合は、ここで関連する設定を行うことができます。
ファイルキャビネット
ドロップダウンリストからファイキャビネットを選択します。
フィールド
ドロップダウンリストから必要なフィールドを選択します。
ステートメントを選択
WHERE 句
エディタで SQL ステートメントを編集します。
データベース検索の並べ替えで特定の文字がサポートされていない場合は、次の手順に従います。ビューで入力した値を N パラメーターでエスケープします。または、値を変数で保存し、この変数をクエリで使用します。この場合、N パラメーターは自動的に追加されます。
演算子
ステートメントに演算子を追加するには、演算子を右クリックします。
変数
ステートメントに変数を追加するには、最初に必要な変数グループのタブを選択します。システム変数、グローバル変数またはインデックスフィールド。タブで目的の変数またはフィールドをクリックします。利用可能なインデックスフィールドのオプションは、ファイルキャビネットで行った設定によって異なります。
SQL ステートメントのプレビュー
これにより、生成されたステートメントが表示されます。
演算式
演算式は、Visual Basic for Applications (VBA) や .NET の式に加えて、DocuWare でカスタマイズされた特定の式のことを指しています。演算式の機能については、ワークフロー数式パーサーについてのメモを参照してください。
演算式を使用する場合には、専用のダイアログが用意されています。このダイアログには、左側にエディターが、そして右側には選択可能な演算子と変数が配置されています。
演算式に変数を追加するには、最初に必要となる変数のグループのタブを選択します。システム変数、グローバル変数、インデックステーブル、フォームフィールドなどがあります。
使用可能なタブや変数は、使用する機能や関係するアクティビティの設定によって異なってきます。
演算式に基づいて異なるテーブルのソースを整列させます。これにより、請求書やその他のドキュメントをデジタル化する際にエラーの原因を排除できるようになります。
例:
以下の式は 2 つの文字列を比較し、その類似度を推定します。
Peter Peterson _~ Peter Pitersen = 93%
S523-A336MS ~ S523-A336M5 = 95%
これらの式は、パターンに従って文字列を修正します。
パターンに従って文字列からすべての数字を取り除きます。
Something123Anything => SomethingAnything入力された文字列を以下のパターンを用いて分割します。
Something123Anything => Something, Anything
文字列がパターンに一致しているかどうかをチェックします。
[A-Z0-9]\d{3}-\d{3}:
A123-456 => true
演算式をインデックステーブルと併用する
演算式では、インデックステーブルの値を使用することができます。編集を行う同一のインデックステーブルの列から値にアクセスすると、正確に 1 つの値を、つまり同じ行の値を取得することができます。これを実行するには、「<Table name>セル」タブから列を選択します。
一方、別のテーブルのインデックステーブルの列にアクセスすると、その列のすべての値のリストを取得することができます。これを行うには、「テーブル列」タブから列を選択します。
同じテーブルの別の列から値を読み込み、必要であれば演算式を用いて変換を行い、その後目的の列に書き込みを行うことも可能です。詳細については、「単一の列の値を編集する」を参照してください。
「行番号」システム列を挿入する
演算式では、"SYS_ROW_NUMBER" システム列を使用することができます。"SYS_ROW_NUMBER" は、インデックステーブルの各行の番号を返します。これを使用すれば、値を連結したり、計算を行ったり、同じ行の別のテーブルから値を取得したりすることができます。テーブルの最初の行は、常に行番号 "1" としてみなされます。
これは、インデクサーを使用して行を決定する場合に特に重要となります。なぜなら、そこではカウントは 0 から開始されるからです。
しかしながら、"SYS_ROW_NUMBER" システム列を使用する場合にはカウントは 1 から開始されるため、同じ行を取得するには、1 を引く必要があります (...[SYS_ROW_NUMBER]-1)。
例:
あなたは "Example" (内部名 "EXAMPLE") というテーブルを編集しており、"New Items" (内部名 "NEW_ITEMS") という別のテーブルから "Name" 列に値を挿入したいと考えています。検索された値は、"New Name" 列 (内部名 "NEW_I_NAME") にあります。
インデクサーを使用して値を決定し、"SYS_ROW_NUMBER" システム列を用いて値を割り当てます。
通常、移行先の列には次のような演算式を定義します。
DW_NEW_ITEMS[NEW_I_NAME](X)
これは、指定された行の "New Items" テーブルにある "New Name" 列の値を返します。"X" は、リストからどのエントリを返すかを指定します。インデクサーは 0 から開始されるため、たとえば "0" は、最初の行を意味しています。
ここでは、移行先のテーブルのフィールドにソーステーブルの同じ行の値が必要となります。そのため、インデクサーに固定値を使用せずに、新しいシステム列 "SYS_ROW_NUMBER" を使用します。
この場合に問題となるのは、"SYS_ROW_NUMBER" システム列のみを使用する場合、初期状態では目的の行を取得できないという点です。
DW_NEW_ITEMS[NEW_I_NAME](DW_EXAMPLE[SYS_ROW_NUMBER])
この式は、"New Items" テーブルにある "New Name" 列の次の行の値を返します。つまり、たとえば "Line Items" テーブルの最初の行が処理されると、"New Items" テーブルの 2 番目の行の値が返されることになります。
これは、"[SYS_ROW_NUMBER]" が値 "1" を返し、有効な式が DW_NEW_ITEMS[NEW_I_NAME](1) となるからです。
同じ行の正しい値を取得するには、"SYS_ROW_NUMBER" システム列から 1 を引く必要があります。
DW_NEW_ITEMS[NEW_I_NAME]((DW_EXAMPLE [SYS_ROW_NUMBER]-1))
これは、"New Items" テーブルにある "New Name" 列の同じ行の値を返します。
これはつまり、たとえば "Example" テーブルの最初の行が処理された場合、"New Items" テーブルの最初の行の値が返されることを意味します。
これは、"[SYS_ROW_NUMBER]-1" が値 "0" を返し、有効な式が DW_NEW_ITEMS[NEW_I_NAME](0) となるからです。
条件における変数比較
条件内で変数を比較するには、以下のヒントに注意してください。変数の比較には、以下の演算子を使用できます:=、>=、>、<、<=
日付変数
変数を固定の日付値と比較する場合、日付は以下の表記法のいずれかに従って定義する必要があります。
cdate("YYYY/MM/DD")
cdate("YYYY-MM-DD")
cdate("YYYY.MM.DD")
数値変数
数値変数を比較する場合、すべての変数の小数点以下の桁数が同じでなければなりません。小数点以下の桁数が異なる 2 つの変数を比較する場合は、まずデータを割り当てて別の変数を使用して同じ小数点以下の桁数を指定する必要があります。
例:
小数点以下の桁数が異なる変数 1 と変数 2 を比較したいとします。
1.以下が設定されています。
変数 1 (小数点以下 0 桁)
変数 2 (小数点以下 2 桁)
変数 3 (小数点以下 0 桁)
2.データを割当てるアクティビティ:
変数 3 = 変数 2 * 100
3.結果:
変数 1 と変数 3 が同じ小数点以下の桁数を持つようになり、条件で相互に比較できるようになります。