001-010582

パッケージ版 Garoon

関心あり
2人の方が関心を示しています。

「申請経路ステップの分岐条件の変更」画面で[変更する]をクリックすると、データベース内で経路分岐に関するレコードが重複する場合がある。

種別
不具合
機能
  • ワークフロー
  • システム設定
  • ベース
再現バージョン
  • 4.0.0
  • 4.0.1
  • 4.0.2
  • 4.0.3
  • 4.2.0
  • 4.2.1
  • 4.2.2
  • 4.2.3
  • 4.2.4
  • 4.2.5
  • 4.2.6
  • 4.6.0
  • 4.6.1
  • 4.6.2
  • 4.6.3
  • 4.10.0
  • 4.10.1
  • 4.10.2
  • 4.10.3
  • 5.0.0
  • 5.0.1
  • 5.0.2
改修バージョン
5.5.0
公開日
2020-01-27
更新日
2020-11-05
【準備】
  • ワークフローに、カテゴリを追加します。

    例:
    カテゴリ1

  • カテゴリ1に、申請フォームを追加します。

    例:
    申請フォーム1

  • 申請フォーム1に、分岐項目に設定できる項目を追加します。

    例:
    ------------
    タイプ:数値
    項目名:項目1
    ------------

  • 申請フォーム1に、経路ステップを2つ以上追加した経路を設定します。

    例:
    ------------
    経路情報:
    • 経路名:専用経路1

    承認経路:
    • 経路ステップ名:承認1
    • 経路ステップ名:承認2
    ------------

  • 経路の分岐情報を設定し、分岐条件を追加します。

    例:
    ------------
    経路の分岐情報:
    • 項目タイプ:数値
    • 分岐項目名:項目1

    経路の分岐条件:
    • 経路分岐名:分岐条件1
    • 分岐条件:「項目1」「が次と同じ」「1」
    • 経路:
      • 「承認1」のチェックボックスを選択する
      • 「承認2」のチェックボックスの選択を外す
    ------------

    補足:
    • 「経路」で、いずれかのチェックボックスの選択を外した状態にします。

【再現手順】
  1. システム管理画面にログインし、[ワークフロー] > [申請フォームの一覧] > [カテゴリ1] > [申請フォーム1]の順にクリックします。

  2. [分岐条件1] > [変更する] の順にクリックします。

  3. 「申請経路ステップの分岐条件の変更」画面で、内容を変更せず[変更する]をクリックします。

→現象発生:
 データベース内で、経路分岐に関するレコードが重複して不要データが作成されます。

補足:
  • 準備3点目で、次の項目タイプを設定した場合も、同様の現象が発生します。
    • メニュー
    • ラジオボタン
    • チェックボックス
    • 自動計算

  • 準備4点目で、共有経路または回覧経路を設定した場合も、同様の現象が発生します。

  • 手順3で、内容を変更しても、同様の現象が発生する場合があります。

  • 次の画面で、内容を変更せず[変更する]をクリックした場合も、同様の現象が発生します。
    • (運用管理画面)「ワークフロー > 申請フォームの一覧 > 申請フォームの詳細 > 申請経路ステップの分岐条件の詳細 > 申請経路ステップの分岐条件の変更」画面

  • 本現象が発生した状態でも、Garoonの画面上の動作には影響ありません。

本不具合の影響により、データベース内で重複した経路分岐に関するレコードが不要データとして存在する場合があります。
不要データが存在していても、ワークフローの申請、承認、検索など一般的な操作には影響はありませんが、それが大量に存在する場合には、申請経路ステップの分岐条件の変更や削除操作時間が延伸し、これにより、サーバーに負荷をかけ、レスポンス遅延を引き起こす可能性があります。
このため、この不要データを確認、および削除するためのツールの実行方法を説明します。

■対象バージョン
バージョン 5.5.0以降のGaroon

■削除における注意点
条件分岐ステップの利用状況によっては、大量の不要データが存在する場合があります。
この場合、削除処理は長時間に及ぶため、一度の処理で削除を完了することが困難であることが想定されます。
※後述の「不要データの削除が完了するまでの時間の目安」を参照してください。

このため、実際の削除にあたっては、下記の通り進めることを推奨いたします。

  1. 確認ツールで不要データ件数を確認する。
    まずはじめに、不要データの件数を確認します。

  2. 削除計画を立てる。
    件数が大量に存在する場合には、ユーザーの利用頻度の低い日時やサービスが停止するバックアップ時間を避けて、複数回に分けて処理を実行してください。

    例:
    • 利用頻度の少ない休業日に、ユーザーからの利用を停止して、削除ツールを実行する

    • 日次バックアップが3時で終了する場合、3時5分から1時間実行するよう、スケジューリングする

  3. 削除ツールで不要データを削除する。
    削除計画に従って削除を行います。

■不要データ件数確認ツール
不要データの件数を出力します。

○実行方法
  1. Windowsの場合はコマンドプロンプト、Linuxの場合はコンソールを開きます。

  2. CGI実行ディレクトリに移動します。

    例:
    Windowsの場合:

    cd C:\Inetpub\scripts\cbgrn

    Linuxの場合:
    cd /var/www/cgi-bin/cbgrn/

    DB分割構成の場合:
    cd /usr/local/cybozu/cbgrn/

  3. 不要データ件数確認ツールを実行します。

    例:
    Windowsの場合:
    .\grn.exe -Cq code\command\count_unnecessary_workflow_data.csp

    Linuxの場合:
    ./grn.cgi -Cq code/command/count_unnecessary_workflow_data.csp

    DB分割構成の場合:
    ./grn.cgi -Cq code/command/count_unnecessary_workflow_data.csp

○引数
なし

○実行結果の例
実行結果はコンソール上に出力されます。
例:
------------
2020-07-28 01:45:27 Done in 0 seconds: Hit 19000 records.
------------

○留意点
不要データの件数によっては時間がかかります。
当社の事例では不要データが3億件ほどある場合には、1時間程度の時間を要しました。

※この実行時間は「不要データ件数確認ツール」の実行時間です。実際に不要データを削除するための「不要データ削除ツール」の実行時間については、後述の「■不要データの削除が完了するまでの時間の目安」をご参照の上、別途確認を行ってください。

■不要データ削除ツール
不要データを削除します。

○実行方法
  1. Windowsの場合はコマンドプロンプト、Linuxの場合はコンソールを開きます。

  2. CGI実行ディレクトリに移動します。

    例:
    Windowsの場合:

    cd C:\Inetpub\scripts\cbgrn

    Linuxの場合:
    cd /var/www/cgi-bin/cbgrn/

    DB分割構成の場合:
    cd /usr/local/cybozu/cbgrn/

  3. 不要データ削除ツールを実行します。

    例:
    Windowsの場合:

    .\grn.exe -Cq code\command\delete_unnecessary_workflow_data.csp max_duration=180

    Linuxの場合:
    ./grn.cgi -Cq code/command/delete_unnecessary_workflow_data.csp max_duration=180

    DB分割構成の場合:
    ./grn.cgi -Cq code/command/delete_unnecessary_workflow_data.csp max_duration=180

○引数
max_durationで指定した分数が経過すると、ツールの実行は終了します。
指定がない場合は削除が終わるまで実行されます。

○実行結果の例
実行結果はコンソール上に出力されます。
例:
------------
2020-07-08 10:42:57 The tool was successfully completed.
2020-07-08 10:42:57 5000 rows are deleted.
2020-07-08 10:42:57 Done in 12 seconds.
------------

■不要データの削除が完了するまでの時間の目安
下記のように、一度短時間で削除できる件数を確認し、それをもとに削除完了できる時間を試算します。
  1. 確認ツールで不要データの件数を確認する

  2. 削除ツールを10分間実行する

  3. 確認ツールで不要データの件数を確認する

  4. 1と3の比較で、10分で削除できた件数を算出する

  5. 残りの件数と10分で削除できた件数から、すべての削除に完了する時間を確認する


-------------------------------------------------------------
【更新履歴】
2020/10/29 回避/対応方法を更新しました。