当前位置:网站首页>Business visualization - let your flowchart "run" (4. Actual business scenario test)
Business visualization - let your flowchart "run" (4. Actual business scenario test)
2022-07-28 19:34:00 【Illusory private school】
High quality resource sharing
| Learning route guidance ( Click unlock ) | Knowledge orientation | Crowd positioning |
|---|---|---|
| 🧡 Python Actual wechat ordering applet 🧡 | Progressive class | This course is python flask+ Perfect combination of wechat applet , From the deployment of Tencent to the launch of the project , Create a full stack ordering system . |
| Python Quantitative trading practice | beginner | Take you hand in hand to create an easy to expand 、 More secure 、 More efficient quantitative trading system |
Preface
First , Thank you for your comments on the last article [ Business visualization - Let your flowchart "Run" get up (3. Branch selection & Cross language distributed running nodes )] Support for .
Let me take the actual business scenario as an example , Let's introduce ladybugflow How to use .
Hotel reservation scenario ( The traditional way of writing )
For the following hotel reservation process
technological process 1:

technological process 2

[ technological process 1] The traditional way of writing 1:
Define shared variables between processes ;
Start to deal with ();
Query customer information processing ();
Query hotel information processing ();
Order processing ();
The order was successfully processed ();
Suppose each process uses 3 Second , The whole process needs 3*5=15 second .
So the writing method is derived 2:
Define shared variables between processes ;
Start to deal with ();
start-up Query customer information thread processing A;
start-up Query hotel information thread processing B;
wait for A,B end ;
Order processing ();
The order was successfully processed ();
Save time , But the implementation of multithreading makes the program complex ,
And the above writing puts The flow chart is bound with the business logic ,
That is, add , After deleting a node , The corresponding logic code should also be modified , The test scope is often that the business logic of the whole flow chart should be tested .
Hotel reservation scenario ( neographism )
Answer the above question , I'm designing ladybugflow When , hold The flow chart and business logic are separated ,
Each business logic corresponds to a method , Bind with the nodes in the flowchart .
In this way, there is no need to modify the business logic when modifying the flow chart .
And the flow chart can be generated by tool dragging , You can also view the running results on the graph .
So let's talk about that ladybugflow Development process in
1. Import dependence
Maven
<dependency>
<groupId>io.github.nobugladygroupId>
<artifactId>ladybugflowartifactId>
<version>0.0.6version>
dependency>
Gradle
// https://mvnrepository.com/artifact/io.github.nobuglady/ladybugflow
implementation 'io.github.nobuglady:ladybugflow:0.0.6'
2. Draw flow chart , And generate Json file
First, download this file locally , Open with a browser
https://github.com/nobuglady/ladybugflow/blob/main/html/network.html

Then click on the page [edit] Buttons can draw flow charts ,
After drawing the flow chart , Click on [update json] Button , You can generate the corresponding json file .
3. Write business methods
Each node of the flowchart corresponds to the following method , use @Node Annotations to associate flow charts .
You can use class variables to pass parameters and express results , For example, after placing an order successfully , Set the class variable to "success".
notes : It is recommended to use nodes ID Association , This article is for convenience , Select the Chinese node name for Association
Flow1.java( Note that the file code is UTF-8)
/**
*
* @author NoBugLady
*
*/
public class Flow1 extends FlowRunner {
private String result;
public String getResult() {
return result;
}
@Node(label = "start")
public void processStart() throws InterruptedException {
System.out.println(" Start up ( Simulate business waiting 3 second )");
Thread.sleep(3000);
System.out.println(" Start up end ");
}
@Node(label = " Query user information ")
public void processSearchUser() throws InterruptedException {
System.out.println(" Start querying user information ( Simulate business waiting 3 second )");
Thread.sleep(3000);
System.out.println(" End of user information query ");
}
@Node(label = " Check hotel information ")
public void processSearchHotel() throws InterruptedException {
System.out.println(" Check the hotel information ( Simulate business waiting 3 second )");
Thread.sleep(3000);
System.out.println(" End of hotel information inquiry ");
}
@Node(label = " Place an order ")
public void processOrder() throws InterruptedException {
System.out.println(" Order start ( Simulate business waiting 3 second )");
Thread.sleep(3000);
System.out.println(" End of order ");
}
@Node(label = " checkout success ")
public void processSuccess() throws InterruptedException {
System.out.println(" Order successfully started ( Simulate business waiting 3 second )");
Thread.sleep(3000);
System.out.println(" The order was successfully placed ");
result = "success";
}
} Fold
4. Put the... Of the flow chart Json Put the file into the project
Flow1.json( Note that the file code is UTF-8)
{
"flowId": "your flow id",
"nodes": [
{
"id": "1",
"label": "start"
},
{
"id": "a1a38c2e-0e05-4c68-bd49-f12aea070876",
"label": " Query user information ",
"readyCheck": 0
},
{
"id": "1a90a997-4390-470a-ae7c-626a725438d2",
"label": " Check hotel information ",
"readyCheck": 0
},
{
"id": "52289e99-363d-4453-8077-ca8bdc6d35bf",
"label": " Place an order ",
"readyCheck": 0
},
{
"id": "16422cbb-ccb0-4fe2-952b-e3ad5c3acbb2",
"label": " checkout success ",
"readyCheck": 0
}
],
"edges": [
{
"id": "1",
"from": "1",
"to": "2",
"arrows": "to"
},
{
"id": "b3ad7ab3-8fb6-4527-8cae-6845e03da3e4",
"from": "1",
"to": "a1a38c2e-0e05-4c68-bd49-f12aea070876",
"arrows": "to"
},
{
"id": "001375c7-19e7-436b-bbcd-68e36c8f23b7",
"from": "1",
"to": "1a90a997-4390-470a-ae7c-626a725438d2",
"arrows": "to"
},
{
"id": "dd830043-c7a7-4c71-b91c-10c007b7b19c",
"from": "1a90a997-4390-470a-ae7c-626a725438d2",
"to": "52289e99-363d-4453-8077-ca8bdc6d35bf",
"arrows": "to"
},
{
"id": "21c2c69d-0050-4eca-8283-5a2bcbdc6c37",
"from": "52289e99-363d-4453-8077-ca8bdc6d35bf",
"to": "16422cbb-ccb0-4fe2-952b-e3ad5c3acbb2",
"arrows": "to"
},
{
"id": "19f2f329-8163-4dc6-a353-800df79d18a6",
"from": "a1a38c2e-0e05-4c68-bd49-f12aea070876",
"to": "52289e99-363d-4453-8077-ca8bdc6d35bf",
"arrows": "to"
}
]
} Fold
The project structure is shown in the figure below
Flow1.java and Flow1.json It needs to be put under the same bag .

5. Start process
App1.java( Note that the file code is UTF-8)
/**
*
* @author NoBugLady
*
*/
public class App1 {
public static void main(String[] args) {
Flow1 testFlow = new Flow1();
testFlow.startFlow(true);
System.out.println(testFlow.getResult());
// It is not recommended to call every time shutdown, Can be in the whole App Call once when closing shutdown
FlowStarter.shutdown();
}
}
6. View the run results
[I]2022/07/27 21:23:12.172 main:ladybugflow.properties in root path not found, use default configuration
[I]2022/07/27 21:23:12.177 main:NodePool started.
[I]2022/07/27 21:23:12.178 main:Ready queue consumer thread started.
[I]2022/07/27 21:23:12.180 main:Complete queue consumer thread started.
[I]2022/07/27 21:23:12.993 [your flow id][38f3567d-77fb-4629-bf7e-68b27633ed68] main:json:
{"flowId":"your flow id","nodes":[{"id":"1","label":"start","readyCheck":0},{"id":"a1a38c2e-0e05-4c68-bd49-f12aea070876","label":" Query user information ","readyCheck":0},{"id":"1a90a997-4390-470a-ae7c-626a725438d2","label":" Check hotel information ","readyCheck":0},{"id":"52289e99-363d-4453-8077-ca8bdc6d35bf","label":" Place an order ","readyCheck":0},{"id":"16422cbb-ccb0-4fe2-952b-e3ad5c3acbb2","label":" checkout success ","readyCheck":0}],"edges":[{"id":"1","from":"1","to":"2","condition":null,"arrows":"to"},{"id":"b3ad7ab3-8fb6-4527-8cae-6845e03da3e4","from":"1","to":"a1a38c2e-0e05-4c68-bd49-f12aea070876","condition":null,"arrows":"to"},{"id":"001375c7-19e7-436b-bbcd-68e36c8f23b7","from":"1","to":"1a90a997-4390-470a-ae7c-626a725438d2","condition":null,"arrows":"to"},{"id":"dd830043-c7a7-4c71-b91c-10c007b7b19c","from":"1a90a997-4390-470a-ae7c-626a725438d2","to":"52289e99-363d-4453-8077-ca8bdc6d35bf","condition":null,"arrows":"to"},{"id":"21c2c69d-0050-4eca-8283-5a2bcbdc6c37","from":"52289e99-363d-4453-8077-ca8bdc6d35bf","to":"16422cbb-ccb0-4fe2-952b-e3ad5c3acbb2","condition":null,"arrows":"to"},{"id":"19f2f329-8163-4dc6-a353-800df79d18a6","from":"a1a38c2e-0e05-4c68-bd49-f12aea070876","to":"52289e99-363d-4453-8077-ca8bdc6d35bf","condition":null,"arrows":"to"}]}
[I]2022/07/27 21:23:12.996 [your flow id][38f3567d-77fb-4629-bf7e-68b27633ed68] pool-1-thread-1:execute node id:1
[I]2022/07/27 21:23:12.996 [your flow id][38f3567d-77fb-4629-bf7e-68b27633ed68] pool-1-thread-1:execute node name:start
Start up ( Simulate business waiting 3 second )
Start up end
[I]2022/07/27 21:23:16.003 [your flow id][38f3567d-77fb-4629-bf7e-68b27633ed68] pool-1-thread-1:execute node id:a1a38c2e-0e05-4c68-bd49-f12aea070876
[I]2022/07/27 21:23:16.003 [your flow id][38f3567d-77fb-4629-bf7e-68b27633ed68] pool-1-thread-1:execute node name: Query user information
[I]2022/07/27 21:23:16.003 [your flow id][38f3567d-77fb-4629-bf7e-68b27633ed68] pool-1-thread-2:execute node id:1a90a997-4390-470a-ae7c-626a725438d2
Start querying user information ( Simulate business waiting 3 second )
[I]2022/07/27 21:23:16.004 [your flow id][38f3567d-77fb-4629-bf7e-68b27633ed68] pool-1-thread-2:execute node name: Check hotel information
Check the hotel information ( Simulate business waiting 3 second )
End of hotel information inquiry
End of user information query
[I]2022/07/27 21:23:19.008 [your flow id][38f3567d-77fb-4629-bf7e-68b27633ed68] pool-1-thread-1:execute node id:52289e99-363d-4453-8077-ca8bdc6d35bf
[I]2022/07/27 21:23:19.008 [your flow id][38f3567d-77fb-4629-bf7e-68b27633ed68] pool-1-thread-1:execute node name: Place an order
Order start ( Simulate business waiting 3 second )
End of order
[I]2022/07/27 21:23:22.014 [your flow id][38f3567d-77fb-4629-bf7e-68b27633ed68] pool-1-thread-1:execute node id:16422cbb-ccb0-4fe2-952b-e3ad5c3acbb2
[I]2022/07/27 21:23:22.014 [your flow id][38f3567d-77fb-4629-bf7e-68b27633ed68] pool-1-thread-1:execute node name: checkout success
Order successfully started ( Simulate business waiting 3 second )
The order was successfully placed
[I]2022/07/27 21:23:25.025 [your flow id][38f3567d-77fb-4629-bf7e-68b27633ed68] Thread-1:Complete success.
[I]2022/07/27 21:23:25.027 [your flow id][38f3567d-77fb-4629-bf7e-68b27633ed68] Thread-1:json:
{"nodes":[{"id": "1","label": "start" ,"color": "#36AE7C"},{"id": "a1a38c2e-0e05-4c68-bd49-f12aea070876","label": " Query user information " ,"color": "#36AE7C"},{"id": "1a90a997-4390-470a-ae7c-626a725438d2","label": " Check hotel information " ,"color": "#36AE7C"},{"id": "52289e99-363d-4453-8077-ca8bdc6d35bf","label": " Place an order " ,"color": "#36AE7C"},{"id": "16422cbb-ccb0-4fe2-952b-e3ad5c3acbb2","label": " checkout success " ,"color": "#36AE7C"}],"edges":[{"id": "1","from": "1","to": "2","arrows": "to"},{"id": "b3ad7ab3-8fb6-4527-8cae-6845e03da3e4","from": "1","to": "a1a38c2e-0e05-4c68-bd49-f12aea070876","arrows": "to"},{"id": "001375c7-19e7-436b-bbcd-68e36c8f23b7","from": "1","to": "1a90a997-4390-470a-ae7c-626a725438d2","arrows": "to"},{"id": "dd830043-c7a7-4c71-b91c-10c007b7b19c","from": "1a90a997-4390-470a-ae7c-626a725438d2","to": "52289e99-363d-4453-8077-ca8bdc6d35bf","arrows": "to"},{"id": "21c2c69d-0050-4eca-8283-5a2bcbdc6c37","from": "52289e99-363d-4453-8077-ca8bdc6d35bf","to": "16422cbb-ccb0-4fe2-952b-e3ad5c3acbb2","arrows": "to"},{"id": "19f2f329-8163-4dc6-a353-800df79d18a6","from": "a1a38c2e-0e05-4c68-bd49-f12aea070876","to": "52289e99-363d-4453-8077-ca8bdc6d35bf","arrows": "to"}]}
success
[I]2022/07/27 21:23:25.028 main:Ready queue thread stoped.
[I]2022/07/27 21:23:25.028 main:Ready queue thread stoped.
[I]2022/07/27 21:23:25.028 main:NodePool stoped. Fold
End the process json Copy the string to the following , And then click [show network] Button , It can display the status after the process is executed
green : Successful implementation , Red : Execution failure , white : unexecuted

Hotel reservation process with branch processing
ladybugflow It provides branch processing function for flow chart .
According to the return result of the node , Perform different processes .
such as , In the above example , increase 【 Check order 】 node , as follows

Check the order successfully , Then go through the hotel reservation process , otherwise , Follow the failure process .
For the above process , We set the return value on both sides of the check order , as follows :


Generated Json The documents are as follows
Flow2.json( Note that the file code is UTF-8)
{
"flowId": "your flow id",
"nodes": [
{
"id": "1",
"label": "start"
},
{
"id": "a1a38c2e-0e05-4c68-bd49-f12aea070876",
"label": " Query user information ",
"readyCheck": 0
},
{
"id": "1a90a997-4390-470a-ae7c-626a725438d2",
"label": " Check hotel information ",
"readyCheck": 0
},
{
"id": "52289e99-363d-4453-8077-ca8bdc6d35bf",
"label": " Place an order ",
"readyCheck": 0
},
{
"id": "16422cbb-ccb0-4fe2-952b-e3ad5c3acbb2",
"label": " checkout success ",
"readyCheck": 0
},
{
"id": "5a1068c1-e365-4a51-b617-8cc093ce5e3d",
"label": " Check order ",
"readyCheck": 0
},
{
"id": "0aa3e9de-4015-4db0-9eda-fd1cd0fbbf10",
"label": " You can book ",
"readyCheck": 0
},
{
"id": "7e841bf6-b422-4c2c-b4ec-d2352e22cc88",
"label": " No reservations ",
"readyCheck": 0
},
{
"id": "8fc59321-8b96-4e17-9d8e-0c8f5fe9c45e",
"label": " Failure to deal with ",
"readyCheck": 0
}
],
"edges": [
{
"id": "1",
"from": "1",
"to": "2",
"arrows": "to"
},
{
"id": "b3ad7ab3-8fb6-4527-8cae-6845e03da3e4",
"from": "0aa3e9de-4015-4db0-9eda-fd1cd0fbbf10",
"to": "a1a38c2e-0e05-4c68-bd49-f12aea070876",
"arrows": "to"
},
{
"id": "001375c7-19e7-436b-bbcd-68e36c8f23b7",
"from": "5a1068c1-e365-4a51-b617-8cc093ce5e3d",
"to": "0aa3e9de-4015-4db0-9eda-fd1cd0fbbf10",
"condition": "1",
"arrows": "to"
},
{
"id": "dd830043-c7a7-4c71-b91c-10c007b7b19c",
"from": "1a90a997-4390-470a-ae7c-626a725438d2",
"to": "52289e99-363d-4453-8077-ca8bdc6d35bf",
"arrows": "to"
},
{
"id": "21c2c69d-0050-4eca-8283-5a2bcbdc6c37",
"from": "52289e99-363d-4453-8077-ca8bdc6d35bf",
"to": "16422cbb-ccb0-4fe2-952b-e3ad5c3acbb2",
"arrows": "to"
},
{
"id": "19f2f329-8163-4dc6-a353-800df79d18a6",
"from": "a1a38c2e-0e05-4c68-bd49-f12aea070876",
"to": "52289e99-363d-4453-8077-ca8bdc6d35bf",
"arrows": "to"
},
{
"id": "822e5c76-ce59-4962-b5e3-a3dfd905fa05",
"from": "1",
"to": "5a1068c1-e365-4a51-b617-8cc093ce5e3d",
"arrows": "to"
},
{
"id": "36d6e697-b835-4374-9fa7-c1cd24b100e9",
"from": "5a1068c1-e365-4a51-b617-8cc093ce5e3d",
"to": "7e841bf6-b422-4c2c-b4ec-d2352e22cc88",
"condition": "0",
"arrows": "to"
},
{
"id": "d4a03a18-2a24-4bec-9717-a82c8a4a764b",
"from": "0aa3e9de-4015-4db0-9eda-fd1cd0fbbf10",
"to": "1a90a997-4390-470a-ae7c-626a725438d2",
"arrows": "to"
},
{
"id": "673051d5-27f5-4578-8fc2-4f5e7352d5d2",
"from": "7e841bf6-b422-4c2c-b4ec-d2352e22cc88",
"to": "8fc59321-8b96-4e17-9d8e-0c8f5fe9c45e",
"arrows": "to"
}
]
} Fold
Add the hotel check node in the business method , Return here 1, Go through the process of checking success .
Flow2.java( Note that the file code is UTF-8)
/**
*
* @author NoBugLady
*
*/
public class Flow2 extends FlowRunner {
private String result;
public String getResult() {
return result;
}
@Node(label = "start")
public void processStart() throws InterruptedException {
System.out.println(" Start up ( Simulate business waiting 3 second )");
Thread.sleep(3000);
System.out.println(" Start up end ");
}
@Node(label = " Check order ")
public int processCheckOrder() throws InterruptedException {
System.out.println(" Check order start ( Simulate business waiting 3 second )");
Thread.sleep(3000);
System.out.println(" Check the end of the order ");
return 1;
}
@Node(label = " You can book ")
public void processCheckOrderOK() throws InterruptedException {
System.out.println(" You can book the start ( Simulate business waiting 3 second )");
Thread.sleep(3000);
System.out.println(" It can be scheduled to end ");
}
@Node(label = " Non bookable ")
public void processCheckOrderNG() throws InterruptedException {
System.out.println(" Non bookable start ( Simulate business waiting 3 second )");
Thread.sleep(3000);
System.out.println(" Non bookable end ");
}
@Node(label = " Query user information ")
public void processSearchUser() throws InterruptedException {
System.out.println(" Start querying user information ( Simulate business waiting 3 second )");
Thread.sleep(3000);
System.out.println(" End of user information query ");
}
@Node(label = " Check hotel information ")
public void processSearchHotel() throws InterruptedException {
System.out.println(" Check the hotel information ( Simulate business waiting 3 second )");
Thread.sleep(3000);
System.out.println(" End of hotel information inquiry ");
}
@Node(label = " Place an order ")
public void processOrder() throws InterruptedException {
System.out.println(" Order start ( Simulate business waiting 3 second )");
Thread.sleep(3000);
System.out.println(" End of order ");
}
@Node(label = " checkout success ")
public void processSuccess() throws InterruptedException {
System.out.println(" Order successfully started ( Simulate business waiting 3 second )");
Thread.sleep(3000);
System.out.println(" The order was successfully placed ");
result = "success";
}
@Node(label = " Failure to deal with ")
public void processError() throws InterruptedException {
System.out.println(" Failure processing starts ( Simulate business waiting 3 second )");
Thread.sleep(3000);
System.out.println(" End of failure processing ");
result = "error";
}
} Fold
Start process
App2.java( Note that the file code is UTF-8)
/**
*
* @author NoBugLady
*
*/
public class App2 {
public static void main(String[] args) {
Flow2 testFlow = new Flow2();
testFlow.startFlow(true);
System.out.println(testFlow.getResult());
// It is not recommended to call every time shutdown, Can be in the whole App Call once when closing shutdown
FlowStarter.shutdown();
}
}
View the run results
[I]2022/07/27 21:29:56.046 main:ladybugflow.properties in root path not found, use default configuration
[I]2022/07/27 21:29:56.052 main:NodePool started.
[I]2022/07/27 21:29:56.052 main:Ready queue consumer thread started.
[I]2022/07/27 21:29:56.054 main:Complete queue consumer thread started.
[I]2022/07/27 21:29:56.927 [your flow id][73a425a8-2f13-42bc-9358-111d10378204] main:json:
{"flowId":"your flow id","nodes":[{"id":"1","label":"start","readyCheck":0},{"id":"a1a38c2e-0e05-4c68-bd49-f12aea070876","label":" Query user information ","readyCheck":0},{"id":"1a90a997-4390-470a-ae7c-626a725438d2","label":" Check hotel information ","readyCheck":0},{"id":"52289e99-363d-4453-8077-ca8bdc6d35bf","label":" Place an order ","readyCheck":0},{"id":"16422cbb-ccb0-4fe2-952b-e3ad5c3acbb2","label":" checkout success ","readyCheck":0},{"id":"5a1068c1-e365-4a51-b617-8cc093ce5e3d","label":" Check order ","readyCheck":0},{"id":"0aa3e9de-4015-4db0-9eda-fd1cd0fbbf10","label":" You can book ","readyCheck":0},{"id":"7e841bf6-b422-4c2c-b4ec-d2352e22cc88","label":" No reservations ","readyCheck":0},{"id":"8fc59321-8b96-4e17-9d8e-0c8f5fe9c45e","label":" Failure to deal with ","readyCheck":0}],"edges":[{"id":"1","from":"1","to":"2","condition":null,"arrows":"to"},{"id":"b3ad7ab3-8fb6-4527-8cae-6845e03da3e4","from":"0aa3e9de-4015-4db0-9eda-fd1cd0fbbf10","to":"a1a38c2e-0e05-4c68-bd49-f12aea070876","condition":null,"arrows":"to"},{"id":"001375c7-19e7-436b-bbcd-68e36c8f23b7","from":"5a1068c1-e365-4a51-b617-8cc093ce5e3d","to":"0aa3e9de-4015-4db0-9eda-fd1cd0fbbf10","condition":"1","arrows":"to"},{"id":"dd830043-c7a7-4c71-b91c-10c007b7b19c","from":"1a90a997-4390-470a-ae7c-626a725438d2","to":"52289e99-363d-4453-8077-ca8bdc6d35bf","condition":null,"arrows":"to"},{"id":"21c2c69d-0050-4eca-8283-5a2bcbdc6c37","from":"52289e99-363d-4453-8077-ca8bdc6d35bf","to":"16422cbb-ccb0-4fe2-952b-e3ad5c3acbb2","condition":null,"arrows":"to"},{"id":"19f2f329-8163-4dc6-a353-800df79d18a6","from":"a1a38c2e-0e05-4c68-bd49-f12aea070876","to":"52289e99-363d-4453-8077-ca8bdc6d35bf","condition":null,"arrows":"to"},{"id":"822e5c76-ce59-4962-b5e3-a3dfd905fa05","from":"1","to":"5a1068c1-e365-4a51-b617-8cc093ce5e3d","condition":null,"arrows":"to"},{"id":"36d6e697-b835-4374-9fa7-c1cd24b100e9","from":"5a1068c1-e365-4a51-b617-8cc093ce5e3d","to":"7e841bf6-b422-4c2c-b4ec-d2352e22cc88","condition":"0","arrows":"to"},{"id":"d4a03a18-2a24-4bec-9717-a82c8a4a764b","from":"0aa3e9de-4015-4db0-9eda-fd1cd0fbbf10","to":"1a90a997-4390-470a-ae7c-626a725438d2","condition":null,"arrows":"to"},{"id":"673051d5-27f5-4578-8fc2-4f5e7352d5d2","from":"7e841bf6-b422-4c2c-b4ec-d2352e22cc88","to":"8fc59321-8b96-4e17-9d8e-0c8f5fe9c45e","condition":null,"arrows":"to"}]}
[I]2022/07/27 21:29:56.931 [your flow id][73a425a8-2f13-42bc-9358-111d10378204] pool-1-thread-1:execute node id:1
[I]2022/07/27 21:29:56.931 [your flow id][73a425a8-2f13-42bc-9358-111d10378204] pool-1-thread-1:execute node name:start
Start up ( Simulate business waiting 3 second )
Start up end
[I]2022/07/27 21:29:59.939 [your flow id][73a425a8-2f13-42bc-9358-111d10378204] pool-1-thread-1:execute node id:5a1068c1-e365-4a51-b617-8cc093ce5e3d
[I]2022/07/27 21:29:59.939 [your flow id][73a425a8-2f13-42bc-9358-111d10378204] pool-1-thread-1:execute node name: Check order
Check order start ( Simulate business waiting 3 second )
Check the end of the order
[I]2022/07/27 21:30:02.942 [your flow id][73a425a8-2f13-42bc-9358-111d10378204] pool-1-thread-1:execute node id:0aa3e9de-4015-4db0-9eda-fd1cd0fbbf10
[I]2022/07/27 21:30:02.942 [your flow id][73a425a8-2f13-42bc-9358-111d10378204] pool-1-thread-1:execute node name: You can book
You can book the start ( Simulate business waiting 3 second )
It can be scheduled to end
[I]2022/07/27 21:30:05.950 [your flow id][73a425a8-2f13-42bc-9358-111d10378204] pool-1-thread-1:execute node id:a1a38c2e-0e05-4c68-bd49-f12aea070876
[I]2022/07/27 21:30:05.950 [your flow id][73a425a8-2f13-42bc-9358-111d10378204] pool-1-thread-1:execute node name: Query user information
Start querying user information ( Simulate business waiting 3 second )
[I]2022/07/27 21:30:05.951 [your flow id][73a425a8-2f13-42bc-9358-111d10378204] pool-1-thread-2:execute node id:1a90a997-4390-470a-ae7c-626a725438d2
[I]2022/07/27 21:30:05.951 [your flow id][73a425a8-2f13-42bc-9358-111d10378204] pool-1-thread-2:execute node name: Check hotel information
Check the hotel information ( Simulate business waiting 3 second )
End of hotel information inquiry
End of user information query
[I]2022/07/27 21:30:08.956 [your flow id][73a425a8-2f13-42bc-9358-111d10378204] pool-1-thread-1:execute node id:52289e99-363d-4453-8077-ca8bdc6d35bf
[I]2022/07/27 21:30:08.956 [your flow id][73a425a8-2f13-42bc-9358-111d10378204] pool-1-thread-1:execute node name: Place an order
Order start ( Simulate business waiting 3 second )
End of order
[I]2022/07/27 21:30:11.960 [your flow id][73a425a8-2f13-42bc-9358-111d10378204] pool-1-thread-1:execute node id:16422cbb-ccb0-4fe2-952b-e3ad5c3acbb2
[I]2022/07/27 21:30:11.960 [your flow id][73a425a8-2f13-42bc-9358-111d10378204] pool-1-thread-1:execute node name: checkout success
Order successfully started ( Simulate business waiting 3 second )
The order was successfully placed
[I]2022/07/27 21:30:14.975 [your flow id][73a425a8-2f13-42bc-9358-111d10378204] Thread-1:Complete success.
[I]2022/07/27 21:30:14.977 [your flow id][73a425a8-2f13-42bc-9358-111d10378204] Thread-1:json:
{"nodes":[{"id": "1","label": "start" ,"color": "#36AE7C"},{"id": "a1a38c2e-0e05-4c68-bd49-f12aea070876","label": " Query user information " ,"color": "#36AE7C"},{"id": "1a90a997-4390-470a-ae7c-626a725438d2","label": " Check hotel information " ,"color": "#36AE7C"},{"id": "52289e99-363d-4453-8077-ca8bdc6d35bf","label": " Place an order " ,"color": "#36AE7C"},{"id": "16422cbb-ccb0-4fe2-952b-e3ad5c3acbb2","label": " checkout success " ,"color": "#36AE7C"},{"id": "5a1068c1-e365-4a51-b617-8cc093ce5e3d","label": " Check order " ,"color": "#36AE7C"},{"id": "0aa3e9de-4015-4db0-9eda-fd1cd0fbbf10","label": " You can book " ,"color": "#36AE7C"},{"id": "7e841bf6-b422-4c2c-b4ec-d2352e22cc88","label": " No reservations " ,"color": "#E8F9FD"},{"id": "8fc59321-8b96-4e17-9d8e-0c8f5fe9c45e","label": " Failure to deal with " ,"color": "#E8F9FD"}],"edges":[{"id": "1","from": "1","to": "2","arrows": "to"},{"id": "b3ad7ab3-8fb6-4527-8cae-6845e03da3e4","from": "0aa3e9de-4015-4db0-9eda-fd1cd0fbbf10","to": "a1a38c2e-0e05-4c68-bd49-f12aea070876","arrows": "to"},{"id": "001375c7-19e7-436b-bbcd-68e36c8f23b7","from": "5a1068c1-e365-4a51-b617-8cc093ce5e3d","to": "0aa3e9de-4015-4db0-9eda-fd1cd0fbbf10","arrows": "to"},{"id": "dd830043-c7a7-4c71-b91c-10c007b7b19c","from": "1a90a997-4390-470a-ae7c-626a725438d2","to": "52289e99-363d-4453-8077-ca8bdc6d35bf","arrows": "to"},{"id": "21c2c69d-0050-4eca-8283-5a2bcbdc6c37","from": "52289e99-363d-4453-8077-ca8bdc6d35bf","to": "16422cbb-ccb0-4fe2-952b-e3ad5c3acbb2","arrows": "to"},{"id": "19f2f329-8163-4dc6-a353-800df79d18a6","from": "a1a38c2e-0e05-4c68-bd49-f12aea070876","to": "52289e99-363d-4453-8077-ca8bdc6d35bf","arrows": "to"},{"id": "822e5c76-ce59-4962-b5e3-a3dfd905fa05","from": "1","to": "5a1068c1-e365-4a51-b617-8cc093ce5e3d","arrows": "to"},{"id": "36d6e697-b835-4374-9fa7-c1cd24b100e9","from": "5a1068c1-e365-4a51-b617-8cc093ce5e3d","to": "7e841bf6-b422-4c2c-b4ec-d2352e22cc88","arrows": "to"},{"id": "d4a03a18-2a24-4bec-9717-a82c8a4a764b","from": "0aa3e9de-4015-4db0-9eda-fd1cd0fbbf10","to": "1a90a997-4390-470a-ae7c-626a725438d2","arrows": "to"},{"id": "673051d5-27f5-4578-8fc2-4f5e7352d5d2","from": "7e841bf6-b422-4c2c-b4ec-d2352e22cc88","to": "8fc59321-8b96-4e17-9d8e-0c8f5fe9c45e","arrows": "to"}]}
success
[I]2022/07/27 21:30:14.977 main:Ready queue thread stoped.
[I]2022/07/27 21:30:14.977 main:Ready queue thread stoped.
[I]2022/07/27 21:30:14.977 main:NodePool stoped. Fold
End the process json Copy the string to the following , And then click [show network] Button , It can display the status after the process is executed
green : Successful implementation , Red : Execution failure , white : unexecuted

Remove unnecessary business nodes
In actual use , Not every business node needs a corresponding business code ,
For example, in the above example 【 You can book 】 and 【 No reservations 】 There can be no corresponding business logic , Just jump to the next node .
therefore , We can remove the above nodes from the business logic , as follows , Removed 【 You can book 】 and 【 No reservations 】 Corresponding business method .
Flow3.java( Note that the file code is UTF-8)
/**
*
* @author NoBugLady
*
*/
public class Flow3 extends FlowRunner {
private String result;
public String getResult() {
return result;
}
@Node(label = "start")
public void processStart() throws InterruptedException {
System.out.println(" Start up ( Simulate business waiting 3 second )");
Thread.sleep(3000);
System.out.println(" Start up end ");
}
@Node(label = " Check order ")
public int processCheckOrder() throws InterruptedException {
System.out.println(" Check order start ( Simulate business waiting 3 second )");
Thread.sleep(3000);
System.out.println(" Check the end of the order ");
return 1;
}
@Node(label = " Query user information ")
public void processSearchUser() throws InterruptedException {
System.out.println(" Start querying user information ( Simulate business waiting 3 second )");
Thread.sleep(3000);
System.out.println(" End of user information query ");
}
@Node(label = " Check hotel information ")
public void processSearchHotel() throws InterruptedException {
System.out.println(" Check the hotel information ( Simulate business waiting 3 second )");
Thread.sleep(3000);
System.out.println(" End of hotel information inquiry ");
}
@Node(label = " Place an order ")
public void processOrder() throws InterruptedException {
System.out.println(" Order start ( Simulate business waiting 3 second )");
Thread.sleep(3000);
System.out.println(" End of order ");
}
@Node(label = " checkout success ")
public void processSuccess() throws InterruptedException {
System.out.println(" Order successfully started ( Simulate business waiting 3 second )");
Thread.sleep(3000);
System.out.println(" The order was successfully placed ");
result = "success";
}
@Node(label = " Failure to deal with ")
public void processError() throws InterruptedException {
System.out.println(" Failure processing starts ( Simulate business waiting 3 second )");
Thread.sleep(3000);
System.out.println(" End of failure processing ");
result = "error";
}
} Fold
The startup code and process configuration file remain unchanged
App3.java( Note that the file code is UTF-8)
/**
*
* @author NoBugLady
*
*/
public class App3 {
public static void main(String[] args) {
Flow3 testFlow = new Flow3();
testFlow.startFlow(true);
System.out.println(testFlow.getResult());
// It is not recommended to call every time shutdown, Can be in the whole App Call once when closing shutdown
FlowStarter.shutdown();
}
}
Flow3.json( Note that the file code is UTF-8)
{
"flowId": "your flow id",
"nodes": [
{
"id": "1",
"label": "start"
},
{
"id": "a1a38c2e-0e05-4c68-bd49-f12aea070876",
"label": " Query user information ",
"readyCheck": 0
},
{
"id": "1a90a997-4390-470a-ae7c-626a725438d2",
"label": " Check hotel information ",
"readyCheck": 0
},
{
"id": "52289e99-363d-4453-8077-ca8bdc6d35bf",
"label": " Place an order ",
"readyCheck": 0
},
{
"id": "16422cbb-ccb0-4fe2-952b-e3ad5c3acbb2",
"label": " checkout success ",
"readyCheck": 0
},
{
"id": "5a1068c1-e365-4a51-b617-8cc093ce5e3d",
"label": " Check order ",
"readyCheck": 0
},
{
"id": "0aa3e9de-4015-4db0-9eda-fd1cd0fbbf10",
"label": " You can book ",
"readyCheck": 0
},
{
"id": "7e841bf6-b422-4c2c-b4ec-d2352e22cc88",
"label": " No reservations ",
"readyCheck": 0
},
{
"id": "8fc59321-8b96-4e17-9d8e-0c8f5fe9c45e",
"label": " Failure to deal with ",
"readyCheck": 0
}
],
"edges": [
{
"id": "1",
"from": "1",
"to": "2",
"arrows": "to"
},
{
"id": "b3ad7ab3-8fb6-4527-8cae-6845e03da3e4",
"from": "0aa3e9de-4015-4db0-9eda-fd1cd0fbbf10",
"to": "a1a38c2e-0e05-4c68-bd49-f12aea070876",
"arrows": "to"
},
{
"id": "001375c7-19e7-436b-bbcd-68e36c8f23b7",
"from": "5a1068c1-e365-4a51-b617-8cc093ce5e3d",
"to": "0aa3e9de-4015-4db0-9eda-fd1cd0fbbf10",
"condition": "1",
"arrows": "to"
},
{
"id": "dd830043-c7a7-4c71-b91c-10c007b7b19c",
"from": "1a90a997-4390-470a-ae7c-626a725438d2",
"to": "52289e99-363d-4453-8077-ca8bdc6d35bf",
"arrows": "to"
},
{
"id": "21c2c69d-0050-4eca-8283-5a2bcbdc6c37",
"from": "52289e99-363d-4453-8077-ca8bdc6d35bf",
"to": "16422cbb-ccb0-4fe2-952b-e3ad5c3acbb2",
"arrows": "to"
},
{
"id": "19f2f329-8163-4dc6-a353-800df79d18a6",
"from": "a1a38c2e-0e05-4c68-bd49-f12aea070876",
"to": "52289e99-363d-4453-8077-ca8bdc6d35bf",
"arrows": "to"
},
{
"id": "822e5c76-ce59-4962-b5e3-a3dfd905fa05",
"from": "1",
"to": "5a1068c1-e365-4a51-b617-8cc093ce5e3d",
"arrows": "to"
},
{
"id": "36d6e697-b835-4374-9fa7-c1cd24b100e9",
"from": "5a1068c1-e365-4a51-b617-8cc093ce5e3d",
"to": "7e841bf6-b422-4c2c-b4ec-d2352e22cc88",
"condition": "0",
"arrows": "to"
},
{
"id": "d4a03a18-2a24-4bec-9717-a82c8a4a764b",
"from": "0aa3e9de-4015-4db0-9eda-fd1cd0fbbf10",
"to": "1a90a997-4390-470a-ae7c-626a725438d2",
"arrows": "to"
},
{
"id": "673051d5-27f5-4578-8fc2-4f5e7352d5d2",
"from": "7e841bf6-b422-4c2c-b4ec-d2352e22cc88",
"to": "8fc59321-8b96-4e17-9d8e-0c8f5fe9c45e",
"arrows": "to"
}
]
} Fold
Running results
[I]2022/07/27 21:34:29.548 main:ladybugflow.properties in root path not found, use default configuration
[I]2022/07/27 21:34:29.558 main:NodePool started.
[I]2022/07/27 21:34:29.560 main:Ready queue consumer thread started.
[I]2022/07/27 21:34:29.563 main:Complete queue consumer thread started.
[I]2022/07/27 21:34:30.494 [your flow id][970f3310-4ca1-41db-9348-bcc3fe994ce5] main:json:
{"flowId":"your flow id","nodes":[{"id":"1","label":"start","readyCheck":0},{"id":"a1a38c2e-0e05-4c68-bd49-f12aea070876","label":" Query user information ","readyCheck":0},{"id":"1a90a997-4390-470a-ae7c-626a725438d2","label":" Check hotel information ","readyCheck":0},{"id":"52289e99-363d-4453-8077-ca8bdc6d35bf","label":" Place an order ","readyCheck":0},{"id":"16422cbb-ccb0-4fe2-952b-e3ad5c3acbb2","label":" checkout success ","readyCheck":0},{"id":"5a1068c1-e365-4a51-b617-8cc093ce5e3d","label":" Check order ","readyCheck":0},{"id":"0aa3e9de-4015-4db0-9eda-fd1cd0fbbf10","label":" You can book ","readyCheck":0},{"id":"7e841bf6-b422-4c2c-b4ec-d2352e22cc88","label":" No reservations ","readyCheck":0},{"id":"8fc59321-8b96-4e17-9d8e-0c8f5fe9c45e","label":" Failure to deal with ","readyCheck":0}],"edges":[{"id":"1","from":"1","to":"2","condition":null,"arrows":"to"},{"id":"b3ad7ab3-8fb6-4527-8cae-6845e03da3e4","from":"0aa3e9de-4015-4db0-9eda-fd1cd0fbbf10","to":"a1a38c2e-0e05-4c68-bd49-f12aea070876","condition":null,"arrows":"to"},{"id":"001375c7-19e7-436b-bbcd-68e36c8f23b7","from":"5a1068c1-e365-4a51-b617-8cc093ce5e3d","to":"0aa3e9de-4015-4db0-9eda-fd1cd0fbbf10","condition":"1","arrows":"to"},{"id":"dd830043-c7a7-4c71-b91c-10c007b7b19c","from":"1a90a997-4390-470a-ae7c-626a725438d2","to":"52289e99-363d-4453-8077-ca8bdc6d35bf","condition":null,"arrows":"to"},{"id":"21c2c69d-0050-4eca-8283-5a2bcbdc6c37","from":"52289e99-363d-4453-8077-ca8bdc6d35bf","to":"16422cbb-ccb0-4fe2-952b-e3ad5c3acbb2","condition":null,"arrows":"to"},{"id":"19f2f329-8163-4dc6-a353-800df79d18a6","from":"a1a38c2e-0e05-4c68-bd49-f12aea070876","to":"52289e99-363d-4453-8077-ca8bdc6d35bf","condition":null,"arrows":"to"},{"id":"822e5c76-ce59-4962-b5e3-a3dfd905fa05","from":"1","to":"5a1068c1-e365-4a51-b617-8cc093ce5e3d","condition":null,"arrows":"to"},{"id":"36d6e697-b835-4374-9fa7-c1cd24b100e9","from":"5a1068c1-e365-4a51-b617-8cc093ce5e3d","to":"7e841bf6-b422-4c2c-b4ec-d2352e22cc88","condition":"0","arrows":"to"},{"id":"d4a03a18-2a24-4bec-9717-a82c8a4a764b","from":"0aa3e9de-4015-4db0-9eda-fd1cd0fbbf10","to":"1a90a997-4390-470a-ae7c-626a725438d2","condition":null,"arrows":"to"},{"id":"673051d5-27f5-4578-8fc2-4f5e7352d5d2","from":"7e841bf6-b422-4c2c-b4ec-d2352e22cc88","to":"8fc59321-8b96-4e17-9d8e-0c8f5fe9c45e","condition":null,"arrows":"to"}]}
[I]2022/07/27 21:34:30.497 [your flow id][970f3310-4ca1-41db-9348-bcc3fe994ce5] pool-1-thread-1:execute node id:1
[I]2022/07/27 21:34:30.498 [your flow id][970f3310-4ca1-41db-9348-bcc3fe994ce5] pool-1-thread-1:execute node name:start
Start up ( Simulate business waiting 3 second )
Start up end
[I]2022/07/27 21:34:33.502 [your flow id][970f3310-4ca1-41db-9348-bcc3fe994ce5] pool-1-thread-1:execute node id:5a1068c1-e365-4a51-b617-8cc093ce5e3d
[I]2022/07/27 21:34:33.503 [your flow id][970f3310-4ca1-41db-9348-bcc3fe994ce5] pool-1-thread-1:execute node name: Check order
Check order start ( Simulate business waiting 3 second )
Check the end of the order
[I]2022/07/27 21:34:36.518 [your flow id][970f3310-4ca1-41db-9348-bcc3fe994ce5] pool-1-thread-1:execute node id:0aa3e9de-4015-4db0-9eda-fd1cd0fbbf10
[I]2022/07/27 21:34:36.518 [your flow id][970f3310-4ca1-41db-9348-bcc3fe994ce5] pool-1-thread-1:execute node name: You can book
[I]2022/07/27 21:34:36.519 [your flow id][970f3310-4ca1-41db-9348-bcc3fe994ce5] pool-1-thread-1:execute node id:a1a38c2e-0e05-4c68-bd49-f12aea070876
[I]2022/07/27 21:34:36.519 [your flow id][970f3310-4ca1-41db-9348-bcc3fe994ce5] pool-1-thread-1:execute node name: Query user information
Start querying user information ( Simulate business waiting 3 second )
[I]2022/07/27 21:34:36.519 [your flow id][970f3310-4ca1-41db-9348-bcc3fe994ce5] pool-1-thread-2:execute node id:1a90a997-4390-470a-ae7c-626a725438d2
[I]2022/07/27 21:34:36.519 [your flow id][970f3310-4ca1-41db-9348-bcc3fe994ce5] pool-1-thread-2:execute node name: Check hotel information
Check the hotel information ( Simulate business waiting 3 second )
End of user information query
End of hotel information inquiry
[I]2022/07/27 21:34:39.522 [your flow id][970f3310-4ca1-41db-9348-bcc3fe994ce5] pool-1-thread-2:execute node id:52289e99-363d-4453-8077-ca8bdc6d35bf
[I]2022/07/27 21:34:39.522 [your flow id][970f3310-4ca1-41db-9348-bcc3fe994ce5] pool-1-thread-2:execute node name: Place an order
Order start ( Simulate business waiting 3 second )
End of order
[I]2022/07/27 21:34:42.529 [your flow id][970f3310-4ca1-41db-9348-bcc3fe994ce5] pool-1-thread-2:execute node id:16422cbb-ccb0-4fe2-952b-e3ad5c3acbb2
[I]2022/07/27 21:34:42.529 [your flow id][970f3310-4ca1-41db-9348-bcc3fe994ce5] pool-1-thread-2:execute node name: checkout success
Order successfully started ( Simulate business waiting 3 second )
The order was successfully placed
[I]2022/07/27 21:34:45.530 [your flow id][970f3310-4ca1-41db-9348-bcc3fe994ce5] Thread-1:Complete success.
[I]2022/07/27 21:34:45.532 [your flow id][970f3310-4ca1-41db-9348-bcc3fe994ce5] Thread-1:json:
{"nodes":[{"id": "1","label": "start" ,"color": "#36AE7C"},{"id": "a1a38c2e-0e05-4c68-bd49-f12aea070876","label": " Query user information " ,"color": "#36AE7C"},{"id": "1a90a997-4390-470a-ae7c-626a725438d2","label": " Check hotel information " ,"color": "#36AE7C"},{"id": "52289e99-363d-4453-8077-ca8bdc6d35bf","label": " Place an order " ,"color": "#36AE7C"},{"id": "16422cbb-ccb0-4fe2-952b-e3ad5c3acbb2","label": " checkout success " ,"color": "#36AE7C"},{"id": "5a1068c1-e365-4a51-b617-8cc093ce5e3d","label": " Check order " ,"color": "#36AE7C"},{"id": "0aa3e9de-4015-4db0-9eda-fd1cd0fbbf10","label": " You can book " ,"color": "#36AE7C"},{"id": "7e841bf6-b422-4c2c-b4ec-d2352e22cc88","label": " No reservations " ,"color": "#E8F9FD"},{"id": "8fc59321-8b96-4e17-9d8e-0c8f5fe9c45e","label": " Failure to deal with " ,"color": "#E8F9FD"}],"edges":[{"id": "1","from": "1","to": "2","arrows": "to"},{"id": "b3ad7ab3-8fb6-4527-8cae-6845e03da3e4","from": "0aa3e9de-4015-4db0-9eda-fd1cd0fbbf10","to": "a1a38c2e-0e05-4c68-bd49-f12aea070876","arrows": "to"},{"id": "001375c7-19e7-436b-bbcd-68e36c8f23b7","from": "5a1068c1-e365-4a51-b617-8cc093ce5e3d","to": "0aa3e9de-4015-4db0-9eda-fd1cd0fbbf10","arrows": "to"},{"id": "dd830043-c7a7-4c71-b91c-10c007b7b19c","from": "1a90a997-4390-470a-ae7c-626a725438d2","to": "52289e99-363d-4453-8077-ca8bdc6d35bf","arrows": "to"},{"id": "21c2c69d-0050-4eca-8283-5a2bcbdc6c37","from": "52289e99-363d-4453-8077-ca8bdc6d35bf","to": "16422cbb-ccb0-4fe2-952b-e3ad5c3acbb2","arrows": "to"},{"id": "19f2f329-8163-4dc6-a353-800df79d18a6","from": "a1a38c2e-0e05-4c68-bd49-f12aea070876","to": "52289e99-363d-4453-8077-ca8bdc6d35bf","arrows": "to"},{"id": "822e5c76-ce59-4962-b5e3-a3dfd905fa05","from": "1","to": "5a1068c1-e365-4a51-b617-8cc093ce5e3d","arrows": "to"},{"id": "36d6e697-b835-4374-9fa7-c1cd24b100e9","from": "5a1068c1-e365-4a51-b617-8cc093ce5e3d","to": "7e841bf6-b422-4c2c-b4ec-d2352e22cc88","arrows": "to"},{"id": "d4a03a18-2a24-4bec-9717-a82c8a4a764b","from": "0aa3e9de-4015-4db0-9eda-fd1cd0fbbf10","to": "1a90a997-4390-470a-ae7c-626a725438d2","arrows": "to"},{"id": "673051d5-27f5-4578-8fc2-4f5e7352d5d2","from": "7e841bf6-b422-4c2c-b4ec-d2352e22cc88","to": "8fc59321-8b96-4e17-9d8e-0c8f5fe9c45e","arrows": "to"}]}
success
[I]2022/07/27 21:34:45.532 main:Ready queue thread stoped.
[I]2022/07/27 21:34:45.532 main:Ready queue thread stoped.
[I]2022/07/27 21:34:45.533 main:NodePool stoped. Fold
End the process json Copy the string to the following , And then click [show network] Button , It can display the status after the process is executed
green : Successful implementation , Red : Execution failure , white : unexecuted

Thank you for reading this article .
Last
Design information and detailed usage can refer to the previous article :https://blog.csdn.net/nobuglady/p/16474433.html
Source code :https://github.com/nobuglady/ladybugflow
Running example source code :https://github.com/nobuglady/ladybugflow-demo
边栏推荐
- 英文翻译葡萄牙语-批量英文转换葡萄牙语-各种语言免费互译转换
- Doxygen文档生成工具
- 身份证号的奥秘
- Transformer for anomaly detection - instra "painting transformer for anomaly detection"
- Pytorch:快速求得NxN矩阵的主对角线(diagonal)元素与非对角线元素
- ES6's new data container map
- Adobe Flash player 34.0.0.92 and available version modification methods (2021-01-23
- [深入研究4G/5G/6G专题-44]: URLLC-15-《3GPP URLLC相关协议、规范、技术原理深度解读》-9-低延时技术-3-非时隙调度Mini slot
- Pandownload revival tutorial
- lua语言的左对齐函数(手写)
猜你喜欢

使用百度EasyDL实现明厨亮灶厨师帽识别

WPF 实现带蒙版的 MessageBox 消息提示框

SaltStack系统初始化

宝塔面板搭建小说CMS管理系统源码实测 - ThinkPHP6.0

NDK 系列(5):JNI 从入门到实践,爆肝万字详解!

Saltstack configuration management

可转债概念表 x Notion 给你方便快捷的体验!

使用SaltStack自动化部署LNMP

Saltstack system initialization

Using Baidu easydl to realize chef hat recognition of bright kitchen and stove
随机推荐
App自动化测试是怎么实现H5测试的
Using Baidu easydl to realize chef hat recognition of bright kitchen and stove
Streamlit machine learning application development tutorial
CVPR21-无监督异常检测《CutPaste:Self-Supervised Learning for Anomaly Detection and Localization》
Preliminary learning function (3rd blog)
ES6 conversion of new data type set and arr set map
ES6 new - arrow function
力扣 1331. 数组序号转换
英文翻译意大利语-批量英文翻译意大利语工具免费
开盘暴涨215%!国产信号链芯片企业芯海科技登陆科创板
我的第二次博客——C语言
Quickly install torch spark, torch geometric and other packages in moment pool cloud
Cvpr21 unsupervised anomaly detection cutpaste:self supervised learning for anomaly detection and localization
用于异常检测的Transformer - InTra《Inpainting Transformer for Anomaly Detection》
The opening price soared by 215%! Domestic signal chain chip enterprise Xinhai Technology landed on the scientific innovation board
Saltstack configuration management
Pytoch: implementation of crossentropyloss and labelsmoothing
My second blog - C language
美国将提供250亿美元补贴,鼓励英特尔等芯片制造商迁回产线
Force buckle 1331. Array serial number conversion