設定欄位屬性
參數設定包含簽核、條件、欄位計算、主旨、匯出與搜尋條件。
最早可設定的生命週期時間點為ngOnInit()
,透過繼承底層BpmFwPropsComponent
後所提供的initPluginSettings
來完成。
簽核站點¶
設定需要提供基礎的資訊,包含顯示名稱與jsonPath
,jsonPath
的用途為對應到欄位的資料結構,舉例來說,欄位中的職務代理人值存為value
下的agent
屬性,並使用agent
做為簽核站點,設定範例如下:
設定完成後就能在設定流程時看到「來自外掛欄位」中出現該設定。
條件站點¶
若需要設定條件站點,則需要多提供type
參數,因為設定條件時,會依照參考的目標值類型不同而有不同的條件選項,範例如下:
ngOnInit() {
this.initPluginSettings({
toBeConditions: { name: '類別名稱', jsonPath: 'categoryName', type: 'Text' }
});
}
type
總共有 4 種類型可以提供,分別為Text
(文字)、Numeric
(數值)、Department
(部門)、Employee
(人員)。
欄位計算¶
這項設定是為了讓 UOF X 提供的標準欄位「欄位計算」可以選取到外掛欄位的value
。
比如說我們需要將總金額total
在欄位計算中可以被設定選取作為運算中的變數,那麼就需要在initPluginSettings
也同時設定toBeCalculates
參數。
表單主旨¶
比如需要將總金額total
在欄位計算中可以被設定選取作為運算中的變數,那麼就需要在initPluginSettings
也同時設定toBeSubjects
參數。
前述有提到,可以設定隱藏欄位作為可用參數設定,我們就可以在write
的元件中設定value.dateRange
為特殊組合,結合開始日期和結束日期,顯示的結果可能類似於2023/06/08 9:00~2023/06/08 18:00
。
form: FormGroup;
constructor(private fb: FormBuilder) {
this.form = this.fb.group({dateRange});
}
onDateChange() {
// Get start date and end date...
this.form.get('dateRange').setValue(...);
}
並在props
元件中透過initPluginSettings
設定。
表單匯出¶
由於value
本身為巢狀結構,而 Excel 檔案為表格形式,須將所需匯出的資料攤平,轉成一般的文字或數值。
比如說我們需要將總金額total
在欄位計算中可以被設定選取作為運算中的變數,那麼就需要在initPluginSettings
也同時設定toBeExports
參數。
Note
可用的匯出參數設定與表單主旨一樣可以做成隱藏欄位唷!
表單搜尋條件¶
設定表單搜尋條件,可在使用者端的「表單查詢」中作為指定欄位內容被查詢,範例為設定查詢品項名稱productName
。
設定參數的建議方式¶
建議在ngOnInit
的時間點做設定,並且判定exProps
屬性還未被設定的狀態,這樣當props component
每次被初始化的時候才不會重複一直執行。
Warning
但這種設計方式必須注意,當initPluginSettings
有變更參數時,由於exProps
已經有值,所以不會重新被初始化,這樣的寫法若需要重新初始化,需要將欄位重新拖入表單畫布中,等於是重新新增一次該欄位。
ngOnInit() {
this.initExProps();
}
initExProps() {
if (!this.exProps) {
// ...
this.initPluginSettings({
toBeConditions:[...],
toBeNodes: [...]
});
} else {
// ...
}
}
Note
所有參數是可以一起在initPluginSettings
中同時設定的唷!
Note
在設定欄位可用參數時,除了可以存取自訂的可見欄位值,也可將所需要的值設定成隱藏狀態,就是實際上value
會存,但是在申請或簽核時不可見。