取得 API 起單檔案
flowchart LR
A(UOF X 站台) --> B(API 服務管理<br>取得金鑰)
A --> C(表單維護<br>建立表單) --> D(匯出 API 起單檔案<br>formschema.cs)
flowchart LR
A(GitHub下載範例) --> B(設定站台網址與金鑰)
A --> C(將 formschema.cs 加入專案) --> D(設定申請者) --> J(起單)
C --> F(填寫欄位資料)--> J
C --> G(附件<br>-非必要-)--> J
C --> H(Callback<br>-非必要-)--> J
要進行外部起單的第一件事,要先取得 API 起單檔案,在 UOF X 系統中,每個表單都有專屬的檔案,請先了解您要外部起單的單據是哪張,並先確認單據是否已經 發佈。沒有發佈的單據無法取得檔案,也無法接續後面的步驟。接下來,請使用具有 表單管理者
權限的帳號登入 UOF X
需要表單管理者權限
要取得 API 起單檔案,必須使用有 表單管理者
權限的帳號登入方能匯出
取得 API 起單檔案¶
登入 UOF X,從右上角的頭像切換為管理員,點選左邊選單的「工作流程」 > 「表單維護」
從類別、表單清單中找到要外部起單的表單,點選表單名稱旁的「齒輪」圖案,並點選「匯出API起單檔案」
稍等系統處理完後會出現彈跳視窗,請點選「點我下載」
下載後您會得到一個 zip 壓縮檔,壓縮檔內的 formSchema.cs
即是 API 起單檔案 了。
API 起單檔案內容是什麼¶
每個表單都有各別設計的欄位,且每個欄位有不同的輸入邏輯,這對程式開發人員而言,要在外部起單產生表單資料是一大難題。因此 UOF X 系統將表單內容轉成 C# 的類別 (class),讓開發人員可以無痛的匯入專案中使用,匯出檔案的基本結構如下:
namespace Ede.Uofx.FormSchema.UofxFormSchema
{
/// <summary>
/// 此為表單主體
/// </summary>
public partial class UofxFormSchema
{
//此表單的 ID,不可修改
public System.Guid FormId { get; set; } = new System.Guid("d268923c-0aa1-4b28-2847-08da07c64cd1");
public System.Guid ScriptId { get; set; } = new System.Guid("cb865bd0-76dc-4c63-5697-08db3afccb4f");
//此為外部起單需填寫的資訊
public string Account { get; set; }
public string CorpCode { get; set; }
...
//這是表單的欄位
public UofxFormSchemaFields Fields { get; set; } = new UofxFormSchemaFields();
}
public partial class UofxFormSchemaFields
{
/// <summary>
/// 請假日期 <==此為設計時的欄位說明,在匯出時會自動帶入
/// </summary>
public System.DateTimeOffset? C001 { get; set; }
/// <summary>
/// 請假原因
/// </summary>
public string C002 { get; set; }
...
}
}
在上面的範例中, class UofxFormSchema
是表單的主檔,裡面包含 ID、申請人、部門...等基本資訊,表單的所有欄位收在 class UofxFormSchemaFields
中,用表單設計時的欄位 code 當 class 屬性名稱,屬性 Type 也會依欄位而動態調整符合的型態。其餘可能還有 class FileItem
檔案物件、 enum UserSetItemType
組織類型選項...等,會依照表單的設計而動態產生。
解決 API 起單檔案名稱衝突問題¶
目前所有表單匯出的類別 (class) 名稱皆會是 UofxFormSchema
,如果您專案中需參考多張 API 起單檔案
,則會出現名稱衝突的問題,請打開匯出的檔案並修改 UofxFormSchema
為您想要的名稱。例如: 要將名稱修改為 MyFormSchema
:
namespace Ede.Uofx.FormSchema.MyFormSchema //<== 改這
{
/// <summary>
/// 此為表單主體
/// </summary>
public partial class MyFormSchema //<== 改這
{
...
//這是表單的欄位
public MyFormSchemaFields Fields { get; set; } = new MyFormSchemaFields(); //<== 改這
}
public partial class MyFormSchemaFields //<== 改這
{
...
}
}
未來將修正
計畫在未來的版本中將會優化調整此衝突問題
不要修改檔案其他內容
注意: 除了名稱調整之外,不應該手動修改 API 起單檔案的其他內容,如有更新需求,應該重新匯出取得最新的檔案。
我有問題¶
-
為什麼登入後在選單看不到工作流程?
因為登入的帳號不具有
表單管理者
權限 -
為什麼「匯出API起單檔案」選項反灰無法點選?
因為此表單尚未 發佈