エンド・ユーザー・モード(UF_EXEC)で発生し、デザイン・モード(UF_DESGN)では発生しないRAMP実行エラー

LANSA RAMP-TS

エンド・ユーザー・モード(UF_EXEC)で発生し、デザイン・モード(UF_DESGN)では発生しないRAMP実行エラー


RAMPアプリケーションはデザイン・モードで実行できても、エンド・ユーザー・モードでは次のようなエラーが表示される場合があります。

この問題の原因

RAMPをデザイン・モードで実行する場合とエンド・ユーザー・モードで実行する場合の大きな違いは、javascriptの実行方法です。

デザイン・モードでは、RAMPに影響する変更が行われた場合、フレームワークを保存するたびにjavascriptは再ロードされます。javascriptが再ロードされると、オブジェクトのプロパティは常にリセットされます。また、有効になっているRAMPが変更された場合、フレームワークが保存されるたびに、一連のjavascriptファイル(<system prefix>Nodes_nnnnnnnnnnnnnnnnnn.js)が生成されます。このファイルは各セッションに1つずつ生成され、nnnnnnnnnnnnnnnnはセッションIDを表します。

このファイルがエンド・ユーザー・モードで使用されるファイルです。このファイルは、フレームワークが保存された時にjavascriptとして書き出された画面とスクリプトを表します。

エンド・ユーザー・モードでは、このファイルはセッションごとに1回ロードされます。ファイル内の各javascriptファンクションは、セッション起動時に1回だけ呼び出されます。この方法を使うことで、エンド・ユーザー・モードのRAMPの起動時間はデザイン・モードと比較して大幅に短縮されます。

デザイン・モードでRAMPを実行した場合にエラーが発生せず、しかしエンド・ユーザー・モードでは上記のようなエラーが発生する場合、一番に疑われる問題はユーザー定義スクリプト(ナビゲーション・スクリプト、呼び出しなど)に構文エラーがあることです。

 

対策

javascriptのどの行にエラーがあるかを探すには、ファイルを基本.HTMファイルにロードするだけです。

たとえば、次のような内容のtest.htmというファイルを作成します。

 

<html>

<head>

<title>Untitled Page</title>

<script language="javascript" type="text/javascript" src="<your nodes.js file here>"></script>

</head>

<body>

Hello World

</body>

</html>

 

nodes.jsファイル名を<script>タグのsrc= 属性に指定して、Test.htmをjavascriptと同じフォルダーに配置します。

Internet Explorerを使用して、ツール/インターネット オプションの詳細設定タブをチェックし、「スクリプト エラーごとに通知を表示する」にチェックマークが付いていることを確認します。これでTest.htmを実行してスクリプト・エラーが発生すると、エラーが発生した場所の行番号を表示できます。ヒント:エラーは、次のようなjavascriptファンクションの内部に存在する可能性が最も高いと思われます。

 

function __UF__nnnnnnnnnnnnnnnnnnnnnnnn(objScriptInstance)

これと実際のスクリプト名を関連付けることは少し困難です。この実際のスクリプトを探すには、ファンクション名のnnnnnnnnnnnnnnnn部分と同じファイル内を検索します。次に、そのスクリプトがオブジェクトとして定義され、さらにユーザー名(oS.uScriptUserName="NAVIGATE_SCRIPT_13"など)が含まれているjavascript行を検索します。

RAMPツールを使用してスクリプトを編集し、エラーを修正して保存します。