apache / apisix-dashboard

Dashboard for Apache APISIX
https://apisix.apache.org/
Apache License 2.0
985 stars 522 forks source link

[Proposal]: Enhance plugin orchestration #1247

Closed LiteSun closed 3 years ago

LiteSun commented 3 years ago

why

Currently, our plugin orchestration has some features, but the interaction and functionality needs to be enhanced.

how

The plugin orchestration is divided into three blocks: functional component area, drawing board area, and property configuration area, in which the functional component area contains two parts: the base node and the plugin node. As showing below:

image

Functional component area

Base node

Plugin node

Drawing board area

Property configuration area

Related references: https://help.aliyun.com/product/55838.html https://aidev.xfyun.cn/aso/ https://www.restcloud.cn/restcloud/mycms/esb.html https://antv.vision/en

Feel free to comment here.

cc @membphis @juzhiyuan @liuxiran @bzp2010 @guoqqqi

liuxiran commented 3 years ago

The enhanced design looks more powerful and clearer than before πŸ‘ I just want to confirm some details:

  1. what does the start node end node and Connection node used to? Could these nodes also be configured? If so, where can we config them?
  2. Could we draw two or more orchestrations once in the drawing area?
  3. how to delete or replace a node which is already in the orchestration? looking forward to your reply, thanks ^_^
moonming commented 3 years ago

please send to mailinglist too

moonming commented 3 years ago

and you need refer to more RPA too

juzhiyuan commented 3 years ago

imove[1] is also built with X6, the same as the current proposal, but this proposal should have more inspiration from other RPAs indeed.

[1] https://github.com/imgcook/imove

LiteSun commented 3 years ago

The enhanced design looks more powerful and clearer than before πŸ‘ I just want to confirm some details:

  1. what does the start node end node and Connection node used to? Could these nodes also be configured? If so, where can we config them?
  2. Could we draw two or more orchestrations once in the drawing area?
  3. how to delete or replace a node which is already in the orchestration? looking forward to your reply, thanks ^_^
  1. The start and end nodes are designed to give the user a clearer picture of where the plug-in orchestration begins and ends without additional configuration. The connection nodes that are not in our plug-in orchestration, the picture is just used to show the general structure.

The actual effect is more like the following picture. image

  1. We can only draw one orchestration in the drawing area.

  2. If you want to delete a plugin, you need to select the plugin and press the delete button。 If you want to replace a plugin in the plugin orchestration, you need to delete the plugin and drag a new one to the node.

LiteSun commented 3 years ago

and you need refer to more RPA too

ok πŸ‘Œ

juzhiyuan commented 3 years ago

RPA (Robotic Process Automation) is the replacement of people by machines to perform jobs and tasks with fixed rules, high repetitiveness, and low added value.

Scenarios

  1. screen grabbing: keystroke wizard.
  2. process automation: automated operation and maintenance, automated inspection.
  3. ...

Evolution

  1. completely manual.
  2. manual + semi-automation.
  3. AI + full automation.

Products

  1. Blue Prism.
  2. UiPATH.
  3. Automation Anywhere.

Process Orchestration

By combining various capabilities into a specific execution chain to accomplish a certain business.

Objectives

Empowering the demand side without developer intervention and enabling users (O&M, etc.) efficiently and cost-effectively to orchestrate according to logic and ultimately achieve high quality for a specific business through visualization.

Plug-in orchestration

Plugin orchestration is still a type of process orchestration.

In Apache APISIX, it is only necessary to implement each single responsibility plug-in (micro-plugin) at the minimum granularity of the business, decouple the complex business and maximize the reuse of plug-ins by orchestrating the description file to enable plug-ins to create plug-ins to complete complex business.

Principle

Users use DAG to complete plug-in orchestration and analyze and process request traffic through decision trees to achieve a low-code gateway.

Underlying principle: DAG β†’ JSON β†’ AST β†’ Lua

Status

Selection

The original MVP version used @mrblenny/react-flow-chart as the underlying library, but due to low community motivation, weak documentation, and high cost for contributors to get started, a new underlying framework was chosen to optimize the plugin orchestration. Changing the underlying framework will result in a mismatch in the format of the choreography description file, but will not affect the DAG (JSON) received by the API.

During my research, I found the active community and richly documented diagram editing engine X6, which provides out-of-the-box interactive components and easy-to-use node customization capabilities to facilitate us to quickly build applications such as DAG diagrams that are just right for the underlying implementation.

In addition, @WenMing discovered the open-source project iMove, a logically reusable, function-oriented, flow visualization JavaScript tool library. Its core is based on X6 and form-render.

By integrating X6 with form-render, iMove enables writing normalization and orchestration tooling, which facilitates external integration and custom development.

The following are iMove screenshots.

image

image

Follow the process to drag and drop the left component to the canvas, configure it on the right side, and finally generate the target DAG.

Version planning

  1. Modify iMove to.
    1. support for external components incoming: plug-ins and configuration parameters.
    2. support orchestration template import and export (X6 natural support), according to the X6 specification, very few description files are not a backward-compatible problem.
  2. process template assets.
    1. contributors contribute templates, specific scenarios by submitting PRs.
  3. ease of use.
  4. optimization boundary condition qualification.

Reference

juzhiyuan commented 3 years ago

TODO

juzhiyuan commented 3 years ago

Just added a Project here https://github.com/apache/apisix-dashboard/projects/5