Q175-1:アプリケーション起動時に、現在時刻に行われているべき作業工程において、その工程の開始予定時刻からの経過時間を考慮して、現在時刻で生産が完了していなければならない台数を表示したい。
A175-1:
現在作成されているアプリケーションでは常に現在時刻で行われるべき工程を判定しております。その際、はじめて工程が見つかったときに画面表示をリセットしておりますが、その箇所でその工程の開始時刻からの経過時間を計算し、人員および作業時間から生産されているべき台数を逆算し、画面表示上の台数を更新してください。
Q175-2:
アプリケーションをお送り致しますのでご確認ください。
A175-2:
ご相談内容は、
アプリケーション起動時に、現在時刻に行われているべき作業工程において、その工程の開始予定時刻からの経過時間を考慮して、現在時刻で生産が完了していなければならない台数を表示したい、と言うことであったと理解しております。
まずは、経過時間を現在時刻-開始時刻と考え処理をご検討くださいとお伝えしました。また、修正箇所はID:59のサブルーチンに関係する箇所であるとお伝えしました。
お送りいただきましたアプリケーションを拝見しますと、ほぼ上述の処理ができておりますが、いくつか修正が必要です。
(1)サブルーチンID:59の起動のタイミング
ID:59のサブルーチンは、進捗管理用のタイマーに設定するイベントの発生間隔の値を用いますので、その値が計算された後に起動する必要がございます。
現在はID:27の等価演算コンポーネントの処理完了イベントの最初に起動されておりますが、この時点ではタイマーの発生間隔が計算されておりません。4番目の比較演算コンポーネントのメソッド起動の後に移動してください。
(2)生産台数計算結果の数値入力フィールドへの設定等について生産台数の計算は正しいようですが、その設定がうまくいっていないようです。
ID:59以降の処理におけるID:108除算コンポーネントの処理完了イベントの処理で、除算コンポーネントの計算結果はBigDecimal型ですが、それを直接BigInteger型の表示設定がされた数値入力フィールドに値を設定しようとしております。
一旦、「任意精度実数(BigDecimal)格納変数」に設定し、メソッド「int値を取得する」等を用いて整数に変換し設定したほうが確実であると思います。また、進捗を管理している整数(BigInteger)格納変数(ID:60)にも同一の値を設定する必要がございます。
その他、小さな修正事項がございますが、コメントつきで修正したファイルを添付いたしますので、詳細はそちらをご覧下さい。