Hexabaseの基本機能
Hexabase の機能階層
システムのバックエンドを担うHexabaseは、次のような機能階層を持っています。
ワークスペース
「ワークスペース」は、Hexabase のアプリケーションをまとめておく領域です。ワークスペースごとに、複数のアプリケーションをまとめることができます。また、ワークスペースごとに、ユーザーやグループを分離できます。
Hexabase のワークスペースは、一種のテナント機能を提供するものです。ワークスペースごとに利用者を分離して、アプリケーションを提供します。
アプリケーション
Hexabase では、「アプリケーション(プロジェクト)」ごとに、データベース・データレポート・ダッシュボードなどをまとめます。新しくワークスペースを作成すると「新しいアプリケーション」という名前のアプリケーションが作成されています。
ロールベースアクセス制御
Hexabaseでは、ユーザー・グループ・ロールにより機能とデータのアクセスを制御します。この設定に従って、API の戻り値を自動的にフィルタリングします。
ユーザーとグループは、ワークスペースに属しており、ロールはアプリケーションに属しています。Hexabase のシステム開発では、アプリケーションの各機能で、ロールに利用可否を設定し、ユーザーとグループにロールを付与します。
ワークスペースの選択
ワークスペースとアプリケーションを選択するフロントエンドの実装イメージです。 ユーザーが複数のワークスペースに所属している場合、ログイン後にワークスペースとアプリケーションの選択画面を表示しています。
Hexabaseのデータストア
Hexabase のデータストアは、NoSQL DBをベースとしてリレーショナルデータべ―スを実現しています。図のように複数のNoSQL DBを統合して、NoSQLのスケーラビリティとRDBの使いやすさを両立しています。
データベースの設定・操作は、API・コマンドラインツール(CLI)・管理画面からおこないます。SQLは使用できませんが、管理画面のデータレポートにクエリービルダーを備えています。
開発者は、個々のNoSQL DBの使い方を理解することなく、リレーショナルデータベースとしてDB設計・操作が可能です。
データストアの考え方
データストアは、1データベース = 1テーブルになっています。
データストアの各データを「アイテム」と呼びます。表の横1行がアイテムになります。これは一般的な RDB のレコードに相当します。また、「アイテム」のカラムを「フィールド」または「項目」と呼びます。
- 1データベース = 1テーブル
- レコード → アイテム
ヘッダ明細形式の実現
Hexabaseは、データベースの関連付けによりヘッダ・明細形式を実現できます。たとえば、見積りや請求書や売上管理のために伝票のヘッダと商品明細の親子関係を表すといった具合です。
開発者は、一般的なRDBとして操作でき、テーブル設計を一般的なE-R図の考え方で記述できます。データベースを関連付けした結果は、データレポートで取得できます。
Hexabaseデータストアの仕組み
Hexabaseのデータストアでは、リレーショナルデータベースのように操作できますが、実際の仕組みではアイテムをmongoDBのドキュメントとして格納、リレーションをArangoDBで管理しています。Hexabaseはリレーションをあらわす次の実体データを持っています。
- データベース関連:データベース間の関係性を定義する
- データリンク:関連を持つアイテムへのリンク
関連・リンクはそれぞれ方向を持っており、関連元データベース ⇒ 関連先データベースとして設定します。双方向の関連を持たせるには、それぞれのDBで設定が必要です。
アクション
Hexabase では、データストアに対する「アクション」により、アイテムに対して指定した操作を実行します。アイテムの作成・更新・削除といった基本的な操作は、あらかじめアクションとして用意されています。
アクションには、次の2種類に分類できます。
- データベースアクション:データベースのアイテムを操作します(新規作成、更新、削除)
- ステータスアクション:ステータスの操作とアイテムの操作を同時におこないます。
さらにアイテムに対する共通操作を登録できます(例:外部 API の呼び出し)。これにより、データベースに対する操作を共通化できます。
Hexabase API
Hexabaseでは、アイテムを操作するアクションやデータレポートを、APIから呼出しできます。アクションやデータレポートにIDを割り当てるだけで、対象操作を呼出しできます。
ステータス
Hexabaseでは、データベースに「ステータス」(status)というフィールドがあると、自動的にBPMワークフローのステータス名として利用できます。
ワークフローのステータスを変更するには、「ステータス」フィールドを更新する「アクション」を実行します(例:次のステータスに進める)
Hexabase を用いたシステム開発では、アイテムの状態(ステータス)と状態変化を起こすステータスアクションを組み合わせることで、状態遷移ベースのBPMワークフローを実現します。
ワークフローを状態遷移図(ステートチャート)で実現することで、効率的かつ汎用的な画面設計が可能です。
ビジネスロジックの記述/ActionScript
Hexabaseでは、ビジネスロジックをJavaScriptで記述できます。これは、次のように2つの記述場所があります。
Hexabaseでは、データベースのアイテムに対する操作をアクションと呼びます。このアクションに、Javascriptのコードを割り当てできます。これがActionScriptです。
ActionScriptでは、アクションを呼び出すことで、割り当てたコードを実行します。
バックエンド拡張
Hexabaseは、ActionScriptに加えて、Webhookによる外部連携でバックエンドを拡張できます。
Webhookを利用するには、該当するアクションにコールするURLとSecret情報を必要に応じて設定します。
バッチ処理では、AWS LambdaやAzureFunctionの『タイマー トリガー』を利用して、Hexabaseno機能を呼出します。
データレポート
「データレポート」は、データベースの特定のアイテムやフィールドだけを表示したり、連結・集計したりできる機能です。Hexabase では、「データレポート」を使って報告書(レポート)用の表を作成できます。このデータレポートをもとにして、ダッシュボードのグラフ(チャート)を作成します。
また、データレポートを作成するとGetReportData APIで、連結・集計したデータをフロントエンドで取得できます。
ダッシュボード
「ダッシュボード」は、複数のグラフ(チャート)をまとめる領域です。「ダッシュボード」に表示するグラフは、「データレポート」をもとに作成します。
ダッシュボードは、サーバーサイドでチャートをレンダリングして表示します。主に、管理画面で状況を把握する用途を想定しています。
フロントエンド側でグラフ表示する場合は、データレポートをソースとして独自のグラフ表示ライブライを利用するといいでしょう。