「実行の準備」を押下せずにLoop Stepを追加すると内部エラーが発生する場合がある

フォローする

事象

Design Studioにて、「実行の準備」を押下していない状態で、Repeat(繰り返し) StepやFor Each File(ファイル繰り返し) Step等の繰り返し処理を行うステップ(以降ではLoop Stepと記載)を追加後、デザインモードでロボットを実行すると、内部エラーが発生する場合があります。

〇例「実行の準備」を押下していない状態でStepを挿入
figure1.png

Loop Stepを設定(例ではRepeat Step)
figure2.png

「実行の準備」を押下後、Loop Stepを一気に実行
figure3.png

本不具合は、「実行の準備」を押下していない状態で、Loop Stepが追加された場合に発生するため、Loop Stepをコピー&ペーストすることでも同様に事象が発生いたします。
 
〇例:
Loop Stepを含むGroupをコピー
figure4.png

「実行の準備」を押下していない状態のロボットに張り付け
figure5.png

「実行の準備」を押下後、Loop Stepを一気に実行
figure6.png


エラーメッセージ

例外メッセージ:
Internal error during robot execution.

スタック トレース:
com.kapowtech.lang.ApplicationError: Internal error during robot execution.
at kapow.robot.robomaker.engine.design.DesignExecutionController$DesignModeExecutionControllerEngineCallback.lambda$handleExecutionFatalError$2(DesignExecutionController.java:508)
at kapow.util.gui.SwingThreadUtil$1.run(SwingThreadUtil.java:56)
at java.desktop/java.awt.event.InvocationEvent.dispatch(Unknown Source)
at java.desktop/java.awt.EventQueue.dispatchEventImpl(Unknown Source)
at java.desktop/java.awt.EventQueue$4.run(Unknown Source)
at java.desktop/java.awt.EventQueue$4.run(Unknown Source)
at java.base/java.security.AccessController.doPrivileged(Native Method)
at java.base/java.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionPrivilege(Unknown Source)
at java.desktop/java.awt.EventQueue.dispatchEvent(Unknown Source)
at java.desktop/java.awt.EventDispatchThread.pumpOneEventForFilters(Unknown Source)
at java.desktop/java.awt.EventDispatchThread.pumpEventsForFilter(Unknown Source)
at java.desktop/java.awt.EventDispatchThread.pumpEventsForHierarchy(Unknown Source)
at java.desktop/java.awt.EventDispatchThread.pumpEvents(Unknown Source)
at java.desktop/java.awt.EventDispatchThread.pumpEvents(Unknown Source)
at java.desktop/java.awt.EventDispatchThread.run(Unknown Source)
at TRIGGERED_BY.invokeLater(Unknown Source)
at kapow.util.gui.SwingThreadUtil.invokeLater(SwingThreadUtil.java:50)
at kapow.robot.robomaker.engine.design.DesignExecutionController$DesignModeExecutionControllerEngineCallback.handleExecutionFatalError(DesignExecutionController.java:502)
at kapow.robot.robomaker.engine.StudioRobotExecutionEngine.lambda$startBackgroundExecution$1(StudioRobotExecutionEngine.java:337)
at java.base/java.lang.Thread.run(Unknown Source)
Caused by: com.kapowtech.lang.ApplicationError: Desired iteration not given for Transition(Repeat).
at kapow.robot.robomaker.engine.design.full.HistoryTree$ExecutionProgressExtractor.getDirectionForStep(HistoryTree.java:706)
at kapow.robot.robomaker.engine.design.full.HistoryTree$ExecutionProgressExtractor.collectProgressForIteratorStep(HistoryTree.java:607)
at kapow.robot.robomaker.engine.design.full.HistoryTree$ExecutionProgressExtractor.collectProgressForEdge(HistoryTree.java:663)
at kapow.robot.robomaker.engine.design.full.HistoryTree$ExecutionProgressExtractor.collectProgressForNonIteratorStep(HistoryTree.java:573)
at kapow.robot.robomaker.engine.design.full.HistoryTree$ExecutionProgressExtractor.collectProgressForEdge(HistoryTree.java:666)
at kapow.robot.robomaker.engine.design.full.HistoryTree$ExecutionProgressExtractor.collectProgressForNonIteratorStep(HistoryTree.java:569)
at kapow.robot.robomaker.engine.design.full.HistoryTree$ExecutionProgressExtractor.<init>(HistoryTree.java:536)
at kapow.robot.robomaker.engine.design.full.HistoryTree.getExecutionHistory(HistoryTree.java:384)
at kapow.robot.robomaker.engine.design.full.History.getCachedStepGraphExecutionHistory(History.java:204)
at kapow.robot.robomaker.engine.design.full.FullExecutionRobotExecutionEngine.setExecutionHistoryOnState(FullExecutionRobotExecutionEngine.java:358)
at kapow.robot.robomaker.engine.design.full.FullExecutionRobotExecutionEngine.edgeIsBeingExecuted(FullExecutionRobotExecutionEngine.java:385)
at kapow.robot.robomaker.engine.instruction.ExecuteEdgeInstruction.execute(ExecuteEdgeInstruction.java:103)
at kapow.robot.robomaker.engine.stackengine.StackEngine.execute(StackEngine.java:68)
at kapow.robot.robomaker.engine.StudioRobotExecutionEngine.lambda$startBackgroundExecution$1(StudioRobotExecutionEngine.java:319)
... 1 more

発生条件

以下の条件をすべて満たす場合に発生します。
・「実行の準備」を押下していない状態でLoop Stepを追加する
・デザインモードで実行する
・ロボットの実行モードはスマート再実行
・実行する際は次のブランチを押下する等でLoop Stepを最後まで一気に実行する

対処方法

以下の何れかの方法で回避することが可能です。
①Loop Stepを追加する前に「実行の準備」を押下しておく
②Loop Stepを追加した後に一度Loop Stepを通過させておく(一気にLoopの最後まで実行させない)
③Loop Stepを追加した後に一度ロボットを閉じる
④実行モードを最小実行にする
 
①Loop Stepを追加する前に「実行の準備」を押下しておく
「実行の準備」を押下後にStepを追加した場合、エラーは発生しません。
figure7.png

②Loop Stepを追加した後に一度Loop Stepを通過させておく(一気にLoopの最後まで実行させない)
Loop Stepを一気に最後まで実行せず、一度通過させておくことでエラーを回避することが可能です。
figure8.png

③Loop Stepを追加した後に一度ロボットを閉じる
Step追加後に一度ロボットを閉じることでエラーを回避することが可能です。
figure9.png

④実行モードを最小実行にする
実行モードが最小実行の場合、Loop Stepが最後まで一気に実行されることは無いため、本事象は発生しません。
 <参考記事>ロボット実行モード
figure10.png

区分 発生Ver 改修ID 修正Ver
不具合 11.1.0.4,11.1.0.6,11.3.0.3 1943158