OpenMBEE MMS4の環境構築

# 概要
https://www.openmbee.org/
OpenMBEEを構成する主な3つのソフトウェア「Model Development Kits(MDK)」「Model Management System(MMS)」「View Editor(VE)」がある。
このうちMMSのバージョン3まではalfrescoのプラグインとして作られていたがバージョン4からは単体で動作するようになった。このため導入方法がバージョン3と異なる。
MMSバージョン4とそれを利用するMDK,VEの導入方法を解説する。

# 環境

## OpenMBEE
 - MMS 4.0.20
 - MDK 6.1.0
 - VE 5.0.0

## その他ソフトウェア
 - docker
 - java 17
 - postgresql 11
 - Elasticsearch 7.8.1
 - minio

## OS
 - AlmaLinux8
 このページの手順をそのまま利用可能
 - Ubuntu22.04
 dockerのインストールは別途行っておく
 適時sudoが必要

# Docker
導入にはDockerを使用するのでDockerの簡単な説明を記載する。

## Dockerのインストール
下記のブログを参考にしました。
https://blog.trippyboy.com/2021/docker/almalinux%E3%81%ABdocker%E7%92%B0%E5%A2%83%E3%82%92%E6%A7%8B%E7%AF%89%E3%81%99%E3%82%8B/

```
sudo dnf config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo
dnf erase podman buildah
dnf --allowerasing -y install docker-ce docker-ce-cli containerd.io
systemctl enable docker
systemctl start docker
docker info
docker run hello-world
docker rm $(docker ps -q -a)
```

## Dockerの簡単な説明

MMS4の構築で主に利用するdockerコマンド

 - docker create
コンテナを作成

 - docker start
コンテナを起動

 - docker run
createとstartを同時に行う

 - docker stop
コンテナを停止

 - docker rm
コンテナを削除

 - docker ps
起動中のコンテナ一覧を表示

 - docker ps -a
起動していないコンテナも表示

# JDK17のインストール

https://www.oracle.com/java/technologies/downloads/#java17

```
wget https://download.oracle.com/java/17/latest/jdk-17_linux-x64_bin.rpm
rpm -ivh jdk-17_linux-x64_bin.rpm
java -version
```

# MMS4のインストール
参照元
https://mms-reference-implementation.readthedocs.io/en/latest/docker.html

DockerのインストールとJDK17のインストールは済ませておく。


Postgresql 

```
docker run -d -e POSTGRES_PASSWORD=test1234 -e POSTGRES_USER=mmsuser -e POSTGRES_DB=mms -p 5432:5432 --name=postgres postgres:11-alpine
```

Elasticsearch

```
docker run -d -p 9200:9200 -p 9300:9300 -e "discovery.type=single-node" --name=elasticsearch docker.elastic.co/elasticsearch/elasticsearch:7.8.1
```

MinIO

```
docker run -d -p 9000:9000 -e "MINIO_ACCESS_KEY=admintest" -e "MINIO_SECRET_KEY=admintest" --name=minio minio/minio server /data
```

MMSコンテナをdocker create

```
docker create --name=mms --network="host" -e "SPRING_CONFIG_LOCATION=/mms.properties" openmbee/mms:4.0.20
```

設定ファイルの作成

```
vi application.properties.example
```

下記ページの内容をコピーして上記の設定ファイルに書き込む
https://github.com/Open-MBEE/mms/blob/develop/example/src/main/resources/application.properties.example

mms.admin.usernameは任意のユーザ名に変更。管理者のユーザ名となる。

```
mms.admin.username=test
```

mms.admin.passwordは任意のパスワードに変更。管理者パスワードとなる。

```
mms.admin.password=test
```

長い文字列に変更。exampleで書かれているデフォルト文字列では文字列長が不足

```
jwt.secret=test_test_test_test_test_12345677890_test_test_test
```

設定ファイルをコンテナ内へコピー

```
docker cp application.properties.example mms:/mms.properties
```

MMSを起動

```
docker start mms
```

postgres,elasticsearch,minio,mmsの4つのコンテナが起動していることを確認する。


下記コマンドで起動しているか確認

```
docker ps
```

# MMSの操作
## MMSの停止

```
docker stop mms
```

## 2回目以降のMMS起動方法

```
docker start postgres
docker start elasticsearch
docker start minio
docker start mms
```

## 起動確認
下記にアクセスできれば起動できている。
http://localhost:8080/v3/swagger-ui.html
http://[サーバアドレス]:8080/v3/swagger-ui.html

このページではAPIを発行できるのでMMSVersionを実行し、status:200とmmsのバージョンが返ってくるか確認する。

右上のAuthorizeをクリックし、usernameとpasswordを入力する。（設定ファイルに記載した管理者と管理者パスワード)
GETメソッドの/authenticationを実行する。
status:200が返ってくることを確認する。

## MMSのログ
docker logsで確認できる

```
docker logs mms
または
docker logs mms -f
```

-fはログが書き込まれたら逐次表示を更新する。「tail -f [ファイル名]」のようなもの。

# VEのインストール

https://github.com/Open-MBEE/exec-ve

```
git clone https://github.com/Open-MBEE/exec-ve.git
```

設定ファイルを変更しておく
```
cd exec-ve/config

vi example.json
localhostと記載された箇所をサーバアドレスに変更する。
```

dockerignoreを変更

```
vi .dockerignore

ファイルの末尾に以下を記載
!.eslintignore
```

docker imageの作成、dockerコンテナの作成と実行

```
docker build -t ve .
docker run -it -p 9001:9000 --name ve ve
```

上記設定で9001番ポートにアクセスするとveに接続できる。

### 起動確認

`http://サーバアドレス:9001`

### 2回目以降のVE起動

```
docker start ve
```


# MDKのインストール
MDKにはいろいろ種類があるがMagicdrawにプラグインとして導入するタイプを利用。
以前書いたものから手順は変わっていない。
バージョン5.0.0以上を入れること。
https://qiita.com/crimson707/items/296457ee64bc49237d5a

MDK6.1.0
https://github.com/Open-MBEE/mdk/releases/tag/6.1.0

旧バージョンと比べてOptions→Project→General→MBEEからMMSサーバを指定するよう変更されている。

MMS,MDK,VEのバージョン対応は下記を参照。
https://github.com/Open-MBEE/open-mbee.github.io/wiki/Compatibilities