---
# System prepended metadata

title: SMP Workflow Spec.

---

# SMP Workflow Spec. for MES Execution Rules

## 工作流程 Workflow

由一連串的功能塊組成，可以透過程式碼生成，也可以透過使用者介面將功能塊組成工作流程，組成的工作流程可以存在放永久層 (JSON, Database, ...etc.)，。

開始執行一個工作流程，可以傳入工作流程所需的參數 (第一個功能塊所需的參數，型態為 IDictionary<string, object>)。接續的功能塊接受傳入的參數要符合前一個功能塊的輸出才可組合。

提供全域變數的存取方式，讓功能塊可以存取。

### 工作流程資料

- ID: GUID 新增時自動產生，作為工作流程的唯一識別
- Name: 使用者輸入
- Description: 使用者輸入
- Version: 發布時自動產生
- Publish Date: 發布日期
- Activities: 組成工作流程的功能塊序列化後的字串

### 功能塊 (Function Block/Activity/Step)

功能執行的最小單位。系統提供預設的功能塊，使用者也可以自行客製化。

提供使用者設定屬性，其型別為基礎型別 (string, bool, int, float, ...etc.)

支援傳入參數 (功能塊執行時所需的資料)和輸出，輸出將作為下一個流程的輸入參數。

#### 預設的功能塊類別:

- 操作 BModule 功能
- Data Converter
- 流程控制
  - If/else
  - switch case with MatchMode(First/Any)
  - for loop

### 

### 執行階段

執行的工作流程可以被記錄，使用者可以查看工作流程執行的歷程。

### 版本控制

經由使用者組成一連串功能塊後的功能流程，會被儲存在永久層，需要發布後才能被執行，每次發布後會進版。使用者可以看到各個版本的修改歷程，恢復到指定版本的工作流程。

客製的功能塊/BModule 也會有版本的問題，在可以找到對應的組件下，應該也要可以恢復到指定版本。

功能項目:

- 發布 - 發布後的工作流程才能被執行
- 版本瀏覽 - 可以看到
- 退版

## 效能

執行的工作流程在建議環境下，在 CPU 使用率 40% 下，每秒要能夠處理 75個請求。

### 建議環境

- CPU: Intel Core i7-11850H @ 2.50GHz
- RAM: 32 GB
- Windows 10 / Internet Information Services 10


## Phase 2

### 暫停與恢復?

工作流程可以暫停等待事件再恢復。
