# 泛微开发示例 **Repository Path**: bueryouth/weaver-case ## Basic Information - **Project Name**: 泛微开发示例 - **Description**: 泛微(E9)开发常用代码示例集合 - **Primary Language**: Unknown - **License**: MIT - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 1 - **Forks**: 0 - **Created**: 2026-07-13 - **Last Updated**: 2026-07-26 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # weaver-case 泛微(E9)开发常用代码示例集合。 ## 模块一览 | 模块 | 包路径 | 说明 | 技术要点 | |------|--------|------|----------| | `api-token` | `com.weaver.demo.api` | API Token 认证流程 | RSA 非对称加密、注册公钥、申请 token,e9后端接口 | | `sso-case` | `com.weaver.demo.sso` | 单点登录(SSO) | JAX-RS、OkHttp、Token 重定向 | | `workflow-create` | `com.weaver.demo.workflow` | 创建流程请求 | Hutool Http、RSA 加密、表单提交 | | `workflow-action` | `com.weaver.demo.action` | 流程 Action 自定义接口 | 主表/明细读取、流转控制 | | `workflow-api-proxy` | `com.weaver.demo.proxy` | 流程操作代理与接口拦截 | CommandDynamicProxy、@WeaReplaceAfter | | `backend-api-dev` | `com.weaver.demo.api.dev` | REST API 开发最佳实践 | 统一返回体、参数校验、异常处理 | --- ## 模块详情 ### api-token API 接口调用前的 Token 认证流程: - 注册客户端 RSA 公钥,获取系统公钥(`spk`)和密钥(`secrit`) - 使用系统公钥加密密钥,申请访问 Token ### sso-case 第三方系统单点登录到泛微 OA 的 REST 接口: - 接收 `loginid` 参数,调用 `/ssologin/getToken` 获取 ssoToken - 重定向到 OA 门户首页 ### create-workflow 通过 REST API 创建流程请求: - 注册与认证(获取 Token) - RSA 加密用户 ID - 构造主表/明细表表单数据 - 调用 `/api/workflow/paService/doCreateRequest` 提交流程 扩展:`CreateWorkflowByBackendDemo` 演示后端使用 `RequestOperateBiz` 直接创建流程(含多明细表构建) ### workflow-action 自定义流程 Action 接口: | 文件 | 说明 | |------|------| | `WFVisitorAction` | 节点提交后 HTTP 请求通知外部系统更新状态 | | `DevWorkflowAction` | 主表/明细读取、RequestManager 使用、错误信息控制流转 | | `WorkflowUtil` | 获取主表字段、明细表字段的工具方法封装 | | `CustomOperatorAction` | 实现 `OperatorAction` 接口动态指定审批人 | | `TestOrderAction1/2` | 验证 Action 按配置顺序同步执行 | | `AutoFlowAction` | 自动流转 Action 示例框架 | | `WorkflowActionWaitNextNodeHelper` | 等待流程到达指定节点的工具类 | ### workflow-api-proxy 流程操作 cmd 代理与 API 接口拦截: | 文件 | 代理目标 / 场景 | |------|----------------| | `SubmitProxy` | `FlowNextCmd` — 流程提交时执行额外逻辑 | | `RejectProxy` | `RequestSubmitCmd` — 退回/删除时拦截 | | `DetailImportProxy` | `RequestDetailImportCmd` — 明细导入后联动 | | `ForceArchiveProxy` | `FunctionManageCmd` — 强制归档代理 | | `ApiInterceptDemo` | `@WeaReplaceBefore` / `@WeaReplaceAfter` 接口拦截 | | `TodoTableIntercept` | 待办列表添加创建人部门列 | | `DocBrowserIntercept` | 文档浏览框 SQL 过滤 | ### backend-api-dev E9 REST API 开发最佳实践: | 文件 | 说明 | |------|------| | `TestApi` / `TestAction` | 暴露类 + 核心业务类标准分层 | | `OpenApiResult` | 泛型统一返回体 | | `WebExceptionHandler` | 统一异常处理 | | `ParamValidationUtils` | Bean Validation 手动参数校验 | | `WebFileDownloadUtil` | 接口文件下载工具 | | `UserParam` / `UserResult` | 参数/结果对象示例(含校验注解) | | `TestService` / `TestServiceImpl` | Service 接口与实现 | | `TestCmd` | Command 业务执行类 | ## 构建方式 项目使用 Maven **父 POM** 统一管理依赖版本和插件配置。所有子模块继承自根目录 `pom.xml`。 ```bash # 一次性构建所有模块 mvn clean install # 构建指定模块 mvn clean install -pl api-token # 在子模块目录内单独构建(同样支持) cd api-token mvn clean install ``` ## 快速开始 1. **导入项目** — 在 IntelliJ IDEA 中 `File → Open` 选择项目根目录 2. **修改配置** — 根据注释替换 OA 地址、appid、密钥等演示数据 3. **运行** — 执行各模块的 `main` 方法或 JUnit 测试 > 提示:`api-token`、`sso-case`、`workflow-create` 有完整 Maven 依赖,可直接编译运行。 > `workflow-action`、`workflow-api-proxy`、`backend-api-dev` 需在 E9 OA 运行环境中部署使用。