跳轉到

設定欄位屬性

參數設定包含簽核、條件、欄位計算、主旨、匯出與搜尋條件。

最早可設定的生命週期時間點為ngOnInit(),透過繼承底層BpmFwPropsComponent後所提供的initPluginSettings來完成。

簽核站點

設定需要提供基礎的資訊,包含顯示名稱與jsonPathjsonPath的用途為對應到欄位的資料結構,舉例來說,欄位中的職務代理人值存為value下的agent屬性,並使用agent做為簽核站點,設定範例如下:

ngOnInit() {
  this.initPluginSettings({
    toBeNodes: { name: '職務代理人', jsonPath: 'agent'}
  });
}

設定完成後就能在設定流程時看到「來自外掛欄位」中出現該設定。

條件站點

若需要設定條件站點,則需要多提供type參數,因為設定條件時,會依照參考的目標值類型不同而有不同的條件選項,範例如下:

ngOnInit() {
  this.initPluginSettings({
    toBeConditions: { name: '類別名稱', jsonPath: 'categoryName', type: 'Text' }
  });
}

type總共有 4 種類型可以提供,分別為Text(文字)、Numeric(數值)、Department(部門)、Employee(人員)。

欄位計算

這項設定是為了讓 UOF X 提供的標準欄位「欄位計算」可以選取到外掛欄位的value

比如說我們需要將總金額total在欄位計算中可以被設定選取作為運算中的變數,那麼就需要在initPluginSettings也同時設定toBeCalculates參數。

this.initPluginSettings({
  toBeCalculates: { name: '總金額', jsonPath: 'total'},
  ...
});

表單主旨

比如需要將總金額total在欄位計算中可以被設定選取作為運算中的變數,那麼就需要在initPluginSettings也同時設定toBeSubjects參數。

this.initPluginSettings({
  toBeSubjects: { name: '總金額', jsonPath: 'total'},
  ...
});

前述有提到,可以設定隱藏欄位作為可用參數設定,我們就可以在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設定。

this.initPluginSettings({
  toBeSubjects: { name: '日期區間', jsonPath: 'dateRange'},
  ...
});

表單匯出

由於value本身為巢狀結構,而 Excel 檔案為表格形式,須將所需匯出的資料攤平,轉成一般的文字或數值。

比如說我們需要將總金額total在欄位計算中可以被設定選取作為運算中的變數,那麼就需要在initPluginSettings也同時設定toBeExports參數。

this.initPluginSettings({
  toBeExports: { name: '總金額', jsonPath: 'total'},
  ...
});

Note

可用的匯出參數設定與表單主旨一樣可以做成隱藏欄位唷!

表單搜尋條件

設定表單搜尋條件,可在使用者端的「表單查詢」中作為指定欄位內容被查詢,範例為設定查詢品項名稱productName

this.initPluginSettings({
  searchContentJsonPath: 'productName'
});

設定參數的建議方式

建議在ngOnInit的時間點做設定,並且判定exProps屬性還未被設定的狀態,這樣當props component每次被初始化的時候才不會重複一直執行。

Warning

但這種設計方式必須注意,當initPluginSettings有變更參數時,由於exProps已經有值,所以不會重新被初始化,這樣的寫法若需要重新初始化,需要將欄位重新拖入表單畫布中,等於是重新新增一次該欄位。

ngOnInit() {
  this.initExProps();
}

initExProps() {
  if (!this.exProps) {
    // ...

    this.initPluginSettings({
      toBeConditions:[...],
      toBeNodes: [...]
    });
  } else {
    // ...
  }
}

Note

所有參數是可以一起在initPluginSettings中同時設定的唷!

Note

在設定欄位可用參數時,除了可以存取自訂的可見欄位值,也可將所需要的值設定成隱藏狀態,就是實際上value會存,但是在申請或簽核時不可見。