用Java代码实现存在工单系统A和任务执行系统B,用户在A系统提交的工单会上送到B系统进行执行,在B系统中,上报的工单会按队列的方式顺序执行且执行完成之后不会回调通知A系统执行结果,A系统可以获取结果

时间: 2024-03-26 13:40:25 浏览: 16
可以考虑使用消息队列来实现A系统和B系统之间的通信。具体实现方式如下: 1. 在A系统中,当用户提交工单时,将工单信息发送到消息队列中,消息队列可以选择使用Apache Kafka或RabbitMQ等。 2. 在B系统中,启动一个消费者进程,用于监听消息队列中的工单信息,当有新的工单信息到达时,消费者进程会将其取出并进行相应的任务执行。 3. 在B系统中,执行完工单之后,将工单执行结果保存到数据库中。 4. 在A系统中,当需要获取工单执行结果时,向B系统发送请求,B系统查询数据库并将结果返回给A系统。 示例Java代码如下: 在A系统中发送工单信息到消息队列: ```java import org.apache.kafka.clients.producer.KafkaProducer; import org.apache.kafka.clients.producer.ProducerRecord; import org.apache.kafka.common.serialization.StringSerializer; import java.util.Properties; public class WorkOrderProducer { public static void main(String[] args) { Properties props = new Properties(); props.put("bootstrap.servers", "localhost:9092"); props.put("key.serializer", StringSerializer.class.getName()); props.put("value.serializer", StringSerializer.class.getName()); KafkaProducer<String, String> producer = new KafkaProducer<>(props); String workOrder = "{\"id\":1, \"content\":\"这是一条工单信息\"}"; ProducerRecord<String, String> record = new ProducerRecord<>("work_order_topic", workOrder); producer.send(record); producer.close(); } } ``` 在B系统中监听消息队列并处理工单信息: ```java import org.apache.kafka.clients.consumer.*; import org.apache.kafka.common.serialization.StringDeserializer; import java.time.Duration; import java.util.Collections; import java.util.Properties; public class WorkOrderConsumer { public static void main(String[] args) { Properties props = new Properties(); props.put("bootstrap.servers", "localhost:9092"); props.put("group.id", "work_order_group"); props.put("key.deserializer", StringDeserializer.class.getName()); props.put("value.deserializer", StringDeserializer.class.getName()); KafkaConsumer<String, String> consumer = new KafkaConsumer<>(props); consumer.subscribe(Collections.singletonList("work_order_topic")); while (true) { ConsumerRecords<String, String> records = consumer.poll(Duration.ofMillis(100)); for (ConsumerRecord<String, String> record : records) { String workOrder = record.value(); // 处理工单信息 System.out.println("处理工单信息:" + workOrder); } } } } ``` 在B系统中执行工单并保存执行结果到数据库: ```java import java.sql.*; public class WorkOrderExecutor { public static void execute(String workOrder) { // 执行工单任务 System.out.println("执行工单任务:" + workOrder); // 保存工单执行结果到数据库 Connection conn = null; PreparedStatement stmt = null; try { conn = DriverManager.getConnection("jdbc:mysql://localhost:3306/work_order_db", "root", "123456"); stmt = conn.prepareStatement("INSERT INTO work_order_result (work_order_id, result) VALUES (?, ?)"); stmt.setInt(1, 1); stmt.setString(2, "工单执行成功"); stmt.executeUpdate(); } catch (SQLException e) { e.printStackTrace(); } finally { if (stmt != null) { try { stmt.close(); } catch (SQLException e) { e.printStackTrace(); } } if (conn != null) { try { conn.close(); } catch (SQLException e) { e.printStackTrace(); } } } } } ``` 在A系统中获取工单执行结果: ```java import java.sql.*; public class WorkOrderResultGetter { public static void main(String[] args) { // 获取工单执行结果 Connection conn = null; PreparedStatement stmt = null; ResultSet rs = null; try { conn = DriverManager.getConnection("jdbc:mysql://localhost:3306/work_order_db", "root", "123456"); stmt = conn.prepareStatement("SELECT result FROM work_order_result WHERE work_order_id = ?"); stmt.setInt(1, 1); rs = stmt.executeQuery(); while (rs.next()) { String result = rs.getString("result"); System.out.println("工单执行结果:" + result); } } catch (SQLException e) { e.printStackTrace(); } finally { if (rs != null) { try { rs.close(); } catch (SQLException e) { e.printStackTrace(); } } if (stmt != null) { try { stmt.close(); } catch (SQLException e) { e.printStackTrace(); } } if (conn != null) { try { conn.close(); } catch (SQLException e) { e.printStackTrace(); } } } } } ```

相关推荐

最新推荐

recommend-type

生产工单派报工系统的设计与实现

ERP系统在制造执行层级管理的颗粒度粗,无法满足...生产工单派报工系统作为ERP系统的外接定制开发系统,实现了制造执行系统的部分功能,加强了对生产执行计划的管控,细化了对生产管理的颗粒度,满足了公司的业务需求。
recommend-type

生产企业智能制造执行系统解决方案

生产企业智能制造执行系统解决方案,MES(Manufacturing Execution Systems),制造执行系统。位于上层的企业资源计划系统ERP与底层的工业过程控制系统PCS之间的面向厂(车间)级的管理信息系统。它以生产制造为核心,...
recommend-type

企业智能制造执行系统(MES)技术方案

企业智能制造执行系统(MES)技术方案,通过互联网等通信网络将工厂与工厂内外的事物和服务连接起来,创造前所未有的价值、构建新的商业模式的产官学一体的项目。“工业4.0”概念包含了由集中式控制向分散式增强型...
recommend-type

西北工业大学软件学院信号与系统实验第七章.docx

西北工业大学,软件学院,信号与系统实验,第七章,实验报告 7.1 由欠采样引起的混叠 基本题(a)(b)(c) 7.2 由样本重建信号 基本题(a)(b)(c)(d) 7.3 增采样和减采样 基本题(a)(b)(c) 7.4 带通...
recommend-type

安全可信工业控制系统构建方案

首先分析了工控系统特点、整体模型和控制流程,然后结合可信计算的思想,对工控系统的启动、组态和运行进行了安全加固,设计了静态度量、安全传输以及运行结果安全性验证。该体系可有效提高工控系统的安全防御能力。
recommend-type

zigbee-cluster-library-specification

最新的zigbee-cluster-library-specification说明文档。
recommend-type

管理建模和仿真的文件

管理Boualem Benatallah引用此版本:布阿利姆·贝纳塔拉。管理建模和仿真。约瑟夫-傅立叶大学-格勒诺布尔第一大学,1996年。法语。NNT:电话:00345357HAL ID:电话:00345357https://theses.hal.science/tel-003453572008年12月9日提交HAL是一个多学科的开放存取档案馆,用于存放和传播科学研究论文,无论它们是否被公开。论文可以来自法国或国外的教学和研究机构,也可以来自公共或私人研究中心。L’archive ouverte pluridisciplinaire
recommend-type

MATLAB柱状图在信号处理中的应用:可视化信号特征和频谱分析

![matlab画柱状图](https://img-blog.csdnimg.cn/3f32348f1c9c4481a6f5931993732f97.png) # 1. MATLAB柱状图概述** MATLAB柱状图是一种图形化工具,用于可视化数据中不同类别或组的分布情况。它通过绘制垂直条形来表示每个类别或组中的数据值。柱状图在信号处理中广泛用于可视化信号特征和进行频谱分析。 柱状图的优点在于其简单易懂,能够直观地展示数据分布。在信号处理中,柱状图可以帮助工程师识别信号中的模式、趋势和异常情况,从而为信号分析和处理提供有价值的见解。 # 2. 柱状图在信号处理中的应用 柱状图在信号处理
recommend-type

HSV转为RGB的计算公式

HSV (Hue, Saturation, Value) 和 RGB (Red, Green, Blue) 是两种表示颜色的方式。下面是将 HSV 转换为 RGB 的计算公式: 1. 将 HSV 中的 S 和 V 值除以 100,得到范围在 0~1 之间的值。 2. 计算色相 H 在 RGB 中的值。如果 H 的范围在 0~60 或者 300~360 之间,则 R = V,G = (H/60)×V,B = 0。如果 H 的范围在 60~120 之间,则 R = ((120-H)/60)×V,G = V,B = 0。如果 H 的范围在 120~180 之间,则 R = 0,G = V,B =
recommend-type

JSBSim Reference Manual

JSBSim参考手册,其中包含JSBSim简介,JSBSim配置文件xml的编写语法,编程手册以及一些应用实例等。其中有部分内容还没有写完,估计有生之年很难看到完整版了,但是内容还是很有参考价值的。