今日はIdentity ManagerのActive Syncの機能をいくつかの方法で起動してみたいと思います。なんかあんまり blog 的な話題でもないんですが備忘録を兼ねて…。(あんまり話題を選んでると「よかやんね通信」の更新頻度に負けてしまいそうなので)
1.Java プログラムによる起動
Java のコードを使って直接 Identity Manager の API を叩く方法です。Sun Developer NetworkのForumに記載されたものをベースに書いてみます。
下↓のコードでは、
- Identity Managerの場所は host.example.com:80
- ActiveSync を実行するリソース名は Simple CSV
- ActiveSync を実行するユーザ名は proxy
- proxyユーザのパスワードは myPassword123
が前提となっています。
SDNのForumに記載されたものとの違いは、
- リソース ID の代わりにリソース名を使用しています
- getConfiguratorSession の代わりに RemoteSession を使用しています
といったところです。
これでリモートからブラウザを使わずに Active Sync の起動・停止ができますね。
ただ Identity Manager で Java で実行できるということならば XPRESS でも行けそうです。XPRESS なら、さらに短い行数で動かせます。
2.ワークフローの中で起動
次は XPRESS を使って Identity Manager のワークフローから Active Sync を起動してみます。この方法はここの情報を参考にしています。
Forumの情報↑をもとに Business Process Editor でワークフローを作ってみます。

「start」と「stop」は中身がありません。「Simple CSV ActiveSyncの起動」のアクティビティで ActiveSync を起動しています。
ポイントは↓ここだけです。
<invoke name='startActiveSyncOnResource' class='com.waveset.session.SessionUtil'><invoke name='getLighthouseContext'>
<ref>WF_CONTEXT</ref>
</invoke>
<s>Simple CSV</s>
</invoke>
スレッドの中で話しているように、startActiveSyncOnResourceメソッドの引数としてそのまま<ref>WF_CONTEXT</ref>は使えないので、<invoke name='getLighthouseContext'>を入れてあげる必要がありそうです。
こうして出来上がったワークフローがこれになります。これは技術的に…というより、どんなシチュエーションでこのテクニックが役に立つのかを考える方が難しいですね(汗
3.lh console から起動する
これはおまけに近いんですが、lh console を使って Active Sync を起動する方法です。これは、lh console でワークフロー(TaskDefinition)を起動できる、ということを利用して、先ほど作ったワークフローを lh console から呼ぶ、というものです。(でも実際はもっとスムーズに実行できるのかもしんないです。???)
ポイントとしては、lh console を実行する時に、-c を付けると非インタラクティブにコマンドを1回だけ叩ける、というところです。それを利用して、runTask を lh console で叩いて帰って来ます。runTask の引数には、先ほど作った、Active Sync を実行するだけのワークフロー「StartSimpleCSVActiveSync」を与えます。
ただ runTask は
runTask <deinition> <taskName>とする必要があるようなので、それに合わせて次のようにコマンドプロンプトで実行してみました。
C:\idm\bin> lh console -c "runTask StartSimpleCSVActiveSync MyActiveSync"私の手元の環境では無事に動いてくれたようです。








