当前位置: 首页 > news >正文

基于 Java 调用泛微 OA WebService 创建表单流程

基于 Java 调用泛微 OA WebService 创建流程并打包 Maven 项目

1. 背景说明

在企业信息化系统中,常常需要通过外部系统(如 ERP、MES、WMS 等)向泛微 OA 提交流程。
泛微 OA 提供了 WebService 接口(WorkflowService),我们可以基于 WSDL 生成客户端代码,通过 Java 程序完成流程的自动创建与提交。

泛微在线文档:https://e-cloudstore.com/doc.html

为了方便后续复用与集成,这里将整个功能封装为 Maven 项目,并打包成可执行 JAR 包。


2. 准备工作

  • 泛微 OA 系统地址:

    http://your_api/services/WorkflowService
    
  • 已知流程 ID(workflowId)示例:200001

  • 流程表单:

    • 主表:formtable_main_1
    • 明细表:formtable_main_1_dt1
  • 提交流程的用户 ID:

    • creatorId = 实际ID

3. 项目结构

使用 Maven 进行管理,整体结构如下:

e9-oa-integration/
├── pom.xml
├── src
│   ├── main
│   │   ├── java
│   │   │   └── com
│   │   │       └── text
│   │   │           ├── App.java
│   │   │           ├── OAWorkflowClient.java
│   │   │           └── ws   ← WebService 生成的客户端代码
│   │   └── resources
│   │       └── application.properties
└── target

4. 使用 CXF 生成客户端代码

pom.xml 中加入插件:

<build><plugins><plugin><groupId>org.apache.cxf</groupId><artifactId>cxf-codegen-plugin</artifactId><version>3.5.5</version><executions><execution><id>generate-sources</id><phase>generate-sources</phase><configuration><sourceRoot>${project.basedir}/src/main/java</sourceRoot><wsdlOptions><wsdlOption><wsdl>http://your_api/services/WorkflowService?wsdl</wsdl><extraargs><extraarg>-p</extraarg><extraarg>com.text.e9OA.ws</extraarg><extraarg>-frontend</extraarg><extraarg>jaxws21</extraarg><extraarg>-xjc-XautoNameResolution</extraarg></extraargs></wsdlOption></wsdlOptions></configuration><goals><goal>wsdl2java</goal></goals></execution></executions></plugin></plugins>
</build>

执行:

mvn clean compile

会在 com.text.e9OA.ws 包下生成 WorkflowService 客户端代码。


5. 编写调用工具类

com.text.OAWorkflowClient.java 中:

package com.text;import com.text.e9OA.ws.*;
import javax.xml.ws.BindingProvider;
import java.util.HashMap;
import java.util.Map;public class OAWorkflowClient {private static final String SERVICE_URL = "http://your_api/services/WorkflowService";public static int createWorkflow(int creatorId, int workflowId, String requestTitle) throws Exception {WorkflowService service = new WorkflowService();WorkflowServicePortType port = service.getWorkflowServiceHttpPort();Map<String, Object> ctx = ((BindingProvider) port).getRequestContext();ctx.put(BindingProvider.ENDPOINT_ADDRESS_PROPERTY, SERVICE_URL);WorkflowRequestInfo info = new WorkflowRequestInfo();info.setCreatorId(String.valueOf(creatorId));info.setWorkflowBaseInfo(new WorkflowBaseInfo());info.getWorkflowBaseInfo().setWorkflowId(String.valueOf(workflowId));info.setRequestLevel("0");info.setRequestName(requestTitle);// 设置主表数据WorkflowMainTableInfo mainTable = new WorkflowMainTableInfo();WorkflowRequestTableRecord[] records = new WorkflowRequestTableRecord[1];WorkflowRequestTableField[] fields = new WorkflowRequestTableField[1];WorkflowRequestTableField f1 = new WorkflowRequestTableField();f1.setFieldName("orderNo");f1.setFieldValue("PO20250820001");f1.setView(true);f1.setEdit(true);fields[0] = f1;WorkflowRequestTableRecord record = new WorkflowRequestTableRecord();record.setWorkflowRequestTableFields(fields);records[0] = record;mainTable.setRequestRecords(records);info.setWorkflowMainTableInfo(mainTable);int requestId = port.doCreateWorkflowRequest(info, Integer.parseInt(info.getCreatorId()));return requestId;}
}

6. 编写入口类

com.text.App.java

package com.text;public class App {public static void main(String[] args) throws Exception {int requestId = OAWorkflowClient.createWorkflow(11291,215021,"测试流程-2025-08-20");System.out.println("流程创建成功,RequestId = " + requestId);}
}

7. 打包运行

执行:

mvn clean package

会在 target/ 下生成 e9-oa-integration-1.0-SNAPSHOT.jar

运行:

java -jar target/e9-oa-integration-1.0-SNAPSHOT.jar

输出示例:

流程创建成功,RequestId = 50321

8. 总结

本文通过以下步骤实现了 Java 调用泛微 OA WebService 创建流程

  1. 配置 Maven 项目并引入 CXF 插件
  2. 基于 WSDL 生成客户端代码
  3. 封装流程提交工具类 OAWorkflowClient
  4. 编写入口类 App 测试提交
  5. 打包成可运行 JAR,便于外部系统集成

这样即可通过命令行或集成在其他系统中,自动提交 OA 流程。

http://www.dtcms.com/a/341264.html

相关文章:

  • 如何保障内部网络安全前提下,实现与外部互联网之间的文件传输?
  • 一种融合AI与OCR的施工许可证识别技术,提升工程监管效率,实现自动化、精准化处理。
  • 【CUDA编程】CUDA编程入门第一课
  • QT聊天项目DAY20
  • 【unitrix数间混合计算】3.3 无符号整数标记trait(bin_unsigned.rs)
  • C++:仿函数部分的补充、模版进阶(非类型模版参数、模板的特化、模板的分离编译)
  • 1277. 统计全为 1 的正方形子矩阵
  • 含钼溶液中回收钼
  • 【Windows】Windows平台基于加速地址安装vcpkg并集成到Visual Studio 2017
  • MySQL 50 道经典练习题及答案
  • 使用Jmeter轻松实现AES加密测试
  • 国电南自面试记录
  • 细说数仓中不同类型的维度
  • 实时交互世界模型新标杆! Skywork AI 发布 Matrix-Game 2.0: 攻克实时交互难题,在实时性与视频生成质量上实现跨越式突破!
  • synchronized锁,ReentrantLock 锁
  • 基于隐函数定理的偏导数计算及其C++实现
  • 批处理指令常见问题
  • 基于langchain重现agent调用llm和tools的过程
  • Angular入门教程
  • VG技术下,美术在资源制作时的规范
  • 前端 下载后端返回的二进制excel数据
  • Java集合框架:Set、List、Map及HashMap底层实现详解
  • 在Excel和WPS表格中制作可打印的九九乘法表
  • Flask高效数据库操作指南
  • Qt音乐播放器项目实践:本地持久化与边角问题处理
  • 对象存储 COS 端到端质量系列——终端 COS SDK 网络优化
  • 开发中使用——鸿蒙特有的图片保存到相册的方式
  • 气泡水位计在水库大坝安全监测中的应用
  • 大语言模型研究进展
  • 【MAR】OSCNet+学习笔记