用Java代码实现存在工单系统A和任务执行系统B,用户在A系统提交的工单会上送到B系统进行执行,在B系统中,上报的工单会按队列的方式顺序执行且执行完成之后不会回调通知A系统执行结果
时间: 2024-03-25 22:36:47 浏览: 152
以下是Java代码的示例实现:
A系统发送工单到B系统:
```java
import java.io.IOException;
import java.net.HttpURLConnection;
import java.net.URL;
import java.nio.charset.StandardCharsets;
public class ASender {
public static void sendWorkOrderToBSystem(String workOrderJson) throws IOException {
String url = "http://BSystemIP:port/workorder";
URL obj = new URL(url);
HttpURLConnection con = (HttpURLConnection) obj.openConnection();
con.setRequestMethod("POST");
con.setRequestProperty("User-Agent", "Mozilla/5.0");
con.setRequestProperty("Accept-Language", "en-US,en;q=0.5");
con.setRequestProperty("Content-Type", "application/json; charset=UTF-8");
con.setDoOutput(true);
byte[] postData = workOrderJson.getBytes(StandardCharsets.UTF_8);
int postDataLength = postData.length;
con.setRequestProperty("Content-Length", Integer.toString(postDataLength));
con.getOutputStream().write(postData);
int responseCode = con.getResponseCode();
System.out.println("Response Code : " + responseCode);
}
public static void main(String[] args) {
String workOrderJson = "{\"workOrderId\":\"12345\",\"workOrderContent\":\"Do something.\"}";
try {
sendWorkOrderToBSystem(workOrderJson);
} catch (IOException e) {
e.printStackTrace();
}
}
}
```
在上面的代码中,`sendWorkOrderToBSystem`方法接受一个工单的JSON字符串作为输入,使用HTTP POST请求将工单数据发送到B系统。在main方法中,我们可以调用该方法并传入工单数据。
B系统接收工单并执行:
```java
import java.util.LinkedList;
import java.util.Queue;
public class BReceiver {
private static Queue<String> workOrderQueue = new LinkedList<>();
public static void receiveWorkOrder(String workOrderJson) {
workOrderQueue.offer(workOrderJson);
}
public static void executeWorkOrders() {
while (!workOrderQueue.isEmpty()) {
String workOrderJson = workOrderQueue.poll();
// 执行工单
System.out.println("Executing work order: " + workOrderJson);
}
}
public static void main(String[] args) {
// 模拟接收两个工单
receiveWorkOrder("{\"workOrderId\":\"12345\",\"workOrderContent\":\"Do something.\"}");
receiveWorkOrder("{\"workOrderId\":\"67890\",\"workOrderContent\":\"Do something else.\"}");
// 执行工单
executeWorkOrders();
}
}
```
在上面的代码中,`BReceiver`类表示B系统,使用一个队列`workOrderQueue`来保存接收到的工单数据。`receiveWorkOrder`方法将一个工单的JSON字符串加入队列中,`executeWorkOrders`方法从队列中取出工单并执行,直到队列为空。
在main方法中,我们可以模拟接收两个工单并执行。注意:在实际应用中,B系统需要持续运行以接收和处理来自A系统的工单。
阅读全文