ページビューの合計

2022年12月12日月曜日

#Magic #xpi を介した #DominoVolt ( #DominoLeap ) と #IBMi の連携

In this article, I will describe the configuration of the service that Domino Leap (Volt) uses to reference IBMi data.

The procedure is realized by using Magic xpi, an ETL tool.


みなさま、こんにちは。
さて先週のDominohub2022いかがでしたでしょうか。
当日の動画は現在配信中ですので、もし登録がされていない方でも、まだ間に合いますので、ぜひお見逃しなく!!

今回は先日のDominohub2022のセッションで少し触れておりました内容について、さらに進展することができましたので、紹介致します。


さて弊社では販売管理の期間システムとしてIBMiを利用しております。

最近のOSになって、設定すればIBMiとのREST接続が可能になっているようですが、なかなか情報が少なく、うまくいかずに困っておりました。

それとは別で、弊社は商社という立場で、お客様から注文を頂き、取引先メーカーにオーダーするという一連の流れが主な収入源になります。

しばらく前からEDIやメールオーダーといった電子化が急速に進んだ環境にありながら、業務の改善ができていなかったのですが、この度RPA導入という転換点に至り、あわせてETLツールを採用し業務の自動化を図ることとなりました。

ちなみにETLツールとは


つまり、さまざまなデータを希望する形に変換して、提供するというものになります。

弊社ではMagic xpiという製品を採用しました。

なお今回の記事は、主にMagic xpi を利用して、IBMiのデータをDomino Voltで利用する手順となりますので、Magic xpiの作業内容中心となります点、あらかじめご了承ください。

シナリオとしては、DominoVoltで作成した返品申請アプリがあります。


こちらがその入力フォームになるのですが、これをすべて間違いなく手入力させるのは至難の業です。
そこで元データのあるIBMiから「受注No」をキーに、赤枠部分を呼び出したいというものになります。

さて早速ですが、Magic xpiの画面です。
既にいくつかフローが右側のソリューションエクスプローラに存在しており、その中のひとつに「返品申請」が見て頂けるかと思います。


まずはこのフローで使う変数をふたつ定義します。


F.受注番号:Voltからリクエストされる受注Noを扱う変数
F.HTML結果:Voltへ送信するjsonデータを格納する変数

次にIBMiとの接続をリソースとして登録します。


サーバー名(IPアドレス)と認証情報だけで接続できます。
次に下にある[ライブラリ]をクリックして、IBMiのライブラリを登録します。

以上でリソースの登録は完了です。

次にVoltのアクセスを受けるHTTPをサービスとして登録します。


Webサーバとエイリアスはデフォルトのままで進めます。
次にエンドポイントを定義します。


今回は**NOというエンドポイントを登録して、引数としても**NOと定義しました。
自動でエンドポイントURLが生成され、
サンプルHTMLの生成にチェックを入れると、このようにテスト用のHTMLファイルがローカルに作られます。

以上で各接続の準備ができましたので、あとは組み上げていくだけです。

まずはトリガーとしてHTTPの設定を行います。


プロパティでは先に作成したHTTPのサービスを選択し、
設定したエンドポイント**NOをフロー変数 F.受注番号 にマッピングします。
さらに戻り値もフロー変数 F.HTML結果で受け取るという設定になります。

この設定により、VoltからのHTTPリクエストをこのトリガーが受けて、フローが動作するということになります。

それではその動作内容です。

「データマッパー」と呼ばれるMagic xpiのメインツールを設定します。


こちらがデータマッパーの画面です。
左に送り元、右に送り先を設定していくというものです。

まずは送り元となるIBMiのテーブル定義を追加します。
こちらはウィザード形式での設定となりますので、画面遷移を続けておきます。


どのテーブルを利用するかを選択して(複数選択してあります)、


どのフィールドを利用するかを選択します。
ここで先の**NOが存在しています。


Where句の設定で、フロー変数 F.受注番号 と合致したデータのみを取ってくるように設定します。


今回のように複数のテーブルを利用する場合は、その結合を定義します。


と、このようにウィザードだけでSQL文を発行してくれます。


すると、このようにIBMiから取得するフィールドリストが設定されました。

次は送り先です。
こちらはjsonを設定します。


jsonの設定は、保存する先の変数 F.HTML結果 と、JSONスキーマファイルの指定です。
スキーマファイルについてはお手数ですが、詳細はご確認頂くとして、今回の例は以下のような記述になっております。


すると、



このように送り先のフィールドが設定されました。
この両方のフィールドの関連付けを行い、


このようなマッピングができあがりました。
設定は以上で完了です。

それではまずは先に生成したサンプルHTMLを確認してみます。
指定されたローカルフォルダに"エンドポイント名.html"ができていますので、こちらを開きます。


Valueに存在している受注番号を入力して、[Call Magic xpi]をクリックすると、


無事、受注No.66668560 の値を取得することができました。

続いてブラウザで試してみます。
こちらも先に生成されたURLを使用するのですが、生成されたURLは以下となります。

http://サーバー名/Magicxpi4.13/MgWebRequester.dll?appname=IFSIBMi&prgname=HTTP&arguments=-Aサービス名%23エンドポイント名

この後ろに先に設定したエンドポイントの引数名を指定します。

 &引数名=66668560


こちらも問題なく取得できました。

VoltからはこのURLを利用してアクセスすることになります。

以上でMagic xpiの準備が完了しましたので、Voltの設定に移ります。
フォームは冒頭に紹介したものになりますので、いきなりですがRESTの接続へ進みます。

今回は対象の受注番号を入力することで、そのデータをIBMiから取得するという流れになりますので、受注Noは必ず手入力になります。


そこで、この受注NoのonItemChangeイベントに組み込んでいくこととします。


受注Noを選択し、「イベント」から「onItemChange」をクリックします。



開いたウィンドウで、「サービスの呼び出し」にチェックし、「サービス構成の追加/編集」をクリックします。


サービスの選択画面では、「URLを入力」を選択し、URLに先ほどブラウザでテストしたURLを貼り付けます。
右側の歯車ボタンを押して、URLパラメーとセグメントの設定を行います。


今回は不必要なパラメーターが「割り当て可能」となっていましたので、そちらのチェックを外します。


次の入力の設定では、ソースとして先の「受注No」を選択して、ターゲットには先ほど設定したパラメーター「**NO」を選択して関連付けます。


出力では、それぞれ呼応するソース項目とVoltのフィールドを関連付けしていきます。

そのまま進めていけば、サービスの設定は完了になります。

それでは実際の動きを見てください。
(※便宜上、申請者等のフィールドを非表示にしました)


以上でIBMiにあるデータをMagic xpiでREST API化して、DominoVoltで利用するという手順がご理解頂けたのではないでしょうか。

ここでひとつ注目して頂きたいのが、今回の作業では一切のコードを書いていないという点です。
DominoVoltはもちろんローコードツールとして有名ですが、実はMagic xpiも同じくローコードツールの部類にも含まれます。

少し学べば、設定やウィザードのみでここまでできる。
すばらしいツールの組み合わせかではないでしょうか。


今回は長文になり申し訳ございませんでした!!

2022年11月4日金曜日

#Domino #Volt ( #dominovolt )で 外部 #REST #API ( #restapi )を使う

 I recently posted about the prerequisites for using an external REST API with Domino Volt.

However, I thought that this was not enough, so I created a video in which I actually implemented an application that retrieves data from an external REST API in Domino Volt in a short time and with no code.

みなさま、こんにちは。

さて先日、

#Domino #Volt ( #dominovolt )で 外部 #REST #API ( #restapi )を使う前準備

という記事を掲載しましたが、設定だけを公開しても・・・ということで、今回は実際に外部のREST APIからデータを取得する手順を短い動画にしましたので、公開致します。

こちらも先日の掲示板に張り合い?
4分20秒で完成させたスピード作になります(笑

今回の例では、ホットペッパーグルメから公開されているAPIを利用して、キーワード検索を行い、結果をVoltに表示させるという単純なものです。

ホットペッパーグルメのAPIについては、こちらをご参照ください。
(※登録して、API Keyを取得する必要があります・・・すぐに発行して頂けました)

https://webservice.recruit.co.jp/index.html

こちらのAPIリファレンスに詳しく書かれていますが、必要な項目としては、

●リクエストURL
●検索クエリ(何を検索するのか・・・今回はkeywordを利用)
●レスポンスフィールド(どの項目を表示させるか・・・今回はname,Address,station_name,closeを利用)

となります。

リファレンス内には以下のようなサンプルがあり、リンクをクリックするとブラウザに結果が得られます。

ちなみに得られた結果はこちらになります。


・・・keyが設定されていないので、あたりまえですね。
では[APIキー]を取得したキーに差し替えてみます。


実際にはもっと長いデータになりますが、無事データを取得することができました。

それでは実際にDomino Voltに設定していきましょう。
先にも書きしましたが、今回はkeywordのみを指定して検索しますので、URLの例は以下となります。

http://webservice.recruit.co.jp/hotpepper/gourmet/v1/?key=[APIキー]&keyword=秋葉原

試しにブラウザで実行してみると、

このように結果が得れることを確認しました。

それではDomino Voltに設定していきます。

・・・いきなりですが、今回のフォームは以下となります。
詳細はお手数ですが、動画をご覧ください。


それではREST APIの設定を[検索]ボタンにサービスとして追加します。

以下のようにURLを指定します。


すると・・・


なんとエラーが出てしまいました。
応答にはデータが入ってそうです。

・・・よくよく内容を確認すると・・・
そう、APIのデフォルトがXML形式で戻ってきていたのです。

現状、VoltはJSON(のみ?)でのやり取りになるため、その設定を追加してやる必要があるということです。

APIリファレンスをよく読むと・・・


ありました。
URLに"format=json"を追加してやればいいようです。

ということで、まずは以下URLをブラウザで表示させてみます。

http://webservice.recruit.co.jp/hotpepper/gourmet/v1/?key=[APIキー]&keyword=秋葉原&format=json


ごちゃごちゃした表示が戻ってきました。
さすがにこの状態ではXMLのほうが見やすいとは思いますが、関係ありません。


ということで、このURLを使い、サービスを設定していくことで、無事結果が得られました。

こちらの詳細も申し訳ございませんが、動画にてご確認ください。
今回はまったくコードを書いておりませんので、ぜひその点にもご注目ください。






2022年11月2日水曜日

#Domino #Volt ( #dominovolt )で 外部 #REST #API ( #restapi )を使う前準備

 I will be publishing an article on the prerequisites for connecting to external REST APIs with Domino Volt.

Since there are not many articles in Japanese, I would be happy if you find this article useful.

みなさま、こんにちは。
さて今回も告知からです。

#HCLAmbassador ノミネーション受付中!!

我こそは!!
少しでも思いつく方は、遠慮することなくエントリーを!


#DominoHub 2022

HCLアンバサダー主催のオンライン・オフラインイベント。
イベントの最後にはビアバッシュと大抽選会も!!
可能な方は、ぜひ現地でお会いしましょう。
もちろん難しい方は、オンラインでご視聴ください。

おまけ
12月8日はパブリックビューも開催されますので、こちらもお見逃しなく!!



さて本題です。
先にも触れましたがDomino Hub 2022で1コマ頂いており、現在その資料を作成しています。
いろいろと掘り返している中、Domino Volt のREST接続を久しぶりに実施したのですが、なんとうまくいかない・・・。

具体的にはAPIのURLを入力して進めようとすると、以下エラーが表示されるんです。


ホワイトリスト???

半日ほど調べたのですが、見つけられず。
今回もサポートを頼らせて頂きました。
特に急ぎでなかったので、"優先度:低"で送信したのですが、なんと1時間ほどで連絡が。

「Volt Configuraton Settings (VoltConfig.nsf) の以下の設定でサービスの Whitelist を設定します。」

すっかりこのDBのことを忘れてました。
実際には、以下コンフィグデータベースを開き、


以下、「servicesWhitelist.enabled」を編集します。



変更する場所は2か所

まず最初のラジオボタンを[Enable Setting]に切り替えます。


続いて、最下部の Setting Value を[false]に書き換えて保存します。


すると、先のエラーはなくなり、以下のようにサンプルの応答(JSON)に結果が表示されました。


今回はあらゆるサイトに対しての許可を与えることとなっていますが、接続可能な先も制御できるようです・・・さすがDomino!
サポートからの案内文は以下となりますので、参考まで・・・。



このあたりの情報も、なんとか日本語で検索できればいいのですが。

ということで、ここまでくれば、フィールドの割り当てなどを設定すれば、RESTで取得したデータをVoltアプリに取り込むことが可能になります。
しかもノーコードで!!

APIはいろいろと公開されていますので、社内で利用可能なものも手軽に作れるのではないでしょうか。

ということで、このような内容を12月8日に発表させて頂きますので、ぜひご視聴ください!!

2022年10月24日月曜日

14分で掲示板

 Recently, a variety of technical information is being distributed via video.

Although I am late I thought I would try my hand at sending out some information myself.

This time, I will show you a simple video of how to create a simple bulletin board from scratch using Notes/Domino.

Please take a look if you like.

みなさま、こんにちは。

ことしも残すところ2か月ほど。
早いですねー。

少し振り返ってみたのですが、今年は #ノーツコンソーシアム ( #notescons )の活動、がんばったかなと感じております。

●大阪研究会・・・悪だくみの会含め、いろんな情報交換ができました。新しい出会いも!!
●新教育講座・・・大阪研発。LotusScript入門講座。大成功とはいきませんでしたが、満足してよい結果になったと思います。
●ユーザー情報交換会・・・数年ぶりのオンサイト(浜松)開催。貴重な情報交換ができました。

さらにはこの12月に #HCLAmbassador 主催のイベントが企画されております。

DominoHub 2022

テーマは【Link to Domino】
システム間のつながりにフォーカスし、Notes/Dominoの役割、可能性を探る機会になればと思います。


さて今回は少し違う趣向で記事を書いてみました。

といいますのも、昨今さまざまな情報が動画配信され、その利便性の幅を広げています。


我々もその手を使うべきではとの思いから、まずは手始めとしてローコード開発ツールの老舗であるNotes/Dominoの簡単な開発画面を一発撮りでトライしてみました。

今回トライしたのはごく簡単な掲示板(タイトルとカテゴリと内容のみ)になります。
デザインも無視して、まずはノーツアプリの作成とはどんなものかというものを見て頂く機会になれば幸いです。

ちなみに目標15分と考えていましたが、ギリギリ14分を切って仕上げることができました!!

ぜひご覧ください。

※申し訳ありません、YouTubeのアカウントを変更しましたので、動画を貼り換えました(2022/11/04)


2022年9月12日月曜日

#OnTime なぜか特定ユーザーが常時表示される・・・

 This is another OnTime story.

I am happy to report that I have realized how faithfully OnTime Group Calendar reproduces Domino's calendar functionality.


みなさま、こんにちは。

今回もまずは告知から・・・

以前も案内しましたが、今年のユーザー情報交換会、改め「みんなで情報交歓会」まで約1カ月となりました。
会場宿泊の締め切りが今週になりますので、ぜひお早目にお申込みください。

今回もOnTimeで気づいたことを報告させて頂きます。

・・・決してメーカーの廻し者ではございませんので、悪しからず・・・

先日より本番で利用していたのですが、当初から利用していてずっと気になっていたことがあります。

というのは、私のカレンダーに特定のユーザーが常に表示されているんです。

こんな感じ・・・


こちらは会議室のみを選択した状態なのですが、2行目にそのユーザーのスケジュールが表示されているのです。

当初、同一部署のものは常時表示かと感じていたのですが、所属を別アプリから参照するよう変更したため、それは違うと判断しました。

ではこれはいったい・・・?

といったところでひとつ思い出しました。

ノーツのデフォルトカレンダーでこのユーザーのカレンダーをオーバーレイしていたのです。


やはり疑わしい・・・

ということでこのチェックを外して、OnTime Clientを更新してみました。


正解!!

無事消えました。

ちなみにほかにもオーバーレイしてあるカレンダーがありますが、外部のGoogleカレンダーなどは反映対象外でした。

Dominoディレクトリのみが対象となるようです。
(Office365も表示できるようになった?)

これで思う表示にすることができました。

こちらの機能を逆にうまく使うと、例えば秘書さんがご自身の担当者を常時表示するようなことが可能になるのかと思います。

奥深いですね。


ちなみに別件で、またサポートの方へご迷惑をお掛けしてしまいました(汗
こちらはWebexMeetingとの紐づけ作業になります。
Global Settingにわかりやすく[Online Meetings]という項目がありますので、ささっとこちらを登録して、


新規の会議で「オンライン会議」が追加されているのを確認して、[作成]をクリックします。


すると以下のような画面が表示され、


またこれとは別にブラウザが起動してWebexへのサインインが求められます。


すると・・・


うーん。
そのほかに設定項目を探しますが、まったく見つからずサポートへ。

そのスタート時に、「マニュアル読みましたか?」との質問。

あ゛っ

またやってしまいました。
FAQを検索はしたのですが、マニュアルを読んでない・・・orz

なんて初歩的な。

要はGlobal Settingに設定する値は、ログインの情報ではなく、Webex Appへの接続情報が必要でした。

・・・詳しくはマニュアルをご参照ください・・・
私が言える立場ではありませんが(大汗

ということで、無事接続でき、利用が可能になりました。


まだやりたいことがあるので、随時報告致します。