ページビューの合計

ラベル volt の投稿を表示しています。 すべての投稿を表示
ラベル volt の投稿を表示しています。 すべての投稿を表示

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年1月5日水曜日

一段階 #ワークフロー #テンプレート ( #volt )

Happy New Year!

Today, I'd like to introduce a Domino Volt workflow template and its instructions for super beginners.

新年あけましておめでとうございます。

年末年始、思いのほかゆっくりすることができました。
元旦には1時間ほど山を登った保久良神社を参拝し、初日の出も拝んで帰ってきました。

が・・・以降の生活が悪く、脂の乗りがよくなってしまいましたので、本日より節制しております。


さて本題ですが、このゆっくりした時間で何かできないかと考えていたのですが、結果的に一番簡単なもので終わってしまいました。
せっかくですので、こちらで紹介したいと思います。

初期画面はこんな感じ


Domino Volt の開発のきっかけにして頂くものができればと思い、超簡単なワークフローのテンプレートとその説明書を同梱して用意しました。

https://app.box.com/s/woz7tw10jjpj44iovwiiuicg3moic68n

.voltファイルをインポートして頂き、ワークフローの内容(経費精算や休暇申請など)を追加して・・・もっともこれが一番手間がかかるのですが(汗
アクション時のメールの内容を編集頂ければ、アプリケーションとして利用が開始できるというものです。

申請者フィールド以外はノーコードで作っていますので、初めてアプリを作る方でも内容を確認しながら作り上げることができるものとなっています。

但し、実際に利用するにはもう少しチューニングが必要な点がありますが、あくまで初歩ということで、その点は見逃してください(笑

まずはVoltでどんなものが作れるのかを理解頂けるヒントになれば幸いです。


なお既にVoltハンズオンを受けた方にとっては、取るに足らない内容になっていますので、スルー頂ければと思います。


以上、年始早々、お茶を濁したような記事にて失礼致します。

本年もよろしくお願いします!!

2021年10月21日木曜日

Notesアプリ開発者が、 #Volt で最初につまづくこと

 This is my first article on the development of Domino Volt.

I think there has been no article in Japanese explaining the hurdles that every Notes developer must face, so I would like to introduce it here.

I hope you will read this article and try to develop Volt applications!


みなさま、こんにちは。

緊急事態宣言が解除され、多少動きやすくなったのでしょうか。
先日はひさしぶりに大阪まで私用で出かけてきました。

いろいろとやりたい事、やらなければならない事が溜まっており、ほぼ1日歩き回ってきました。


本題に入る前にひとつお知らせです。

ノーツコンソーシアム 第五回 大阪研究会(会場開催+オンライン開催)を12月3日(金)に開催予定です。
今年は1回多く5回目!
テーマはHCL様最新情報と、来年のやりたい事調査。
その後は大阪研アプリ「タスク管理」についての作業を予定しています。
ひさしぶりの集合開催に加え、リモート配信も行いますので、ぜひお時間調整頂き、ご参加をお願いします。


さて前置きはこれくらいにして、話題の Domino Volt。
ようやく開発に関して、初記事の掲載です。

と言いますのも、作り始めでつまづいてしまい、なかなか本格的に進められなかったという理由がありました。

このつまづき・・・おそらくノーツアプリ開発者のだれしもがぶつかるであろう内容かと感じましたので、紹介させて頂きます。

それは何かと言いますと・・・

●作成日フィールドってどうやってつくるの?

●作成者フィールドって・・・

これができなければ、アプリを作る気がしないですもんね。

もっともVoltはたいへん優秀で、Notesフォームによくサブフォームなんかで追加する以下4項目はデフォルトでバックエンドで準備されているのです。

・Created By (作成者)
・Modified By (最終更新者)
・Created On (作成日)
・Modified On (最終更新日)

ちなみに以下がVoltで作成された文書をNotesクライアントから表示した例です。

最初のセクションがフォームに設置したフィールド
その次に一般的に文書管理上で必要な項目。こちらに作成者や作成日が保管されます。
次がアクセスコントロール
最後がワークフローのステータスです。

このうちの2項目を表に出すだけなのですが・・・。


ということで、まずは簡単な「作成日」からです。

「日付」を設置し、プロパティで「現在の日付から開始」にチェックするだけです。
これで作成時に当日の日付がデフォルト表示される日付コントロールが作成できました。


次に「作成者」です。

「名前ピッカー」を設置し、onShowイベントで何かするのかな?
サービスも何かできそう。


残念ながら現時点の私の力では解決できませんでした。

そこでみなさまご存じ、Voltといえば 株式会社 エフ
そう、最近ではVoltのサンプルアプリをどんどん掲載頂いたり、ハンズオン資料もバージョンアップごとに更新されている会社です。

エフと言えば御代アンバサダーということで、失礼ながら問い合わせさせて頂きました。

さすがです。
即座にフォームのonNewイベントにapp.getCurrentUser()を記述するとの回答を頂くことができました。
正しくは、以下のような記述を追加し、無事作成者を表示することができました。
・・・もし間違ってたら、ご指摘ください(汗

var CU = app.getCurrentUser();

BO.F_User.setValue(CU)


その後、さらにサービスを利用することで、ノーコードで取得可能との情報を頂き、以下設定を実施したところ、こちらでも作成者が設定可能となりました。

①先と同じく、フォームのonNewイベントで「サービスの呼び出し」にチェックし、「サービス構成の追加/編集をクリック


②次に「入力割り当ての作成」画面で、左側の[現在のユーザー]と右側の[ユーザー名またはメール]を選択し、中央の接続アイコンをクリックします。
すると、下の「割り当てられている入力」に設定内容が追加されますので、確認して[次へ]をクリックします。


③「出力割り当ての作成」画面が開きますので、左側から「ユーザー名」。右側では割り当てたいフィールド(今回は[氏名])を選択して、先と同様中央の接続アイコンをクリックすると、下の「割り当てられている出力」に設定内容が追加されますので、確認して[次へ]をクリックします。

④次画面はそのままで[OK]し、onNewのイベント画面に戻りますので、こちらも[OK]すると設定が完了となります。

プレビューしたのが以下になります。



想定通り、申請日に今日の日付、氏名にはログインしている自分の名前を表示することができました。

以上、知っている方にとっては取るに足らない情報かもしれませんが、初めてVoltでアプリを作る際に、いきなりつまづいてしまうとスムーズに利用が進まないかとも思いましたので、今回ご紹介させて頂きました。

ぜひみなさまも一度、Voltでアプリを作ってみてください。

私も弊社の本番環境で運用できるようなアプリをがんばってつくりたいと思います。


追伸
Voltに関しては、まだまだ手探り状態ので、内容に不備や誤りがございましたら、訂正させて頂きますので、ご指摘頂けましたら幸いです。