5分鍾接入釘釘工作流之模板配置、釘釘接口流程發起


一、前言

自從上次 水了一篇 寫了一篇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項目部 福樂里


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM