5分鐘接入釘釘工作流之模板配置、釘釘介面流程發起

福祿網路技術團隊發表於2020-09-27

一、前言

自從上次 水了一篇 寫了一篇5分鐘快速接入釘釘實現考勤後過了1個多月的時間,我福樂裡又和大家見面了,今天我來聊聊工作流的那些事。

20200922181331

想必各位攻城獅都做過或者接觸過OA系統,說到OA系統肯定離不開一個技術話題,那就是工作流~實現的手段五花八門,有公司內部自己獨立研發、有結合其他三方外掛然後編寫業務程式碼實現的、也有直接採購工作流產品的。那我們今天就來聊下釘釘工作流和如何快速接入。我們分為下面幾個步驟來逐步講解。

1.為什麼選擇釘釘工作流?

2.釘釘工作流的優缺點有哪些?

3.我們如何對接進行實現?

二、為什麼選擇釘釘工作流

這裡就不做長篇描述了,既然你與我能夠在這裡相見,那就說明你在做技術方案的時候也進行了初步篩選,我們選釘釘的想法很簡單,有這樣一套產品,又有開放平臺文件對接,有釘釘的團隊不斷的版本升級迭代,而我們又不想重複造輪子所以就選擇了相對來說大廠的產品,公司的企業溝通也使用的是釘釘,自帶移動端優勢,所以就選擇了釘釘工作流

三、釘釘工作流的優缺點有哪些?

優點:

1.統一使用者體驗。

以前:列如OA系統是有很多業務介面的,不同的流程,使用者是需要挑戰到系統的不同介面的,使用者是需要熟悉每個介面和流程的
現在:統一使用釘釘智慧工作流,審批處理流程體驗一致
20200922181502
2.提升辦公效率
以前:如果企業內部有多個系統,而多個系統中都用到了工作流,則到了審批環節時,都需要審批人進入多個系統進行流程審批,操作畢竟繁瑣,且非常容易遺漏,有的系統甚至是沒有移動端的,導致審批人進行審批的難度加大
現在: 在釘釘工作臺待辦統一入口,直觀檢視所有企業待處理事項
20200922181523
3.對於開發者價值
1.無需關注工作流事項內部流程狀態同步過程,只需關注產品業務場景,還可以節省企業開發成本
2.自帶移動端,讓審批人無需用電腦登入即可一秒審批
說了這麼多優點,那沒缺點嗎?答案肯定是否定的,缺點肯定有,在我們使用的過程中總結了如下幾點
1.審批的流程節點比較死板,必須發起的時候就要計算全部的流程步驟,中途是不能通過介面進行改變流程的
2.表單因為是釘釘自帶,所以如果你想在釘釘上填寫表單發起流程的話難度大,因為不能資料聯動以及資料關聯,所以複雜的表單還是在自己系統發起,釘釘上只做展示
四、我們如何對接進行實現?

20200922181544
首先有2兩種方式,方式一為指定審批人,方式二為複用釘釘審批後臺設定的審批流程。 這裡我講下指定審批人的方式。
1.開啟審批管理後臺,地址: https://aflow.dingtalk.com/dingtalk/web/query/dashboard?dinghash=aflowSetting#/aflowSetting
2.建立流程表單:
20200922181607
然後填寫表單的基礎設定,這裡我直接填測試流程
20200922181658
然後進行釘釘表單的配置,隨便配了2個文字框,如下
20200922181716
流程設計這裡不用管,因為這裡我用的是直接指定審批人的方式(通過介面傳審批人列表)
3.第三步開始擼程式碼,先引用釘釘審批sdk,下載地址如下:
C#:https://open-dev.dingtalk.com/download/openSDK/cshap
JAVA:https://open-dev.dingtalk.com/download/openSDK/java
PHP:https://open-dev.dingtalk.com/download/openSDK/php
直接上發起的示例程式碼:

OapiProcessinstanceCreateRequest request = new OapiProcessinstanceCreateRequest
 {
 ProcessCode = "PROC-0DAD7345-5F92-42D7-A306-D22ABC13D2DA",//剛才建立的表單模板id
 OriginatorUserId = "XXX",//發起人釘釘id
 DeptId = Convert.ToInt64("xxx"),//發起人部門id
 Approvers = "XXX,XX",//多個審批人用逗號分隔,按傳入的順序依次審批 
 CcList = "XX,XX",//抄送人列表
 CcPosition = "START_FINISH",//開始和結束都提醒抄送人 
 };
 //表單集合
 List<OapiProcessinstanceCreateRequest.FormComponentValueVoDomain> list = new List<OapiProcessinstanceCreateRequest.FormComponentValueVoDomain>();
 //表單內容
 list.Add(new OapiProcessinstanceCreateRequest.FormComponentValueVoDomain() { Name = "標題", Value = "這是一個標題"});
 list.Add(new OapiProcessinstanceCreateRequest.FormComponentValueVoDomain() { Name = "內容", Value = "這是一個內容" });
 request.FormComponentValues_ = list;
 //呼叫釘釘介面
 var _client = new DefaultDingTalkClient("https://oapi.dingtalk.com/topapi/processinstance/create");
 var appToken = (await _dingtalkService.GetDingToken()).Access_token;
 var result= _client.Execute(request, appToken);

好了,我們的流程就發起成功了,如下圖:
20200922182231
文章的最後,順帶分享下幾個踩坑問題
1.釘釘上表單配置控制元件。如果通過介面發起時沒傳 則報錯
2.表單模板id需要url上取,沒有直觀的地方展示
3.釘釘配置的表單標題名稱不能有空格,有空格則報錯
下期預告:打造釘釘分發平臺,實現審批事件回寫和通訊錄事件回寫

福祿ICH·ERP專案部 福樂裡

相關文章