当ブログに掲載しているサンプルは、すべて利用者の自己責任とします。
ただし、明らかな不具合がある場合、ご連絡いただければ、訂正記事を出します。
また、こちらのサンプルは、別のサイト等への公開、転載は一切禁止しています。
どうしてもと言う場合は、筆者にあらかじめご連絡ください。
記事そのもののリンクについてはご自由に行っていただいてよいです。
xxのようなサンプルを作って欲しいとかxxxの作り方を教えて欲しいというお問い合わせには応じていません。
このようなお問い合わせは、株式会社エフまでご一報ください。

2020年3月19日木曜日

HCL NomadでのID切り替えを実装してみた

*** This article translated Implemented the ID switching application for HCL Nomad into Japanese.

*** この記事は、Implemented the ID switching application for HCL Nomad"を日本語に翻訳したものです。

皆さん、こんにちは。HCL Nomad使ってますか?
私はAndroidユーザーなので、ようやくHCL Nomadを利用できるようになりました。
そんなNomadを利用していて、一つ気になったのが「IDの切り替え」ができないということです。
モバイル端末は1台しかないので、IDの切り替えができないと検証が不便です。
そこで、なんとかIDの切り替えができないか?ということを考えました。

今回はその調査結果を書いていきます。


1.IDファイルの上書きを試してみた

前回の記事で、Nomadで利用されているユーザーIDのファイル名は「user.id」であることがわかりました。(notes.iniのKeyFileNameを取得して確認)
また、データディレクトリの場所も検索できることがわかっています。
なので、そこに別のユーザーのIDファイルを上書き保存してみたらどうだろう?ということを考えてみました。
IDファイルはNotes DBを用意してそこに文書を作成して添付しました。
その文書から添付したIDファイルをダウンロードするということを実際にやってみたところ…
HCL Nomadが起動できなくなりました!?一度終わらせての再起動もできません。

ロケーションの選択って…

どうやらIDファイルは違うユーザーのもので上書きしてはダメのようです。
※この後、HCL Nomadはアンインストールする羽目になってしまいました(T T)
では、IDファイルを複数持たせることはどうなのか?
仮に複数のファイルを保存できれば、ロケーションの切り替えができるかもしれません。


2.IDファイルを保存してみた

そこで、ファイルが保存できるかどうかを試してみました。
以下のサンプルコードを作成して、Nomadのデータディレクトリに保存してみました。

Sub Click(Source As Button)
    On Error GoTo ErrProc
    
    Dim session        As New NotesSession
    Dim strDirectory   As     String
    Dim strIDFilePath  As     String
    Dim db             As     NotesDatabase
    Dim docs           As     NotesDocumentCollection
    Dim doc            As     NotesDocument
    Dim ritem          As     NotesRichTextItem
    
    strDirectory   = session.GetEnvironmentString( "Directory", True )
    
    Set db   = session.CurrentDatabase
    Set docs = db.UnProcessedDocuments
    If docs.Count <> 1 Then
        Error 1000, "Please select only one document."
    End If
    Set doc   = docs.GetFirstDocument
    Set ritem = doc.GetFirstItem( "IDFile" )
    
    If doc.HasEmbedded Then
        ForAll x In ritem.EmbeddedObjects
            If x.Type = EMBED_ATTACHMENT Then
                strIDFilePath = strDirectory & "/" & x.Name
                Call x.ExtractFile( strIDFilePath )
            End If
        End ForAll
    Else
        Error 1001, "There is no ID file."
    End If
    
    Msgbox " The ID file was saved successfully.", 0 + 64, "Download ID"
    Exit Sub
    
ErrProc:
    MsgBox _
    "Error line:"    & CStr(Erl) & Chr$(10) & _
    "Error number:"  & CStr(Err) & Chr$(10) & _
    "Error content:" & Error, _
    0 + 16, "Download ID"
    
    Exit Sub
End Sub


実行してみた結果はこの通り。どうやら保存できたようです。

添付ファイルの保存はできるのね

3.ロケーションの切り替えを試してみた

Notesクライアントの場合、ロケーションの切り替えは画面右下にあるロケーション名をクリック、もしくは[ファイル][ロケーション][ロケーションの変更]メニューの実行で行えます。
HCL Nomadの場合はどうすればよいのでしょうか?
調べたところ、@コマンドやLotusScriptで実現できそうです。
問題はこれらの関数がHCL Nomadで動作するかどうかです。
早速試してみました。

@Command([SetCurrentLocation])
Sub Click(Source As Button)
    Dim uiws As New NotesUIWorkspace
    
    Call uiws.SetCurrentLocation( "" )
End Sub

ともに正常に動作して同じ結果になりました。

ロケーションの一覧が表示されたよ!

確かにロケーションの変更ができます。
これができるということは、NotesクライアントのようにIDファイルさえ用意しておけば、ロケーションの変更によるIDファイルの切り替えができるのではないかと考えました。

つまり、
1.IDファイルをNomadのDataディレクトリに保存(notes.iniのDirecotryから取得)
2.ロケーション文書をローカルのnames.nsfに作成(オンラインのロケーション文書をコピーして作成)
3.ロケーション文書の「IDの切り替え」フィールドに1.で保存したIDファイルのパスをセット
4.NotesUIWorkspaceのSetCurrentLocationメソッドを実行
5.手動でロケーションを切り替える(4.でロケーションの一覧が表示されます)

システム構成図

という手順でできるのではないかということです。
これを踏まえてサンプルプログラムを作成してみました。


4.サンプルプログラム

最初にNotesクライアントでアプリを起動します。

Notes DBをクライアントで開いたところ

ID File文書を作成するために、[Create]をクリックします。

IDファイル登録画面
ユーザー名を選択して、その人のIDファイルを添付します。この時、添付ファイルのファイル名はNotes DB内でユニークとなっている必要があります。
必要なユーザー数分を作成したら、準備は完了です。
これは、DB管理者ユーザーが操作するものです。
※ゆくゆくはID VaultからIDをダウンロードできるようになるといいなぁと思っています。

続いて、スマホもしくはタブレットでHCL Nomadを起動します。
NomadでNotes DBを開きます。

AndroidのNomadで開いた
※余談ですが、レスポンシブ対応できてますね。一応意識はしましたけど、特別なことはしていません。

最初に、[Ready]をタップします。これで、「オンライン」のロケーション文書に「user.id」のパスがセットされます。
これは1度だけ実行します。
成功すると、下図のようなダイアログが表示されます。

「オンライン」のロケーション文書を編集できた

次に[DL]をタップします。すると、ユーザー一覧のビューが表示されます。

ユーザー一覧ビューを表示
IDファイルをダウンロードしたいユーザーを選択して、[Download ID File]をタップします。
成功すると、下図のようなダイアログが表示されます。

IDファイルをダウンロードして、ロケーション文書を作成してます

[Go back menu]をタップしてトップ画面に戻ったら、[Switch]をタップしてロケーションの切り替えを実行します。
IDファイルをダウンロードしたユーザー名でロケーションができているので、それを選択して[OK]をタップします。

ロケーションに「Masahiko Miyo」が追加された!

すると、パスワードの入力画面になります。
スマホの言語を英語にするとメッセージも英語になるよ

これで、IDファイルの切り替えができました。
確認したい場合は、
@UserName関数を実行してみればわかります(面倒なので画面は省略…)



いかがでしょうか?
また、別のユーザーにしたければ、[Switch]をタップすればよいです。
ID Vault対応ができれば、ユーザーIDのパスワードがわかっていないとダウンロードすらできなくなるので、よりセキュリティの強化が望めるでしょう。
※今回の画面はNomad for Androidでしたが、iPadでも動作することを確認済みです!(iPhoneは持ってないので・・・)




HCL Nomadは@関数/@コマンド、LotusScriptがほぼきちんと動作しますので、このようなプログラムを作成することができます。
アイデア次第でもっと便利になるでしょう。




今回紹介したNotesアプリケーションの詳細を知りたいという方は、弊社までお問い合わせください。





それでは今日はこの辺で・・・



Notes/Dominoで困ったことがあれば、弊社にお問い合わせください。
HCL Masterの私が承ります!
お問い合わせはこちらから→Lotus Notes/Domino カスタマイズとセキュリティ強化 - 株式会社エフ

0 件のコメント: