openlark_workflow/lib.rs
1//! # OpenLark 工作流模块
2//!
3//! OpenLark SDK 的工作流模块,提供飞书任务、审批和看板 API 的完整访问。
4//! Communication / Workflow helper 分层边界见 `docs/communication-workflow-helper-boundaries.md`。
5//!
6//! ## 功能特性
7//!
8//! - **任务管理**: 创建、更新、删除、查询待办事项
9//! - **审批流程**: 审批定义、审批实例管理,以及高频审批任务 helper
10//! - **看板管理**: 看板创建、任务卡片管理
11//! - **协作支持**: 添加执行者、关注者、提醒
12//! - **版本支持**: 支持 task v1/v2,以及 approval v4 helper 场景
13//!
14//! ## 使用示例
15//!
16//! ```rust,no_run
17//! use openlark_workflow::{
18//! ApprovalTaskAction, ApprovalTaskQuery, WorkflowService, WorkflowTaskListQuery,
19//! WorkflowTaskMutation,
20//! };
21//! use openlark_core::config::Config;
22//!
23//! # async fn example() -> Result<(), Box<dyn std::error::Error>> {
24//! let config = Config::builder()
25//! .app_id("your_app_id")
26//! .app_secret("your_app_secret")
27//! .build();
28//!
29//! let workflow_service = WorkflowService::new(config);
30//!
31//! // 列取任务清单中的任务
32//! let tasks = workflow_service
33//! .list_tasks_all(WorkflowTaskListQuery::for_tasklist("tasklist_guid"))
34//! .await?;
35//!
36//! // 更新任务
37//! let result = workflow_service
38//! .mutate_task(
39//! "task_guid",
40//! WorkflowTaskMutation::new()
41//! .summary("完成项目文档")
42//! .priority(3),
43//! )
44//! .await?;
45//!
46//! // 处理待审批任务
47//! let approval_tasks = workflow_service
48//! .query_approval_tasks(
49//! ApprovalTaskQuery::new("ou_example_user", "1")
50//! .user_id_type("open_id")
51//! .status("Todo"),
52//! )
53//! .await?;
54//! if let Some(task) = approval_tasks.first() {
55//! let _ = workflow_service
56//! .approve_task(
57//! ApprovalTaskAction::new(
58//! task.approval_code.clone(),
59//! task.instance_code.clone(),
60//! "ou_example_user",
61//! task.task_id.clone(),
62//! )
63//! .user_id_type("open_id")
64//! .comment("同意"),
65//! )
66//! .await?;
67//! }
68//! # Ok(())
69//! # }
70//! ```
71
72mod service;
73
74// 通用模块
75/// 工作流通用工具、端点与模型。
76pub mod common;
77
78// 版本模块
79#[cfg(feature = "v1")]
80/// 任务 v1 API 模块。
81pub mod v1;
82
83#[cfg(feature = "v2")]
84/// 任务 v2 API 模块。
85pub mod v2;
86
87// 看板模块
88#[cfg(feature = "board")]
89/// 白板/看板模块。
90pub mod board;
91
92// Prelude 模块
93/// 常用工作流类型预导出模块。
94pub mod prelude;
95
96// 重新导出核心服务
97pub use service::{
98 ApprovalTaskAction, ApprovalTaskQuery, WorkflowService, WorkflowTaskListQuery,
99 WorkflowTaskMutation,
100};
101
102/// 工作流模块版本信息
103pub const VERSION: &str = env!("CARGO_PKG_VERSION");
104
105#[cfg(test)]
106#[allow(unused_imports)]
107mod tests {
108 use crate::VERSION;
109
110 #[test]
111 fn test_version() {
112 assert_ne!(VERSION, "");
113 }
114}
115
116#[cfg(test)]
117mod service_tests {
118 use super::*;
119 use openlark_core::config::Config;
120
121 fn create_test_config() -> Config {
122 Config::builder()
123 .app_id("test_app")
124 .app_secret("test_secret")
125 .build()
126 }
127
128 #[test]
129 fn test_workflow_service_creation() {
130 let config = create_test_config();
131 let service = WorkflowService::new(config);
132 // Service created successfully
133 let _ = service;
134 }
135
136 #[test]
137 fn test_workflow_service_clone() {
138 let config = create_test_config();
139 let service = WorkflowService::new(config);
140 let _cloned = service.clone();
141 }
142
143 #[cfg(feature = "v1")]
144 #[test]
145 fn test_workflow_service_v1() {
146 let config = create_test_config();
147 let service = WorkflowService::new(config);
148 let _v1 = service.v1();
149 }
150
151 #[cfg(feature = "v2")]
152 #[test]
153 fn test_workflow_service_v2() {
154 let config = create_test_config();
155 let service = WorkflowService::new(config);
156 let _v2 = service.v2();
157 }
158
159 #[cfg(feature = "v2")]
160 #[test]
161 fn test_workflow_service_task() {
162 let config = create_test_config();
163 let service = WorkflowService::new(config);
164 let _task = service.task();
165 }
166
167 #[cfg(feature = "v2")]
168 #[test]
169 fn test_workflow_service_tasklist() {
170 let config = create_test_config();
171 let service = WorkflowService::new(config);
172 let _tasklist = service.tasklist();
173 }
174}