Ver.3.11.0以降のノーツクライアントとサイドバークライアント(TAAG)の起動シーケンスについて
OnTimeノーツクライアントとOnTimeサイドバークライアント(TAAG)は、Ver.3.11.0よりAPI通信にHTTPを併用することで起動速度が高速化されました。さらにエージェントやサーブレットとの通信にも使用されています。
以下のアウトラインでは更新後のクライアントの起動シーケンスとどのような情報がクライアントにキャッシュされているかを説明しています。ここで使用する”トークン情報(Token)”はOnTimeクライアントが接続するためだけに使用している専用のトークンです。
起動シーケンス:
- NRPC通信の初期化(Notes session)
- 現在のNotes sessionから「username、mailserver、mailfile path」等の情報を取得します。
- 上記情報を含んだキャッシュ保管場所を生成します。
上記「username + mailserver + mailfile path」を利用して独自の値をbase64でエンコードする手法で生成します。 - 現在の環境でキャッシュ保管場所を初期化します。
保存場所はノーツデータディレクトリの/workspace/.metadata/.plugins/<plugin id>となります。
- キャッシュ保管場所からエンドポイント情報(endpoint.txt、OnTimeのサーバーとデータベース情報他)を読み取ります。
- もしエンドポイント情報(endpoint.txt)が見つからなければメールDBを参照して最新のエンドポイント情報を取得します。
- エンドポイント情報が全てNRPCベースの通信を使用するよう指示していれば、直ぐにクライアントを起動します。
- endpoint.txtにエンドポイント情報が記載されていればHTTPも併用するように指定されています。
- キャッシュ保管場所からトークン情報(token.txt、OnTime がHTTP通信する際に使用する情報)を読み取ります。
- キャッシュされたトークン情報が見つかった場合、HTTP通信にトークン情報を設定します。
この時点ではToken通信が有効かどうかはまだ判断できません。
- キャッシュされたトークン情報が見つかった場合、HTTP通信にトークン情報を設定します。
補足:notes.iniで「$OnTimeGC_ServletIgnore=1」を指定して強制的にNRPC通信のみの指定が出来ます。
接続シーケンス:
- 前バージョンでHTTP通信が初期化されてなくて、NRPCを使用するように設定されている場合、、、
- HTTP通信用のトークン情報があるか確認します。
- トークン情報があれば接続を続けます。
- もしトークン情報がなければ、現在のユーザーでトークン情報を取得する為にNRPCを使用してOnTime ClientDBに接続します。そしてHTTP通信用にトークン情報をセットして接続を続けます。 NRPC通信を使用したトークン情報の取得は「サーバーが応答しない」状態を考慮して2回繰り返すように設定されています。
- HTTPを経由して呼び出しを続けます。もし呼び出しが成功して、APIから応答が返ってきたのなら、次に、、、
- もしAPIからの応答が正しく返ってきたら(success)、新しいトークン情報を保存してサーバーに応答を返します。
- もしAPIからの応答が正しく返ってこなければ(error)、エラーを応答する前に原因がトークン情報なのか、またそれが修復可能か確認します。エラーが修復可能なトークン情報に起因するのであれば、
- 原因がトークン情報のタイムアウトの場合。解決策として新しいトークン情報を取得して再接続する為にNRPC通信を行います。
- 原因が正しくないトークン情報の場合。トークン情報はサーバーのOnTime管理者によって無効になっています。解決策として新しいトークン情報を取得して再接続する為にNRPC通信を行います。
- 原因がトークンを復号化出来ない場合。トークン情報は壊れています。解決策として新しいトークン情報を取得して再接続する為にNRPC通信を行います。
- 原因がトークン情報の時間が一致しなかった場合。トークン情報は壊れています。解決策として新しいトークン情報を取得して再接続する為にNRPC通信を行います。
- 原因がユーザー名でトークン情報が一致しなかった場合。使用ユーザーがローカルPCで変更されています。解決策として新しいトークン情報を取得して再接続する為にNRPC通信を行います。
- 上記のいずれでも無くエラーが復旧できない場合、接続先にエラーを返して通信を終了します。
上記より、クライアント側でのトークン情報のキャッシュは、ユーザーがオフィスから離れていたり、翌朝出社する時間のほうが短く、トークン情報が期限を迎えることは少なく、毎日の運用で影響を与えないように見えるはずです。いずれにせよ新しいトークン情報は少しだけパフォーマンスに影響を与えることはあります。