makotan _at_ gmail dot com

ワークフロー

ワークフローとかワークフローエンジンとかって・・・的な話
メモ

ワークフローとは

ワークフローを端的に言うと仕事の流れ
その仕事の流れに従ったシステムを作りやすくするのがワークフローエンジン

ワークフローエンジンが実際にやってること

ワークフローに流す単位で状態の管理
ユーザアクションと次の状態の判断
ワークフローの中で指定された処理
この3つ以外の豊富な機能を持ったワークフローエンジンもある。
しかし、最低限この3つの機能はどのワークフローエンジンも持っている

ワークフローの単位

巨大なワークフローがいくつか存在していれば良いのか
細切れのワークフローがいくつも存在して連携すれば良いのか
細切れのワークフローを管理する大きなワークフローがあった方が良いのか
これは設計手法とかそういうのにも関係してきて確実な方法はない
ぶりでは細切れのワークフローを採用
理由はワークフローを設計・実装しやすいから
プログラミングと同じで巨大なものになればなるほど設計・実装は複雑になるので困難になる

ワークフローに流す単位で状態の管理

ぶりではこれを一つのデータと仮定して実装
他の方法も当然存在する
おそらくエンジンの実装者が一番頭を悩ませるところで確実な方法はない
ただし、設計手法と直結するところ

組み込み型と独立型

ワークフローエンジンをアプリケーションに組み込む場合
独立したワークフローエンジンがあってアプリケーションからはAPIを経由して利用する場合がある
ぶりは明確に組み込み型
独立も組み込みも可能なワークフローエンジンもある

難しいところ その1

設計手法
SIerがよく使う開発方法とワークフローエンジンは相性が悪い
ワークフローエンジンを使うならそれに合わせた手法を学習する必要がある

難しいところ その2

組み込む場合の実装方法
一般的なWebFrameworkやデータアクセス層もワークフローエンジンの利用を前提としたものはほぼ無い
そのため実装する場合に使った方が面倒なことになりやすい

メリット その1

プログラムの見通しが良い
プログラム中から状態の制御がなくなるので見通しが良くなる
たいていの場合、フローの定義はGUIで行うため状態遷移の見通しも良い

メリット その2

修正が簡単
ワークフローの修正が発生したとして
関係しない状態を対象としたプログラムやデータには影響がない

にゃっ

にゃっ、にゃにゃにゃっ
にゃにゃにゃにゃにゃっ