無料のOSSツールSysONで始めるSysMLv2モデリング(5)〜 Actionの作成

| 4 min read
Author: yasumasa-takahashi yasumasa-takahashiの画像

これまでの記事では、Part Definitionと Part Usage、Packageの作成をご紹介しました。

本記事から振る舞いのモデリングを行います。

執筆時点における SysONの安定版は v2025.12.0が最新ですが、本記事では引き続き v2025.8.0を使用します。
ざっとドキュメントを見る限りでは、v2025.8.0と v2025.12.0の間に大きな機能追加はなさそうです。
ただし、今後を含めた最新リリースの挙動は一部異なる可能性がありますのでご了承ください。

Parameterを持つAction Definitionを作成する

#

"Intro to the SysML v2 Language-Graphical Notation.pdf" スライド50の図を作成してみましょう。

General Viewを開き、エディタ画面を右クリックでしてンテキストメニューから"Behavior" > "New Action Definition"を選択します。

New Action Definition

作成した Action Definitionの名前を"ProvidePower"に変更しましょう。
変更方法は以前の記事を参照してください。

次にParameterを追加します。

"ProvidePower"を右クリックしてコンテキストメニューから"Structure" > "New Item In"を選択します。

New Item In

追加された Itemを"pwrCmd : PwrCmd"に変更します。
このとき、左サイドバーのツリーに"PwrCmd"が追加されたことに着目してください。
これは、"pwrCmd"のItem Definitionです。
ツリーにある"PwrCmd"をエディタ画面にドラッグ&ドロップしたら"pwrCmd"との間に definitionが表示されます。

再び "ProvidePower"を選択し、名前の右にマウスカーソルを移動すると表示される目のアイコンをクリックします。
表示された"Manage Visibility"のコンテキストメニューで、"parameters"のチェックをON、"pwrCmd : PwrCmd"のチェックをOFFにします。

pwrCmdのitemを(モデルではなく)図から削除します。

同様の方法で、"torque : Torque"を追加しましょう。
”pwrCmd : PwrCmd”の場合と同様、左サイドバーのツリーに"Torque"が追加されます。

Parameterのin, out, inout, noneは、右サイドバーのDetailsにある"Direction"のラジオボタンで変更できます。

題材は"torque"が配列になっています。
"torque : Torque"を"torque[*] : Torque"に変更してください。
右サイドバーのツリーの"torque"に"LiteralInfinity"の入った"MultiplicityRange"が追加されます。

題材では"torque : Torque [*]"となっていますが、v2025.8.0のSysONではこの表記だと多重度が無視されてしまいました。

Action DefinitionからAction Usageを作成する

#

エディタ画面を右クリックでコンテキストメニューから"Behavior" > "New Action"を選択します。
作成した Action Usageの名前を"providePower"に変更しましょう。

"providePower"を選択し、要素4辺の外側に表示された">"を"ProvidePower"までドラッグ&ドロップします。
表示されたコンテキストメニューから"New Feature Typing"を選択します。

Action DefinitionにParameterを追加したのと同様にして、Action Usageである"providePower"にもItemを追加します。

"Manage Visibility"で"item1In"を非表示にし、"item1In"を"fuelCmd : FuelCmd :>> pwrCmd"に変更します。

見た目にはいくつか差異がありますが、意味的には同じものが出来ました。

Action UsageのDecomposition

#

"Intro to the SysML v2 Language-Graphical Notation.pdf" スライド51の図を作成してみましょう。

4つのAction Usage("generateTorque", "amplifyTorque", "distributeTorque", "transferTorque")を作成します。

Action Usageの Decompositionはエディタ画面で作図できませんでした。
(今後はできるようになるかもしれません)

左サイドバーのツリーで先程作成した4つのAction Usageを選択し、"providePower"にドラッグ&ドロップします。
すると、ドラッグ&ドロップした4つのAction Usageと"providePower"間にDecompositionが表示されます。

referenceにしたい場合は、対象のAction Usageを選択します。
右サイドバーで"Advance"タグを選択し、"Is Composite"のチェックをOFFにします。
対象のAction Usageのステレオタイプが"action"から"ref action"に変わり、"providePower"側の黒塗りひし形が白塗りに変わります。

Action DefinitionとAction UsageのDecompsition

#

SysMLv2仕様では、Action UsageをAction Definitionの部品とすることも出来ます。

先程のスライド51の図の、"providePower"をAction Definitionである"ProvidePower"に変更してみましょう。

左サイドバーのツリーにある"ProvidePower"をエディタ画面にドラッグ&ドロップします。
次に、左サイドバーのツリーで"provodePower"内にあった4つのAction Usageを"ProvidePower"に移動します。
"Manage Visibility"でポートをダイアグラムから削除すると下図のようになります。

SysON起動時にエラーした場合の対応

#

これまで何度か SysONの起動と終了を繰り返してきました。
その中で、SysON起動時にエラーが発生して起動しないケースが偶に発生します。
こんな時は以下のコマンドでDockerの使われていないリソースを削除してみてください。

docker system prune

削除後に再度 Dockerで SysONを起動します。

次回予告

#

本記事では、Action Definitionと Action Usageを作成しました。
また、Decompositionで Actionを分割することをモデルで表現しました。

次回は、Action Usageをつなげて Action Flowを作成します。

豆蔵では共に高め合う仲間を募集しています!

recruit

具体的な採用情報はこちらからご覧いただけます。