初めに
2023年の8月からOutSystemsを使った開発を始めました。
開発しやすく、かゆいところにも手が届くツールだと感じています。
半面、日本語の情報も決して多くはなく、細かいところを調査しようとすると英語の公式ドキュメントとコミュニティに頼らざるを得ません。
部署のメンバーが稟議を上げ承認者が承認否認を返す簡単な決裁システムを作ることを目標に、記事を投稿していこうと思います。
本記事では、システムで扱うデータの決定と実装について記述します。
環境
Outsystems O11
Reactive Web APP
取り扱うデータの設計
まず決裁システムでの稟議の内容と登場人物を洗い出します。
稟議の内容
簡潔に以下の内容にします。
- 発議者
- 承認者
- 稟議内容(添付資料を含む)
- 承認結果
- 承認コメント
登場人物
上記の稟議の内容から、
- 発議者
- 承認者
が登場人物として考えられます。
Entityの作成
OutSystemsでは主にデータをEntityと呼ばれるDatabaseのTableのようなものに保存して扱います。
DBのように追加・取得・変更・削除(CRUD)することができます。
Entityの作成
ReactiveWebのModuleを開くと右側にタブが4つ並んでいます。
このうち一番右側にDataというグリッド状のアイコンのタブを選択します。
開いたツリーから「Entity>Database」を開き、この中にEntityを作成していきます。
「Database」を右クリックし、「Add Entity」で新しくEntityを作成します。新しくEntityが作成されるので、「Name」にEntity名を入力します。Descriptionの欄にはコメントとして何を管理するEntityなのかを記載しておくとよいです。ここでは従業員として発議者と承認者を含むMemberというEntityを作成します。
同様に、稟議のEntityとして「Approval」を作成します。
Attributeの作成
作成したEntityを右クリックし、「Add Entity Attribute」をクリックします。
新しくAttributeが追加されるので、Memberに必要な情報を追加していきます。
ここでは従業員の氏名、承認者か、という情報を追加します。
従業員の氏名は「Name」とします。文字列型24桁で、必須項目とします。
Data Typeには文字列、整数、真偽値等様々なものがあります。
桁数と合わせて適切に設定します。
Entityリレーションの設定
稟議のEntity「Approval」には、発議者と承認者の情報を持たせる必要があります。この二つの情報は「Member」Entityのリレーションとして設定します。「Basic Type」ではなく「Entity Identifers」から別EntityのIdentiferを選択することにより設定することができます。これで稟議の発議者を「Menber」Entityと紐づけることができます。
Entity Diagramの作成
DataModelを開き、EntityをドロップするとEntity Diagramを作成することができます。視覚的にわかりやすく、開発の助けになるため作成しておくと便利です。
今回作成したEntity
DataModel
Approval
Name | Description | Data Type | Is Mandatory | 補足 |
---|---|---|---|---|
Id | 稟議を一意に管理するID | Long Integer(AutoIncriment) | Yes | |
RequestedBy | 発議者のMemberID | Member Identifier | Yes | 発議した時に登録 |
ApprovedBy | 発議者のMemberID | Member Identifier | No | 承認・否認したときに登録 |
Content | 稟議内容 | Text(200) | Yes | |
File | 添付ファイル | Binary | No | 添付ファイル |
FileName | 添付ファイル名 | Text(50) | No | 添付ファイル |
Response | 承認結果 | Boolean | No | 承認の場合True、否認の場合False |
Comment | 承認コメント | Text(100) | No | |
RequestAt | 発議日時 | DateTime | Yes | 発議したときに登録 |
ApproveAt | 承認日時 | DateTime | No | 承認・否認したときに登録 |
Member
Name | Description | Data Type | Is Mandatory | 補足 |
---|---|---|---|---|
Id | メンバーを一意に管理するID | Long Integer(AutoIncriment) | Yes | |
IsManager | 管理者かどうか | Boolean | Yes | 管理者であれば承認が可能 |
User | OutSystemsのUserEntityと対応するID | User Identifier | Yes | OutSystemsのユーザからユーザ名などを取得する |