【2021/2/19(金)】NCオープンセミナー&FESTA2021 - 弊社セッション「こんな業務アプリが作りたいを最短で実現 consentFlow」のご紹介

ノーツコンソーシアムより今年もオープンセミナー&FESTA 2021が開催されます。

今年は以下の日程で2日間に分けての完全オンライン開催となっております。

2021年2月18日(木曜日)13:00-17:30 - 研究会・HCLセッション
2021年2月19日(金曜日)13:00-17:30 - パートナー企業・HCLセッション

今年のテーマは

「加速するデジタルシフト with Domino」

2020年度の各研究会の成果報告はもとより、HCL様・パートナー企業様よりDX、ビジネス、技術 の視点から様々な興味深いセッションが用意されています。

弊社からも

2月19日(金)14:10 ~ 14:40

「こんな業務アプリが作りたい」を最短で実現 consentFlow

というタイトルでセッションをさせて頂きます。

今回、弊社開発の新製品「consentFlow」はオフィシャルでの初お披露目となります!

「consentFlow」は高機能な承認ワークフローエンジンを搭載したDominoで動作する業務アプリ構築システムです。

インストール不要のブラウザ上で動作する「承認ワークフローモデラ―」を使いフローチャートを描くように承認経路を簡単に作成すれば、後は心臓部である申請書画面の設計だけで高度な申請アプリケーションを素早く作成できるようになります。

基本的にはブラウザとDominoさえあれば利用開始することが可能です。

コロナ禍で加速するデジタルトランスフォーメーション、

  • 申請業務の電子化
  • 外出先からのスマホ承認
  • クラウド運用
  • MS Teams、Slack連携

など。

Dominoが本来持つ強力な管理機能と最新テクノロジーの融合による新たなユーザー体験を今回の弊社セッションでご紹介できるものと当日を楽しみにしております。

ご都合がよろしければ是非、以下のリンクからお申込みをお願いします。

https://www.notescons.gr.jp/home.nsf/content.xsp?k=OpenSeminar2021&w=12


Domino OAuth2 Provider Beta Release by KTrick

I would like to introduce our new solution called "Domino OAuth2 Provider (DOAP)".
We developed OAuth2 provider that can run on IBM Domino server.

Our Domino OAuth2 Provider (DOAP) brings true OAuth2 capability to your IBM Domino Servers.
Since we decided to provide DOAP community edition for Non-Commercial Use Only, everyone can download and use it.

Please visit our DOAP website and get the DOAP installer and free license

https://doap.ktrick.com/

Once after you download our DOAP, please follow the tutorial about how to install DOAP: https://doap.ktrick.com/portfolio/tutorial/

 

Please try our "Domino OAuth2 Provider (DOAP)". Any feedback is really appreciated.

For more detail, you might want to check our FAQ page: https://doap.ktrick.com/faq/

 

Open Source Project "DOAP Sample Chat app with Domino"

To feel the power of OAuth2 capability with IBM Domino, we open-sourced node.js application called "DOAP Sample Chat app with Domino".

Please download/clone  the code and check the instruction of how to run app from here: https://doap.ktrick.com/portfolio/domino-nodejs-chat/

This sample chat application is written by Node.js, web-socket and OAuth module to communicate with DOAP.

After the user login to Domino via Domino OAuth2, they can start chatting immediately on the web based node.js page. The chat comments are also synchronized with discussion nsf in the background. To pull/push the comments from/to the document of discussion nsf, we access to URL of Domino Data Service(aka Domino REST service) with Domino OAuth accessToken in the request body so that the token authorize the each requests seamlessly.

Below is the demo movie, please turn on the caption of the movie to understand what's going on.


Introducing IBM Domino Application on Cloud by IBM Notes/Domino Day 2017

IBM Notes/Domino Day 2017 was held in Tokyo on 09/19/2017.

I was very glad to hear that IBM Japan put "Notes/Domino" in their event title! It reminds me the Lotusphere event somehow.

And surprisingly Ed Brill came to Japan for speaking at OGS session of this event. Welcome to Japan!


In this event, IBM announced new coming service called "IBM Domino Application on Cloud" and the details.

IBM Domino Application on Cloud(DAC)

As my opinion, the one of biggest announcement is IBM Domino Application on Cloud in this event.

IBM Domino Applications on Cloud
First time I've seen the golden color icon of Domino!

"IBM Domino Application on Cloud (DAC)" seems to provide the cloud platform that users can deploy the own custom NSF applications, and IBM tunes and do service maintenance for cloud domino server as well as the other PaaS solution.

The service release date is in October,2017, so it is really coming soon!

Before I've heard this new announce, I was wondering the answer for "IBM Domino Applications on cloud" solution by IBM is "XPages on Bluemix", However IBM was preparing much better answer than my guessing.

Below is the features I've heard about DAC in this event.

  • Built Domino environment by own organization cert ID
  • Users can create and deploy own custom NSF application
  • Can be used by IBM Notes Clients, ICAA, WEB access
  • Encrypt the saved data
  • Capability of sending mail and/or running the schedule agent
  • Allow to replicate between on-premise and cloud domino
  • Users cannot get the control of domino administration.
  • Domino server upgrade is made by IBM
  • Max NSF size is up to 25 GB.
  • Domino clustering is optional
  • Enable DAOS is optional
  • Domino Access Service is optional

Technically, DAC seems to be made by Docker technology and the domino server deployed to the docker container can host the users applications each.
Domino As A Service

I was also happy to hear that Tokyo data center was included as the Tier 1 location of DAC hosting center.
Tier 1 location is US, AP(Japan), EU(Germany and Netherlands), Tier 2 location is Australia, India, China...

License of DAC

Below is the information of DAC License I'v heard today:

  • Montly charge by each DB
  • Contract period is at least more than 1 year
  • BYOL (Bring Your Own License), so SS&S license of Enterprise Server,Utility Server, etc needed
  • Start the service from Minimum 10 dbs

Conclusion

IBM already provided the cloud solution for mail, calendar by Verse. And now finally we could get the cloud option for own custom applications. Also I wonder mix environment of XPages on Bluemix and DAC can make something new spark like easily integrating with other systems, etc.

Finally I hope these new services also give the spotlight to the XPages development more.


Control BB-8 by XPages on bluemix and IBM IoT Foundation (2/2)

Continue from previous post

This blog is the part 2 of Control BB-8 by XPages on bluemix and IBM IoT Foundation (1/2).

In the previous post, I explained how to configure Bluetooth device to use by node.js on windows.

  • 1. To control BLE on Windows
  • 2. Get UUID of Bluetooth

 

3. Get BB8-Bluemix project from GitHub

Surprisingly there is the project named BB8-Bluemix on the GitHub to manipulate the BB-8 via MQTT(IoT). So please get the project code from following URL.

https://github.com/shamimshossain/bb8-bluemix

As the next step, open command prompt and change directory to project folder, then install by issuing "npm install".I got some dependencies warning messages, but it didn't interfere the BB-8 manipulation, so I just leave it as it is.

bluemix-xpages-bb8-08

After install is completed, open the spheroDemo.js file and replace the parameter of sphero() function on line 3 by Bluetooth UUID which you got from the previous step. The UUID seems to be more than 20 characters on MAC OS, but it was 12 characters on my windows OS.

 

4. Create "Internet of Things Platform Starter" application on Bluemix

  1. Login to bluemix.net
  2. Select "Internet of Things Platform Starter" from Catalog.
    bluemix-xpages-bb8-01
  3. Specify your preffered value to the name and host, then click Create button
    bluemix-xpages-bb8-02

5. Add device on IoT Foundation

  1. After staging the application, select "Internet of Things Platform" from the left navigation.
    bluemix-xpages-bb8-03
  2. Click "Launch Dashboard" from device connection.
    bluemix-xpages-bb8-04
  3. Click "Add device" after "IBM Watson IoT Platform" page is opened.
    bluemix-xpages-bb8-05
  4. After popup the wizard, select "Create Device Type", then next./li>
  5. "Create Device Type" ‐ In "general information" Type "sphero" for the device name, then next.
  6. "Create Device Type" ‐ In "Template definition" just click next.
  7. "Create Device Type" ‐ In "Send information" just click next.
  8. "Create Device Type" ‐ In "Metadata(Option)"just click create.
  9. Select the device type you created above for the "Select Device Type" field, then next.
  10. In "Device Information" Specify preferred value for "Device ID", then next.
  11. In "Metadata" just click next.
  12. In "Security" just click next.
  13. In "Overview" just click add button.
  14. After displaying the device qualification information, Please copy and keep the values in the red color rectangle.
    bluemix-xpages-bb8-06
  15. After all done the above steps, back to dashboard of "Internet of Things Platform Starter" then check apiKey and apiToken by clicking "display
    qualification info"
    bluemix-xpages-bb8-07

6. Configure properties file of BB8-Bluemix project

Go to BB8-Bluemix project folder and open sphero-config.properties.
Please edit the following lines:

  • deviceid: Specify the Device ID that you used when registering BB-8 on IBM Watson IoT Platform
  • authtoken: Specify the authentication token that you got when registering the BB-8 on IBM Watson IoT Platform
  • apikey, apitoken: Specify apikey and apiToken written in "IBM Watson IoT Platform" qualification info

7. Test via Node-Red

Find the Node-Red sample flow form the bottom of the link page bb8-bluemix.

  1. bb8-bluemix Copy the Node-Red json code.(below is the same sample flow)
  2. Launch Node-Red from the application URL of "Internet of Things Platform Starter" that you created in step 4.
  3. Paste the Node-Red flow by following the steps in the screenshot.
    bluemix-xpages-bb8-09
  4. Configure the "IBM IoT App Out" node by double-click
    bluemix-xpages-bb8-10
    - Specify Device Type "sphero" which you used in IoT Foundation.
    - Specify device Id that you used when registering the device on IoT Foundation
  5. Save Node-Red flow by clicking "Deploy" button.

As the final step, execute spheroDemo.js from command prompt and establish IoT on bluemix connection, then click "Change color to Red/Blue" on Node-Red. If you succeed, you can see BB-8 color is changed.

8. Create XPages on Bluemix application

Finally I can write something about XPages! Please follow the steps to create the BB-8 xpages app.

  1. Select XPages runtime from Bluemix catalog.
  2. Specify preferred name and host and then create the new XPages application.
  3. After staging XPages application, please download starter code. You will be able to find application.nsf

 

9.Deploy BB-8 Xpages app

Please download the BB-8 xpages application template from the following link:

bluemix-xpages-bb8-download

Download Link: http://ktrick.com/download/xpages-bb8-tpl.zip

Please simply replace the design against your bluemix-xpages application (application.nsf), or copy the design of XPages, scriptLibrary, resources(file), stylesheets from the template.

As the last step, please replace the red rectangle lines of sp_mqtt_bb8.js by your IoT information.

bluemix-xpages-bb8-13

Information is also written in "IBM Watson IoT Platform" qualification info

  • deviceid: Device ID
  • pubTopic: If device type is not sphero, then replace as you need
  • mqtt_host: Specify "mqtt_host" of qualification info
  • mqtt_s_port: Specify "mqtt_s_port" of qualification info
  • org: Specify "org" of qualification info
  • apiKey: Specify "apiKey" of qualification info
  • apiToken: Specify "apiToken" of qualification info

After replacing the design and deploy to the Bluemix, you will be able to see the following top page.

bluemix-xpages-bb8-12

10. Test by XPage app

Step1, Execute spheroDemo.js to establish the connection between BB-8 and IoT Foundation.

Step2, Open the xpages app by your smartphone device.

In this XPAGES app, you can manipulate BB-8 by moving your smartphone like back-forward-right-left. Technically this app is using HTML5+Javascript for motion sensor and paho javascript client to publish MQTT to IoT Foundation.

You can manipulate BB-8 like this movie:

I hope I can explain the inside technology of xpage app in my next blog, and maybe using Paho Java client as further more step. In fact this app does not need to be xpages since client side Javascript does everything. But I hope this helps some other imagination of using XPages, IoT, Bluemix other services.


Control BB-8 by XPages on bluemix and IBM IoT Foundation (1/2)

Control BB-8 by XPages on bluemix and IBM IoT Foundation

I've had the session to contorl the drone by IoT and XPages on 11/18/2015 at the Notes Consortium Partner Solution Seminar event in Japan

This time I succeeded to control the BB-8 droid of Star Wars instead of Drone by XPages and IoT. So I would like to share how I made.

By the way, below is the system diagram of drone(AR-Drone)xpages-iot-drone-diagram

Presentaion slide is below:

Difference between Drone and BB-8

In the drone project, the central device(PC) connected to the drone by the drone Wifi connection so that the device can receive the drone data and publish to IoT on bluemix or vise versa. In the BB-8 project, the most different thing is BB-8 and PC are connected by bluetooth.

Get BB-8!

I got this BB-8 as the eye-catch item at the booth in the IBM Connect Japan 2016. Normally you download the designated smartphone application and manipulate BB-8 via the app.

When I searched BB-8 by Amazon.co.jp, the "Force Band" seems to be sold as BB-8 option item on 9/30/2016. "Force Band" and my technical approach is maybe totally different, but I am happy to blog this before people purchase the "Force Band".

bb-8-amazon

Amazonはこちら

 

Premise

  • Node.js has been installed on Windows OS
  • Bluemix account has been created.
  • CF command line interface has been installed.
  • Bluemix command line interface has been installed.
  • Bluemix Tool has been installed to the IBM Domino Designer (For more detail Go this link)
  • BB-8
  • Bluetooth 4.0 USB adapter

 

System Diagram

bb-8-system-overview

This BB-8 is simpler than Drone.

1. To control BLE on Windows

In my environment, the embedded Bluetooth device could not be used for BLE connection. So I purchased Bluetooth 4.0 USB adapter and then, I needed to setup the device to the WinUSB driver by using Zadig

Below is the Bluetooth 4.0 USB adapter I purchased.

IMG_5630

Below is the instruction to setup WinUSB driver so that node.js can use your Bluetooth device.

https://github.com/sandeepmistry/noble

*If you are using Mac OS, your are lucky since you don't need to worry about this step. This step requires installation of Visual Studio, Python etc.

2. Get UUID of Bluetooth

After complete the step above, install(global install) "cylon-ble" package by npm.

npm i -g cylon-ble

A the next step, install "cylon-sphero-ble".

npm i cylon-sphero-ble

Finally you can use "cylon-ble-scan" command to refer the Bluetooth UUID of you BB-8.

Below is a example of my Windows command prompt, please find the line that Name start from BB-, then get the corresponding UUID.

 

Go to part 2

I divided the blog to part 1 and 2 since it became longer.
Please jump to Control BB-8 by XPages on bluemix and IBM IoT Foundation (2/2)


On-Premise Domino Data Access from XPages on Bluemix

Hybrid XPages appplication on Bluemix

XPages on Bluemix has been released as GA on May,2016, and developers can get the environment to develop XPages application easily on the cloud.

XPages code are compiled by "XPages runtime" for XPages on Bluemix. xpages_runtime

This "XPages runtime" is just for runtime environment and should not store any data like Notes Document. Therefore XPages developer usually bind the service called "XPages No SQL Database" as the data store.

In fact, this "XPages No SQL Database" is just NSF file and you can store the data and create the view, form, etc.
However this "XPages No SQL Database" service is part of "Bluemix Labs Catalog" so far and according to IBM Japan, this service should not been used as the production environment.

By this blog post, I tried to use on-premise Domino as the data store for XPages on Bluemix.

Of cause it does not need to be on-premise domino, for example domino on SoftLayer is same meaning. This approach just try to access to outside of bluemix as the data store. It seams to be called as Hybrid XPages Application on bluemix.

 

BluemixのXPagesSet up the domino server to be used from runtime

icon-website-support-200x20To run Hybrid XPages application, you need to configure your on-premise domino.

If you've already used "XPages No SQL Database" service, you maybe can ealiry imagine this, "/O=Bluemix" is used as Organization on bluemix. so xpages on bluemix cannot access to the on-premise domino without cross-certificate.

So as the first step, you need to create the new server id and then, when you deploy the application to the XPages runtime container of bluemix, you also attach the server id so that XPages on bluemix can communicate the on-premise servers through uploaded server id information.

Premise

  • Installed Domino Designer, Administrator
  • Installed Domino Designer 9.0.1FP6 or OpenNTF.org XPages Extension Library verson 15 or above
  • Bluemix settings are configured by Domino Designer preference
  • Already created XPages runtime application on Bluemix, and downloaded nsf and manifest file on your local

*Sorry, the screenshot are all in Japanese. I hope you still can understand where and what I explain.

Step 1: Create Server ID for Bluemix

  1. Launch Domino Administrator, then click "Configuration" tab
  2. From Tools pane, click "Registration" -> "Server".
  3. In the dialog, specify cert id and click [OK]bluemix_server_01
  4. Enter password for Cert ID[OK]
    bluemix_server_02
  5. If you don't need to change, then just Click Continue.
  6. Enter server information for bluemix. Click [Register All] to complete the process.
    bluemix_server_03Server password is optional and usually you might not put password for server. but I added password since I give this server id to the bluemix. Also I recommend to output the server id as file by checking the checkbox.

OK, nothing special, just server id has been registered. the Different thing is you don't need to install domino server by this server id since you only have to pass this server id to the bluemix Xpages runtime.

*Warning 1: Please confirm the server name is contained in "LocalDomainServers" group.

*Warning 2: Please confirm the server which has the access from Bluemix XPages runtime should contains the LocalDomainServers or created server name in Trusted servers field under the server document -> "Security" tab.

bluemix-domino-server-04

Step2: Configure IBM Bluemix Manifest

  1. Open Domino Designer and then open Xpages application NSF which is created from Bluemix and downloaded.
  2. Open "Application property" -> "IBM Bluemix Manifest"
  3. On the right-top corner, Click Edit button in "Hybrid Configuration" section.
    bluemix-domino-server-05
  4. Enter Hybrid configuration
    bluemix-domino-server-06

    • Remote Server Address ( APP_REMOTE_DATA_SERVER_ADDRESS)
      : on-premise Domino IP addressのIP.
    • Remote Server Name (APP_REMOTE_DATA_SERVER_NAME)
      : on-premise Domino server name(i.e. App01/ZetaDataBank)。
    • Runtime Server Name (APP_RUNTIME_SERVER_NAME)
      : Server name created above(i.e. bluemix/ZetaDataBank)。
    • Runtime Server ID File (APP_RUNTIME_SERVER_IDFILE)
      : Server id file created above
    • Runtime Server ID Password (APP_RUNTIME_SERVER_PASSWORD)
      : Server id password if you specified.
    • Directory Assistance Enabled (APP_DA_ENABLED)
      : Specify directory assistance enabled or not
    • Directory Assistance Domain (APP_DA_DOMAIN)
      : domain name(i.e. ZetaDataBank)。
    • Directory Assistance Address Book (APP_DA_ADDRESS_BOOK)
      : Directory NSF which is necessary for authentication of hybrid environment (i.e. “names.nsf”)。

That's all.

I created one sample xpage below:

I specified on-premise domino view in this sample. (Line 5)

Deploy to the bluemix through Domino designer.

bluemix_server_07

Bluemix service is going to reboot automatically. After wait for a while, access to the Xpage URL you created, and then if you get the on-premise data in the view, Success!


How to invoke function from string by XPages SSJS

What's the case you want to invoke the function from string?

There are many situations you want to invoke the function from string of function name. One of case is for example, you might want to switch the functions from the parameter value of HTML Get/Post method.

The example below is client-side javascript(CSJS) when it's triggered from the URL like "http://mydomain.com/ApplyFuncXAgent.xsp?func=callMe". Then switch the flow by the query parameter value of "func".

If you want to simplify the code above, you can write the code like below:

In this case, window object is used to retrieve the function object, then call the target function. However Server-side Javascript(SSJS) does not have the window object like CSJS. Therefore you need to tweak this code a little.

(1) Use "this" instead of "window"

(2) Use eval()

Both (1),(2) can get the same result.

To pass the parameters, Use call() or apply()

Now we could call the function from string of function name. Then if you want to pass the parameters as well when call the funcion, you can use call() or apply() functions. Actually this way is pretty same as CSJS.

For example, when I call the HTTP Get request like "http://mydomain.com/ApplyFuncXAgent.xsp?func=callMe&args=aa,bb". (I added [args=aa,bb] as the function argument's values.) , the SSJS code becomes like below:

The code above is the example of using call(). If you want to use apply(), then instead of passing the arguments separated by comma, pass the Array to the second argument of apply(). Below is the sample code:

Sample code of using XAgent

In my situation, I needed to get the JSON data from the many notes views as the asynchronous connection. (Passing the JSON data for Kendo UI Grid data.) So I decided to use the XAgent to return the JSON data, however I didn't want to create XAgent XPages as many as notes views. So the sample code below calls the function from the Get parameter value of function name and returns the JSON data by the specified function.
HTTP request is like this -> "http://mydomain.com/hoge.nsf/ApplyFuncXAgent.xsp?func=testFunc&args=aa,bb"

Below is the sample code of xpCommon.jss which contains the callFuncByString() above.

The advantage of this logic is avoiding to create many XAgent for notes views. But please remember that dynamically calling the functions from string value sometimes lose the serviceability of code. For example debugging purpose.
*This XAgent is just for example and for the real coding, please pay attention to the security when you use this concept since any SSJS standard functions can be called remotely if you don't add any restriction and it is very dangerous.


2015.11.18 XPagesDay 2015 Session for controlling Drone by XPages, WebGL, Gyro and Motion sensor

XPagesDay is held on 11/18/2015 in Japan

XPagesDay 2015 is held on Nov 17,18 as online and onsite sessions.

Controlling a drone by Xpage on bluemix and IoT Foundation

Kazunori Tatsuki@KTrick has the onsite session on 11/18/2015 for demonstration of controlling drone by XPages on bluemix with Mr Takeshi Yoshida@SOLXYZ. We are going to explain the following technologies to control the drone in the session

  • XPages on Bluemix
  • IoT Foundations on Bluemix
  • MQTT on Javascript
  • Node.js
  • Node RED
  • WebGL
  • Gyro and Motion sensor on smartphone

This project is still under development, but we've already finished the WebGL part to synchronize the drone on the browser like below.
xdrone-webGL02xdrone-webGL01

Since this is onsite session, please apply the session by following url.
http://partner.cons20.info/portal.nsf/pages/pub

XPAGESDAY 2015 details

Date:11/17/2015 (Tue), 11/18/2015 (Wed)

Place:11/17/2015 (Tue) - online session, 11/18/2015 (Wed) - online and onsite sessions at IBM Hakozaki Office, Japan

XPagesDay official sitehttp://xpagesday.com/xpagesday.nsf/home.xsp