Openstack Mistral 工作流元件介紹
Mistrial是mirantis公司為openstack開發的工作流元件,提供WorkFlow as a service。 典型的使用者用例包括雲平臺的任務計劃服務(Cloud Cron),任務排程(Task Scheduling), 複雜的執行時間長的業務流程服務。目前專案還在開始階段。對應的是AWS的SWS(Simple WorkFlow Service)。
1. 基本術語
Workbook: 工作本,使用者的工作流介面,可以理解成一篇任務文件用來錄入使用者的工作流程,步驟,需要完成的任務。每個任務的執行順序,依賴關係,以及每個任務完成之後產生的事件。站在使用者的角度,這篇文件完整的記錄了某項任務的流程,讓執行者能夠清楚怎麼完成。站在開發人員的角度,為了方便程式設計。定義了一種新的語言DSL(下面會有介紹),用來描述整個工作流。
Task: 即工作流的具體步驟。可以是Action的集合。
Action: Mistral的最小單位。特指一個具體的工作,比如說傳送一個HTTP請求,或者執行某條命令。
Flow:工作流。 指的是Mistral系統中如何執行task,解析task的依賴關係等等,從而讓task順利結束,並返回狀態。
WorkFlow Execution: 工作流執行紀錄。就是指某次具體的Flow,每次執行task產成的WorkFlow Execution會永久儲存在資料庫中,方便後續查詢,或者重新執行Flow。
2. DSL 介紹
這是Mistral自定義的工作流定義語言。在業界,
3. 實戰
從Github下載最新的程式碼,安裝好執行環境。同時啟動API和executor服務
?1 2 |
tox -evenv -- python mistral /cmd/launch .py --server executor --config- file etc /mistral .conf
tox -evenv -- python mistral /cmd/launch .py --server api --config- file etc /mistral .conf
|
然後執行“scripts/upload_workbook_and_run.py” 指令碼,可以清楚看到整個流程。
?1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 |
[[email protected] mistral]$ python scripts /upload_workbook_and_run .py
Created workbook: Workbook [description= 'My test workbook' , name= 'my_workbook' , tags= '[u' test ']' ]
Uploaded workbook:
"
Services:
MyRest:
type : REST_API
parameters:
baseUrl: http: //localhost :8989 /v1/
actions:
my-action:
|