Jelajahi Sumber

fix(docs): clean up docs (#1155)

Signed-off-by: Jianxiang Ran <rxan_embedded@163.com>
superxan 3 tahun lalu
induk
melakukan
d7457bcba9
100 mengubah file dengan 585 tambahan dan 488 penghapusan
  1. 5 5
      README-CN.md
  2. 5 5
      README.md
  3. 337 236
      docs/directory.json
  4. 5 13
      docs/en_US/README.md
  5. 3 3
      docs/en_US/deploy/openyurt_tutorial.md
  6. 7 7
      docs/en_US/edgex/edgex_rule_engine_tutorial.md
  7. 2 2
      docs/en_US/extension/external/external_func.md
  8. 5 5
      docs/en_US/extension/native/function.md
  9. 11 11
      docs/en_US/plugins/overview.md
  10. 20 18
      docs/en_US/plugins/plugins_tutorial.md
  11. 7 7
      docs/en_US/extension/native/sink.md
  12. 7 7
      docs/en_US/extension/native/source.md
  13. 1 1
      docs/en_US/plugins/functions/functions.md
  14. 1 1
      docs/en_US/plugins/functions/tensorflow_lite_tutorial.md
  15. 4 4
      docs/en_US/extension/native/overview.md
  16. 0 0
      docs/en_US/extension/native/sinks/file.md
  17. 0 0
      docs/en_US/extension/native/sinks/image.md
  18. 0 0
      docs/en_US/extension/native/sinks/influx.md
  19. 0 0
      docs/en_US/extension/native/sinks/redis.md
  20. 0 0
      docs/en_US/extension/native/sinks/tdengine.md
  21. 0 0
      docs/en_US/extension/native/sinks/zmq.md
  22. 1 1
      docs/en_US/plugins/sources/random.md
  23. 1 1
      docs/en_US/plugins/sources/zmq.md
  24. 3 3
      docs/en_US/extension/portable/go_sdk.md
  25. 1 1
      docs/en_US/extension/portable/overview.md
  26. 1 1
      docs/en_US/extension/portable/python_sdk.md
  27. 3 3
      docs/en_US/getting_started.md
  28. 1 1
      docs/en_US/cli/overview.md
  29. 1 1
      docs/en_US/cli/plugins.md
  30. 0 0
      docs/zh_CN/cli/resources/arch.png
  31. 1 1
      docs/en_US/cli/rules.md
  32. 2 2
      docs/en_US/cli/streams.md
  33. 1 1
      docs/en_US/cli/tables.md
  34. 18 0
      docs/en_US/operation/compile/compile.md
  35. 0 0
      docs/en_US/operation/compile/cross-compile.md
  36. 0 0
      docs/en_US/operation/config/authentication.md
  37. 2 2
      docs/en_US/operation/configuration_file.md
  38. 2 2
      docs/en_US/operation/install/overview.md
  39. 12 12
      docs/en_US/manager-ui/overview.md
  40. 12 12
      docs/en_US/manager-ui/plugins_in_manager.md
  41. 0 0
      docs/en_US/operation/manager-ui/resources/add_service.png
  42. 0 0
      docs/en_US/operation/manager-ui/resources/arch.png
  43. 0 0
      docs/en_US/operation/manager-ui/resources/create_conf.png
  44. 0 0
      docs/en_US/operation/manager-ui/resources/function_about.png
  45. 0 0
      docs/en_US/operation/manager-ui/resources/login.png
  46. 0 0
      docs/en_US/operation/manager-ui/resources/new_plugin.png
  47. 0 0
      docs/en_US/operation/manager-ui/resources/new_rule.png
  48. 0 0
      docs/en_US/operation/manager-ui/resources/new_stream.png
  49. 0 0
      docs/en_US/operation/manager-ui/resources/rule_op.png
  50. 0 0
      docs/en_US/operation/manager-ui/resources/sink_about.png
  51. 0 0
      docs/en_US/operation/manager-ui/resources/sink_cf.png
  52. 0 0
      docs/en_US/operation/manager-ui/resources/sink_conf.png
  53. 0 0
      docs/en_US/operation/manager-ui/resources/source_about.png
  54. 0 0
      docs/en_US/operation/manager-ui/resources/source_cf.png
  55. 0 0
      docs/en_US/operation/manager-ui/resources/source_conf.png
  56. 0 0
      docs/en_US/operation/manager-ui/resources/source_confkey.png
  57. 5 1
      docs/en_US/operation/overview.md
  58. 0 0
      docs/en_US/operation/restapi/overview.md
  59. 2 2
      docs/en_US/restapi/plugins.md
  60. 0 0
      docs/en_US/operation/restapi/rules.md
  61. 0 0
      docs/en_US/operation/restapi/services.md
  62. 1 1
      docs/en_US/restapi/streams.md
  63. 1 1
      docs/en_US/restapi/tables.md
  64. 4 2
      docs/en_US/reference.md
  65. 0 0
      docs/en_US/resources/JSON_Expressions.pptx
  66. 0 0
      docs/en_US/resources/arch.png
  67. 1 1
      docs/en_US/rules/sources/file.md
  68. 1 1
      docs/en_US/sqls/streams.md
  69. TEMPAT SAMPAH
      docs/en_US/streaming_class_diagram.pdf
  70. 0 17
      docs/en_US/tutorial.md
  71. 5 13
      docs/zh_CN/README.md
  72. 3 3
      docs/zh_CN/deploy/openyurt_tutorial.md
  73. 7 7
      docs/zh_CN/edgex/edgex_rule_engine_tutorial.md
  74. 2 2
      docs/zh_CN/extension/external/external_func.md
  75. 5 5
      docs/zh_CN/extension/native/function.md
  76. 11 11
      docs/zh_CN/plugins/overview.md
  77. 20 17
      docs/zh_CN/plugins/plugins_tutorial.md
  78. 9 9
      docs/zh_CN/extension/native/sink.md
  79. 6 6
      docs/zh_CN/extension/native/source.md
  80. 1 1
      docs/zh_CN/plugins/functions/functions.md
  81. 1 1
      docs/zh_CN/plugins/functions/tensorflow_lite_tutorial.md
  82. 4 4
      docs/zh_CN/extension/native/overview.md
  83. 0 0
      docs/zh_CN/extension/native/sinks/file.md
  84. 0 0
      docs/zh_CN/extension/native/sinks/image.md
  85. 0 0
      docs/zh_CN/extension/native/sinks/influx.md
  86. 0 0
      docs/zh_CN/extension/native/sinks/redis.md
  87. 0 0
      docs/zh_CN/extension/native/sinks/tdengine.md
  88. 0 0
      docs/zh_CN/extension/native/sinks/zmq.md
  89. 1 1
      docs/zh_CN/plugins/sources/random.md
  90. 1 1
      docs/zh_CN/plugins/sources/zmq.md
  91. 3 3
      docs/zh_CN/extension/portable/go_sdk.md
  92. 1 1
      docs/zh_CN/extension/portable/overview.md
  93. 1 1
      docs/zh_CN/extension/portable/python_sdk.md
  94. 2 2
      docs/zh_CN/getting_started.md
  95. 1 1
      docs/zh_CN/cli/overview.md
  96. 1 1
      docs/zh_CN/cli/plugins.md
  97. 0 0
      docs/en_US/cli/resources/arch.png
  98. 1 1
      docs/zh_CN/cli/rules.md
  99. 2 2
      docs/zh_CN/cli/streams.md
  100. 0 0
      docs/zh_CN/cli/tables.md

File diff ditekan karena terlalu besar
+ 5 - 5
README-CN.md


File diff ditekan karena terlalu besar
+ 5 - 5
README.md


+ 337 - 236
docs/directory.json

@@ -30,7 +30,11 @@
 					"path": "rules/overview"
 				},
 				{
-					"title": "Sinks",
+				"title": "规则流水线",
+				"path": "rules/rule_pipeline"
+				},
+				{
+					"title": "Sinks 动作",
 					"children": [{
 							"title": "EdgeX 消息总线目标",
 							"path": "rules/sinks/edgex"
@@ -40,7 +44,7 @@
 							"path": "rules/sinks/mqtt"
 						},
 						{
-							"title": "Nop action",
+							"title": "Nop 动作",
 							"path": "rules/sinks/nop"
 						},
 						{
@@ -50,11 +54,15 @@
 						{
 							"title": "日志操作",
 							"path": "rules/sinks/log"
+						},
+						{
+							"title": "内存动作",
+							"path": "rules/sinks/memory"
 						}
 					]
 				},
 				{
-					"title": "Sources",
+					"title": "Sources",
 					"children": [{
 							"title": "EdgeX 源",
 							"path": "rules/sources/edgex"
@@ -66,6 +74,14 @@
 						{
 							"title": "MQTT源",
 							"path": "rules/sources/mqtt"
+						},
+						{
+							"title": "文件源",
+							"path": "rules/sources/file"
+						},
+						{
+							"title": "内存源",
+							"path": "rules/sources/memory"
 						}
 					]
 				},
@@ -80,65 +96,11 @@
 
 			]
 		},
-		{
-			"title": "命令行工具",
-			"children": [{
-					"title": "摘要",
-					"path": "cli/overview"
-				},
-				{
-					"title": "流管理",
-					"path": "cli/streams"
-				},
-				{
-					"title": "规则管理",
-					"path": "cli/rules"
-				},
-				{
-					"title": "插件管理",
-					"path": "cli/plugins"
-				}
-			]
-		},
-		{
-			"title": "管理控制台",
-			"children": [{
-					"title": "控制台使用",
-					"path": "manager-ui/overview"
-				},
-				{
-					"title": "如何将自定义的插件展示在管理控制台的安装列表",
-					"path": "manager-ui/plugins_in_manager"
-				}
-			]
-		},
-		{
-			"title": "Rest API 接口",
-			"children": [{
-					"title": "接口介绍",
-					"path": "restapi/overview"
-				},
-				{
-					"title": "流管理",
-					"path": "restapi/streams"
-				},
-				{
-					"title": "规则管理",
-					"path": "restapi/rules"
-				},
-				{
-					"title": "插件管理",
-					"path": "restapi/plugins"
-				},
-				{
-					"title": "外部函数管理",
-					"path": "restapi/services"
-				}
-			]
-		},
+
 		{
 			"title": "eKuiper SQL 参考",
-			"children": [{
+			"children": [
+				{
 					"title": "eKuiper SQL 介绍",
 					"path": "sqls/overview"
 				},
@@ -147,6 +109,10 @@
 					"path": "sqls/streams"
 				},
 				{
+					"title": "表规格",
+					"path": "sqls/tables"
+				},
+				{
 					"title": "查询语言元素",
 					"path": "sqls/query_language_elements"
 				},
@@ -159,6 +125,10 @@
 					"path": "sqls/built-in_functions"
 				},
 				{
+					"title": "数据类型",
+					"path": "sqls/data_types"
+				},
+				{
 					"title": "eKuiper 词汇元素",
 					"path": "sqls/lexical_elements"
 				},
@@ -171,120 +141,203 @@
 		{
 			"title": "扩展 eKuiper",
 			"children": [{
-				"title": "扩展",
-				"path": "extension/overview"
+					"title": "扩展概要",
+					"path": "extension/overview"
 				},
 				{
-					"title": "扩展",
-					"children": [
-						{
-							"title": "外部函数",
-							"path": "extension/external/external_func"
-						}
-					]
+					"title": "调用外部函数",
+					"path": "extension/external/external_func"
+
 				},
 				{
-					"title": "原生插件",
+					"title": "原生插件开发",
 					"children": [
 						{
-							"title": "函数扩展",
-							"path": "extension/native/function"
-						},
-						{
-							"title": "扩展",
+							"title": "原生插件概要",
 							"path": "extension/native/overview"
 						},
 						{
-							"title": "目标 (Sink) 扩展",
-							"path": "extension/native/sink"
-						},
-						{
-							"title": "源( Source )扩展",
-							"path": "extension/native/source"
-						}
+							"title": "自定义原生插件开发",
+							"children": [
+								{
+									"title": "插件开发介绍",
+									"path": "extension/native/develop/overview"
+								},
+								{
+									"title": "插件开发教程",
+									"path": "extension/native/develop/plugins_tutorial"
+								},
+								{
+									"title": "函数插件开发",
+									"path": "extension/native/develop/function"
+								},
+								{
+									"title": "目标插件开发",
+									"path": "extension/native/develop/sink"
+								},
+								{
+									"title": "源插件开发",
+									"path": "extension/native/develop/source"
+								}
+							]
+						},
+						{
+							"title": "预定义的目标扩展",
+							"children": [
+								{
+											"title": "文件目标(Sink)",
+											"path": "extension/native/sinks/file"
+										},
+								{
+											"title": "图像目标(Sink)",
+											"path": "extension/native/sinks/image"
+										},
+								{
+											"title": "InfluxDB 目标(Sink)",
+											"path": "extension/native/sinks/influx"
+										},
+								{
+											"title": "redis 目标(Sink)",
+											"path": "extension/native/sinks/redis"
+										},
+								{
+											"title": "TDengine 目标(Sink)",
+											"path": "extension/native/sinks/tdengine"
+										},
+								{
+											"title": "Zmq 目标(Sink)",
+											"path": "extension/native/sinks/zmq"
+										}
+							]
+						},
+						{
+									"title": "预定义的源扩展",
+									"children": [{
+										"title": "random 源(Source)",
+										"path": "extension/native/sources/random"
+									},
+										{
+											"title": "Zmq 源(Source)",
+											"path": "extension/native/sources/zmq"
+										}
+									]
+								},
+						{
+									"title": "预定义的函数扩展",
+									"path": "extension/native/functions/functions"
+								}
 					]
 				},
+
 				{
-					"title": "Portable",
+					"title": "Portable 插件开发",
 					"children": [
 						{
-							"title": "Portable Plugin",
+							"title": "Portable 插件简介",
 							"path": "extension/portable/overview"
 						},
 						{
-							"title": "GO SDK for Portable Plugin",
+							"title": "Portable 插件 Go 语言 SDK",
 							"path": "extension/portable/go_sdk"
 						},
 						{
-							"title": "Python SDK for Portable Plugin",
+							"title": "Portable 插件 Python 语言 SDK",
 							"path": "extension/portable/python_sdk"
 						}
 					]
 				}
 			]
 		},
+
 		{
-			"title": "插件",
-			"children": [{
-					"title": "插件介绍",
-					"path": "plugins/overview"
+			"title": "使用指南",
+			"children": [
+				{
+					"title": "安装",
+					"path": "operation/install/overview"
 				},
 				{
-					"title": "插件开发教程",
-					"path": "plugins/plugins_tutorial"
+					"title": "centos 安装",
+					"path": "operation/install/cent-os"
 				},
 				{
-					"title": "Sinks",
-					"children": [{
-							"title": "文件目标(Sink)",
-							"path": "plugins/sinks/file"
+					"title": "配置文件",
+					"path": "operation/config/configuration_file"
+				},
+				{
+					"title": "认证配置",
+					"path": "operation/config/authentication"
+				},
+				{
+					"title": "命令行工具",
+					"children": [
+						{
+							"title": "摘要",
+							"path": "operation/cli/overview"
 						},
 						{
-							"title": "图像目标(Sink)",
-							"path": "plugins/sinks/image"
+							"title": "流管理",
+							"path": "operation/cli/streams"
 						},
 						{
-							"title": "InfluxDB 目标(Sink)",
-							"path": "plugins/sinks/influx"
+							"title": "规则管理",
+							"path": "operation/cli/rules"
 						},
 						{
-							"title": "TDengine Sink",
-							"path": "plugins/sinks/tdengine"
+							"title": "表管理",
+							"path": "operation/cli/tables"
 						},
 						{
-							"title": "Zmq Sink",
-							"path": "plugins/sinks/zmq"
+							"title": "插件管理",
+							"path": "operation/cli/plugins"
 						}
 					]
 				},
 				{
-					"title": "Sources",
-					"children": [{
-							"title": "Random Source",
-							"path": "plugins/sources/random"
+					"title": "管理控制台",
+					"children": [
+						{
+							"title": "控制台使用",
+							"path": "operation/manager-ui/overview"
 						},
 						{
-							"title": "Zmq Source",
-							"path": "plugins/sources/zmq"
+							"title": "如何将自定义的插件展示在管理控制台的安装列表",
+							"path": "operation/manager-ui/plugins_in_manager"
 						}
 					]
 				},
 				{
-					"title": "Custom function",
-					"path": "plugins/functions/functions"
-				}
-			]
-		},
-		{
-			"title": "运营",
-			"children": [
-				{
-					"title": "配置文件",
-					"path": "operation/configuration_file"
+					"title": "Rest API 接口",
+					"children": [
+						{
+							"title": "接口介绍",
+							"path": "operation/restapi/overview"
+						},
+						{
+							"title": "流管理",
+							"path": "operation/restapi/streams"
+						},
+						{
+							"title": "表管理",
+							"path": "operation/restapi/tables"
+						},
+						{
+							"title": "规则管理",
+							"path": "operation/restapi/rules"
+						},
+						{
+							"title": "插件管理",
+							"path": "operation/restapi/plugins"
+						},
+						{
+							"title": "外部函数管理",
+							"path": "operation/restapi/services"
+						}
+					]
 				},
 				{
-					"title": "认证",
-					"path": "operation/authentication"
+					"title": "交叉编译",
+					"path": "operation/compile/cross-compile"
 				}
 			]
 		}
@@ -320,6 +373,10 @@
 					"path": "rules/overview"
 				},
 				{
+					"title": "Rule Pipeline",
+					"path": "rules/rule_pipeline"
+				},
+				{
 					"title": "Sinks",
 					"children": [{
 							"title": "EdgeX Message Bus action",
@@ -330,6 +387,10 @@
 							"path": "rules/sinks/mqtt"
 						},
 						{
+							"title": "Memory action",
+							"path": "rules/sinks/memory"
+						},
+						{
 							"title": "Nop action",
 							"path": "rules/sinks/nop"
 						},
@@ -354,6 +415,14 @@
 							"path": "rules/sources/http_pull"
 						},
 						{
+							"title": "File source",
+							"path": "rules/sources/file"
+						},
+						{
+							"title": "Memory source",
+							"path": "rules/sources/memory"
+						},
+						{
 							"title": "MQTT source",
 							"path": "rules/sources/mqtt"
 						}
@@ -370,71 +439,24 @@
 
 			]
 		},
+
 		{
-			"title": "Command line tool",
-			"children": [{
-					"title": "Introduction",
-					"path": "cli/overview"
-				},
-				{
-					"title": "Streams",
-					"path": "cli/streams"
-				},
-				{
-					"title": "Rules",
-					"path": "cli/rules"
-				},
-				{
-					"title": "Plugins",
-					"path": "cli/plugins"
-				}
-			]
-		},
-		{
-			"title": "eKuiper management console",
+			"title": "eKuiper SQL",
 			"children": [{
 					"title": "Introduction",
-					"path": "manager-ui/overview"
+					"path": "sqls/overview"
 				},
 				{
-					"title": "How to display custom plugins in the installation list of the management console",
-					"path": "manager-ui/plugins_in_manager"
-				}
-			]
-		},
-		{
-			"title": "Rest API",
-			"children": [{
-				    "title": "Introduction",
-				    "path": "restapi/overview"
-			    },
-				{
 					"title": "Streams",
-					"path": "restapi/streams"
-				},
-				{
-					"title": "Rules",
-					"path": "restapi/rules"
+					"path": "sqls/streams"
 				},
 				{
-					"title": "Plugins",
-					"path": "restapi/plugins"
+					"title": "Tables",
+					"path": "sqls/tables"
 				},
 				{
-					"title": "External Services",
-					"path": "restapi/services"
-				}
-			]
-		},
-		{
-			"title": "eKuiper SQL",
-			"children": [{
-					"title": "Introduction",
-					"path": "sqls/overview"
-				},
-				{
-					"title": "Streams",
-					"path": "sqls/streams"
+					"title": "Data types",
+					"path": "sqls/data_types"
 				},
 				{
 					"title": "Query language element",
@@ -460,42 +482,96 @@
 		},
 		{
 			"title": "Extend eKuiper",
-			"children": [{
+			"children": [
+				{
 					"title": "Introduction",
 					"path": "extension/overview"
 				},
 				{
-					"title": "External",
-					"children": [
-						{
-							"title": "External Function",
-							"path": "extension/external/external_func"
-						}
-					]
+					"title": "External function",
+					"path": "extension/external/external_func"
 				},
 				{
-					"title": "Native",
+					"title": "Native plugin develop",
 					"children": [
 						{
-							"title": "Function Extension",
-							"path": "extension/native/function"
-						},
-						{
-							"title": "Native Plugin",
+							"title": "Native plugin develop overview",
 							"path": "extension/native/overview"
 						},
 						{
-							"title": "Sink Extension",
-							"path": "extension/native/sink"
-						},
-						{
-							"title": "Source Extension",
-							"path": "extension/native/source"
+							"title": "Custom native plugin develop",
+							"children": [
+								{
+									"title": "Plugin develop introduction",
+									"path": "extension/native/develop/overview"
+								},
+								{
+									"title": "Plugin develop tutorial",
+									"path": "extension/native/develop/plugins_tutorial"
+								},
+								{
+									"title": "Function plugin",
+									"path": "extension/native/develop/function"
+								},
+								{
+									"title": "Sink plugin",
+									"path": "extension/native/develop/sink"
+								},
+								{
+									"title": "Source plugin",
+									"path": "extension/native/develop/source"
+								}
+							]
+						},
+						{
+							"title": "Predefined sink plugins",
+							"children": [
+								{
+									"title": "File sink",
+									"path": "extension/native/sinks/file"
+								},
+								{
+									"title": "Image sink",
+									"path": "extension/native/sinks/image"
+								},
+								{
+									"title": "InfluxDB sink",
+									"path": "extension/native/sinks/influx"
+								},
+								{
+									"title": "Redis sink",
+									"path": "extension/native/sinks/redis"
+								},
+								{
+									"title": "TDengine sink",
+									"path": "extension/native/sinks/tdengine"
+								},
+								{
+									"title": "Zmq sink",
+									"path": "extension/native/sinks/zmq"
+								}
+							]
+						},
+						{
+							"title": "Predefined source plugins",
+							"children": [{
+								"title": "Random source",
+								"path": "extension/native/sources/random"
+							},
+								{
+									"title": "Zmq source",
+									"path": "extension/native/sources/zmq"
+								}
+							]
+						},
+						{
+							"title": "Predefined sink plugins",
+							"path": "extension/native/functions/functions"
 						}
 					]
 				},
 				{
-					"title": "Portable",
+					"title": "Portable plugin develop",
 					"children": [
 						{
 							"title": "Portable Plugin",
@@ -513,68 +589,93 @@
 				}
 			]
 		},
+
 		{
-			"title": "Plugins",
-			"children": [{
-					"title": "Introduction",
-					"path": "plugins/overview"
+			"title": "Operation",
+			"children": [
+				{
+					"title": "Install",
+					"path": "operation/install/overview"
 				},
 				{
-					"title": "Development tutorial",
-					"path": "plugins/plugins_tutorial"
+					"title": "centos",
+					"path": "operation/install/cent-os"
 				},
 				{
-					"title": "Sinks",
+					"title": "Configuration File",
+					"path": "operation/config/configuration_file"
+				},
+				{
+					"title": "Authentication",
+					"path": "operation/config/authentication"
+				},
+				{
+					"title": "Command line tool",
 					"children": [{
-							"title": "File Sink",
-							"path": "plugins/sinks/file"
-						},
+						"title": "Introduction",
+						"path": "operation/cli/overview"
+					},
 						{
-							"title": "Image Sink",
-							"path": "plugins/sinks/image"
+							"title": "Streams",
+							"path": "operation/cli/streams"
 						},
 						{
-							"title": "InfluxDB Sink",
-							"path": "plugins/sinks/influx"
+							"title": "Rules",
+							"path": "operation/cli/rules"
 						},
 						{
-							"title": "TDengine Sink",
-							"path": "plugins/sinks/tdengine"
+							"title": "Tables",
+							"path": "operation/cli/tables"
 						},
 						{
-							"title": "Zmq Sink",
-							"path": "plugins/sinks/zmq"
+							"title": "Plugins",
+							"path": "operation/cli/plugins"
 						}
 					]
 				},
 				{
-					"title": "Sources",
+					"title": "eKuiper management console",
 					"children": [{
-							"title": "Random Source",
-							"path": "plugins/sources/random"
-						},
+						"title": "Introduction",
+						"path": "operation/manager-ui/overview"
+					},
 						{
-							"title": "Zmq Source",
-							"path": "plugins/sources/zmq"
+							"title": "How to display custom plugins in the installation list of the management console",
+							"path": "operation/manager-ui/plugins_in_manager"
 						}
 					]
 				},
 				{
-					"title": "Custom function",
-					"path": "plugins/functions/functions"
-				}
-			]
-		},
-		{
-			"title": "Operation",
-			"children": [
-				{
-					"title": "Configuration File",
-					"path": "operation/configuration_file"
+					"title": "Rest API",
+					"children": [{
+						"title": "Introduction",
+						"path": "operation/restapi/overview"
+					},
+						{
+							"title": "Streams",
+							"path": "operation/restapi/streams"
+						},
+						{
+							"title": "Tables",
+							"path": "operation/restapi/tables"
+						},
+						{
+							"title": "Rules",
+							"path": "operation/restapi/rules"
+						},
+						{
+							"title": "Plugins",
+							"path": "operation/restapi/plugins"
+						},
+						{
+							"title": "External Services",
+							"path": "operation/restapi/services"
+						}
+					]
 				},
 				{
-					"title": "Authentication",
-					"path": "operation/authentication"
+					"title": "Cross Compile",
+					"path": "operation/compile/cross-compile"
 				}
 			]
 		}

File diff ditekan karena terlalu besar
+ 5 - 13
docs/en_US/README.md


+ 3 - 3
docs/en_US/deploy/openyurt_tutorial.md

@@ -1,7 +1,7 @@
 # Deploy and Manage eKuiper with OpenYurt
 
 LF Edge eKuiper is lightweight IoT data analytics and streaming software which is usually running in the edge side.
-A [manager dashboard](../manager-ui/overview.md) is provided to manage one or multiple eKuiper instances. Typically, the
+A [manager dashboard](../operation/manager-ui/overview.md) is provided to manage one or multiple eKuiper instances. Typically, the
 dashboard is deployed in a cloud node to manage eKuiper instances across many edge nodes.
 
 In most circumstances, the edge node is physically un-accessible from the cloud node due to security or other
@@ -320,7 +320,7 @@ healthy like the below screenshot:
 ![system](./ping.png)
 
 Great! Now we can manage the eKuiper in the edge by the dashboard, as if it was deployed in the cloud. Follow
-the [manager ui tutorial](../manager-ui/overview.md) to create and manage your stream, rule and plugins and any other
+the [manager ui tutorial](../operation/manager-ui/overview.md) to create and manage your stream, rule and plugins and any other
 management works of eKuiper from the cloud.
 
 ## Extended Reading
@@ -330,4 +330,4 @@ If you want to explore more features of eKuiper or OpenYurt, please refer to bel
 - [eKuiper Github code repository](https://github.com/lf-edge/ekuiper/)
 - [eKuiper reference guide](https://github.com/lf-edge/ekuiper/blob/edgex/docs/en_US/reference.md)
 - [OpenYurt tutorials](https://github.com/openyurtio/openyurt/tree/master/docs/tutorial)
-- [eKuiper manager ui tutorial](../manager-ui/overview.md)
+- [eKuiper manager ui tutorial](../operation/manager-ui/overview.md)

+ 7 - 7
docs/en_US/edgex/edgex_rule_engine_tutorial.md

@@ -8,7 +8,7 @@ In EdgeX Geneva, [LF Edge eKuiper - an SQL based rule engine](https://github.com
 - SQL: SQL is where you specify the business logic of streaming data processing. eKuiper provides SQL-like statements to allow you to extract, filter & transform data. 
 - Sink: Sink is used for sending analysis result to a specified target. For example, send analysis result to another MQTT broker, or an HTTP rest address.
 
-![](../arch.png)
+![](../resources/arch.png)
 
 Following three steps are required for using eKuiper.
 
@@ -151,7 +151,7 @@ curl -X POST \
 }'
 ```
 
-For other Rest APIs, please refer to [this doc](../restapi/overview.md).
+For other Rest APIs, please refer to [this doc](../operation/restapi/overview.md).
 
 #### Option 2: Use eKuiper CLI
 
@@ -167,7 +167,7 @@ Use following command to create a stream named ``demo``.
 bin/kuiper create stream demo'() WITH (FORMAT="JSON", TYPE="edgex")'
 ```
 
-For other command line tools, please refer to [this doc](../cli/overview.md).
+For other command line tools, please refer to [this doc](../operation/cli/overview.md).
 
 ------
 
@@ -296,7 +296,7 @@ $ mosquitto_sub -h broker.emqx.io -t result
 ...
 ```
 
-You can also type below command to look at the rule execution status. The corresponding REST API is also available for getting rule status, please check [related document](../restapi/overview.md).
+You can also type below command to look at the rule execution status. The corresponding REST API is also available for getting rule status, please check [related document](../operation/restapi/overview.md).
 
 ```shell
 # bin/kuiper getstatus rule rule1
@@ -335,16 +335,16 @@ In this tutorial,  we introduce a very simple use of EdgeX eKuiper rule engine.
 
 ### More Excecise 
 
-Current rule does not filter any data that are sent to eKuiper, so how to filter data?  Please [drop rule](../cli/rules.md) and change the SQL in previous rule accordingly.  After update the rule file, and then deploy the rule again. Please monitor the ``result`` topic of MQTT broker, and please verify see if the rule works or not.
+Current rule does not filter any data that are sent to eKuiper, so how to filter data?  Please [drop rule](../operation/cli/rules.md) and change the SQL in previous rule accordingly.  After update the rule file, and then deploy the rule again. Please monitor the ``result`` topic of MQTT broker, and please verify see if the rule works or not.
 
 #### Extended Reading
 
-- Starting from eKuiper 0.9.1 version, [a visualized web UI](../manager-ui/overview.md) is released with a separated Docker image. You can manage the streams, rules and plugins through web page. 
+- Starting from eKuiper 0.9.1 version, [a visualized web UI](../operation/manager-ui/overview.md) is released with a separated Docker image. You can manage the streams, rules and plugins through web page. 
 - Read [EdgeX source](../rules/sources/edgex.md) for more detailed information of configurations and data type conversion.
 - [How to use meta function to extract additional data from EdgeX message bus?](edgex_meta.md) There are some other information are sent along with device service, such as event created time, event id etc. If you want to use such metadata information in your SQL statements, please refer to this doc.
 - [Use Golang template to customize analaysis result in eKuiper](../rules/data_template.md) Before the analysis result is sent to different sinks, the data template can be used to make more processing. You can refer to this doc for more scenarios of using data templates.
 - [EdgeX message bus sink doc](../rules/sinks/edgex.md). The document describes how to use EdgeX message bus sink. If you'd like to have your analysis result be consumed by other EdgeX services, you can send analysis data with EdgeX data format through this sink, and other EdgeX services can subscribe new message bus exposed by eKuiper sink.
-- [eKuiper plugin development tutorial](../plugins/plugins_tutorial.md): eKuiper plugin is based on the plugin mechanism of Golang, users can build loosely-coupled plugin applications,  dynamic loading and binding when it is running. You can refer to this article if you're interested in eKuiper plugin development.
+- [eKuiper plugin development tutorial](../extension/native/develop/plugins_tutorial.md): eKuiper plugin is based on the plugin mechanism of Golang, users can build loosely-coupled plugin applications,  dynamic loading and binding when it is running. You can refer to this article if you're interested in eKuiper plugin development.
 
  If you want to explore more features of eKuiper, please refer to below resources.
 

+ 2 - 2
docs/en_US/extension/external/external_func.md

@@ -190,7 +190,7 @@ Thus, the google api proto files must be in the imported path. eKuiper already s
 
 In the external service configuration, there are 1 json file and at least 1 schema file(.proto) to define the function mapping. This will define a 3 layer mappings.
 
-1. eKuiper external service layer: it is defined by the file name of the json. It will be used as a key for the external service in the [REST API](../../restapi/services.md) for the describe, delete and update of the service as a whole.
+1. eKuiper external service layer: it is defined by the file name of the json. It will be used as a key for the external service in the [REST API](../../operation/restapi/services.md) for the describe, delete and update of the service as a whole.
 2. Interface layer: it is defined in the `interfaces` section of the json file. This is a virtual layer to group functions with the same schemas so that the shared properties such as address, schema file can be specified only once.
 3. eKuiper function layer: it is defined in the proto file as `rpc`. Notice that, the proto rpcs must be defined under a service section in protobuf. There is no restriction for the name of proto service. The function name is the same as the rpc name in the proto by default. But the user can override the mapping name in the json files's interfaces -> functions section.
 
@@ -239,7 +239,7 @@ When eKuiper is started, it will read and register the external service configur
    ```
    Note: After eKuiper is started, it **cannot** automatically load the system by modifying the configuration file. If you need to update dynamically, please use the REST service.
 
-For dynamic registration and management of services, please refer to [External Service Management API](../../restapi/services.md).
+For dynamic registration and management of services, please refer to [External Service Management API](../../operation/restapi/services.md).
 
 ## Usage
 

+ 5 - 5
docs/en_US/extension/native/function.md

@@ -1,6 +1,6 @@
 # Function Extension
 
-In the eKuiper SQL syntax, [many built-in functions](../../sqls/built-in_functions.md) are provided to server for various reusable business logic. However, the users still likely need various reusable business logic which are not covered by the built ins. The function extension is presented to customized the functions.
+In the eKuiper SQL syntax, [many built-in functions](../../../sqls/built-in_functions.md) are provided to server for various reusable business logic. However, the users still likely need various reusable business logic which are not covered by the built ins. The function extension is presented to customized the functions.
 
 ## Developing
 
@@ -8,7 +8,7 @@ In the eKuiper SQL syntax, [many built-in functions](../../sqls/built-in_functio
 
 To develop a function for eKuiper is to implement [api.Function](https://github.com/lf-edge/ekuiper/blob/master/pkg/api/stream.go) interface and export it as a golang plugin.
 
-Before starting the development, you must [setup the environment for golang plugin](../overview.md#setup-the-plugin-developing-environment). 
+Before starting the development, you must [setup the environment for golang plugin](../../overview.md#setup-the-plugin-developing-environment). 
 
 To develop a function, the _Validate_ method is firstly to be implemented. This method will be called during SQL validation. In this method, a slice of [xsql.Expr](https://github.com/lf-edge/ekuiper/blob/master/pkg/ast/expr.go) is passed as the parameter that contains the arguments for this function in the runtime. The developer can do a validation against it to check the argument count and type etc. If validation is successful, return nil. Otherwise, return an error object.
 
@@ -30,7 +30,7 @@ The main task for a Function is to implement _exec_ method. The method will be l
 Exec(args []interface{}) (interface{}, bool)
 ```  
 
-As the function itself is a plugin, it must be in the main package. Given the function struct name is myFunction. At last of the file, the source must be exported as a symbol as below. There are [2 types of exported symbol supported](../overview.md#plugin-development). For function extension, if there is no internal state, it is recommended to export a singleton instance.
+As the function itself is a plugin, it must be in the main package. Given the function struct name is myFunction. At last of the file, the source must be exported as a symbol as below. There are [2 types of exported symbol supported](../../overview.md#plugin-development). For function extension, if there is no internal state, it is recommended to export a singleton instance.
 
 ```go
 var MyFunction myFunction
@@ -64,8 +64,8 @@ go build -trimpath -modfile extensions.mod --buildmode=plugin -o plugins/functio
 
 eKuiper will load plugins in the plugin folders automatically. The auto loaded function plugin assumes there is a function named the same as the plugin name. If multiple functions are exported, users need to explicitly register them to make them available. There are two ways to register the functions.
 
-1. In development environment, we recommend to build plugin .so file directly into the plugin folder so that eKuiper can auto load it. Then call [CLI register functions command](../../cli/plugins.md#register-functions) or [REST register functions API](../../restapi/plugins.md#register-functions).
-2. In production environment, [package the plugin into zip file](../../plugins/plugins_tutorial.md#plugin-deployment-1), then call [CLI function plugin create command](../../cli/plugins.md#create-a-plugin) or [REST function plugin create API](../../restapi/plugins.md#create-a-plugin) with functions list specified.
+1. In development environment, we recommend to build plugin .so file directly into the plugin folder so that eKuiper can auto load it. Then call [CLI register functions command](../../../operation/cli/plugins.md#register-functions) or [REST register functions API](../../../operation/restapi/plugins.md#register-functions).
+2. In production environment, [package the plugin into zip file](plugins_tutorial.md#plugin-deployment-1), then call [CLI function plugin create command](../../../operation/cli/plugins.md#create-a-plugin) or [REST function plugin create API](../../../operation/restapi/plugins.md#create-a-plugin) with functions list specified.
 
 ## Usage
 

+ 11 - 11
docs/en_US/plugins/overview.md

@@ -12,8 +12,8 @@ Developers of eKuiper plugin can specify metadata files during the development p
 
 | Name                        | Descriptiom                                                  | Remarks                                                   |
 | --------------------------- | ------------------------------------------------------------ | --------------------------------------------------------- |
-| [zmq](sources/zmq.md)       | The plugin listens to Zero Mq messages and sends them to the eKuiper stream | Sample of plugin, not available in production environment |
-| [random](sources/random.md) | The plugin generates messages according to the specified pattern | Sample of plugin, not available in production environment |
+| [zmq](../sources/zmq.md)       | The plugin listens to Zero Mq messages and sends them to the eKuiper stream | Sample of plugin, not available in production environment |
+| [random](../sources/random.md) | The plugin generates messages according to the specified pattern | Sample of plugin, not available in production environment |
 
 ### source metadata file format
 
@@ -159,10 +159,10 @@ The following is a sample of metadata file.
 
 | Name                        | Description                                                  | Remarks                                                   |
 | --------------------------- | ------------------------------------------------------------ | --------------------------------------------------------- |
-| [file](sinks/file.md)       | The plugin saves the analysis results to a specified file system | Sample of plugin, not available in production environment |
-| [zmq](sinks/zmq.md)         | The plugin sends the analysis results to the topic of Zero Mq | Sample of plugin, not available in production environment |
-| [Influxdb](sinks/influx.md) | The plugin sends the analysis results to InfluxDB            | Provided by [@smart33690](https://github.com/smart33690)  |
-| [TDengine](sinks/tdengine.md)   | The plugin sends the analysis results to TDengine            |                                                           |
+| [file](../sinks/file.md)       | The plugin saves the analysis results to a specified file system | Sample of plugin, not available in production environment |
+| [zmq](../sinks/zmq.md)         | The plugin sends the analysis results to the topic of Zero Mq | Sample of plugin, not available in production environment |
+| [Influxdb](../sinks/influx.md) | The plugin sends the analysis results to InfluxDB            | Provided by [@smart33690](https://github.com/smart33690)  |
+| [TDengine](../sinks/tdengine.md)   | The plugin sends the analysis results to TDengine            |                                                           |
 
 ### sink metadata file format
 
@@ -278,11 +278,11 @@ The following is a sample of metadata file.
 
 | Name                                          | Description                                                  | Remarks                                                 |
 | --------------------------------------------- | ------------------------------------------------------------ | ------------------------------------------------------- |
-| [echo](functions/functions.md)                | Output parameter value as it is                              | Plugin sample, not available for production environment |
-| [countPlusOne](functions/functions.md)        | Output the value of the parameter length plus one            | Plugin sample, not available for production environment |
-| [accumulateWordCount](functions/functions.md) | The function counts how many words there are                 | Plugin sample, not available for production environment |
-| [resize](functions/functions.md)              | Create a scaled image with new dimensions (width, height). If width or height is set to 0, it is set to the reserved value of aspect ratio | Plugin sample, not available for production environment |
-| [thumbnail](functions/functions.md)           | Reduce the image that retains the aspect ratio to the maximum size (maxWidth, maxHeight). | Plugin sample, not available for production environment |
+| [echo](../functions/functions.md)                | Output parameter value as it is                              | Plugin sample, not available for production environment |
+| [countPlusOne](../functions/functions.md)        | Output the value of the parameter length plus one            | Plugin sample, not available for production environment |
+| [accumulateWordCount](../functions/functions.md) | The function counts how many words there are                 | Plugin sample, not available for production environment |
+| [resize](../functions/functions.md)              | Create a scaled image with new dimensions (width, height). If width or height is set to 0, it is set to the reserved value of aspect ratio | Plugin sample, not available for production environment |
+| [thumbnail](../functions/functions.md)           | Reduce the image that retains the aspect ratio to the maximum size (maxWidth, maxHeight). | Plugin sample, not available for production environment |
 
 eKuiper has many built-in functions that can perform calculations on data. (Refer to https://github.com/lf-edge/ekuiper/blob/master/docs/zh_CN/sqls/built-in_functions.md for specific documentation)
 

+ 20 - 18
docs/en_US/plugins/plugins_tutorial.md

@@ -27,7 +27,7 @@ These limitations are relatively strict, and they almost require compiling and r
 ## Plugin development 
 
 Developing plugin is generally carried out in the development environment. eKuiper plugins will be deployed to the production environment after passing debugging and running the development environment. Since the limitation of Golang plugin system, here we provide two practical ways for plugin developer to set up environment for eKuiper plugin: **create the plugin project inside eKuiper** and **create the plugin project outside eKuiper**.
-The eKuiper plugin has three types: **sources**,**functions** and **sinks**, for the detailed method of plugin development: [LF Edge eKuiper extension](../extension/overview.md). This article will take the Sink plugin as an example to introduce the process of plugin development and deployment. We will develop a basic MySql sink, for write stream output data to the MySql database. The workflow list as followings:
+The eKuiper plugin has three types: **sources**,**functions** and **sinks**, for the detailed method of plugin development: [LF Edge eKuiper extension](../../overview.md). This article will take the Sink plugin as an example to introduce the process of plugin development and deployment. We will develop a basic MySql sink, for write stream output data to the MySql database. The workflow list as followings:
 
 - Create the plugin project
 - Create file mysql.go under the sinks directory
@@ -54,7 +54,7 @@ Next users need edit the mysql.go and implement the plugin. The complete source
 ```go
 package main
 
-// This is a simplified mysql sink which is for test and tutorial only
+// This is a simplified mysql sink which is for test and develop only
 
 import (
 	"database/sql"
@@ -105,22 +105,24 @@ func (m *mysqlSink) Open(ctx api.StreamContext) (err error) {
 // This is a simplified version of data collect which just insert the received string into hardcoded name column of the db
 func (m *mysqlSink) Collect(ctx api.StreamContext, item interface{}) error {
 	logger := ctx.GetLogger()
-	if v, ok := item.([]byte); ok {
-		//TODO in production: deal with various data type of the unmarshalled item.
-		// It is a json string of []map[string]interface{} by default;
-		// And it is possible to be any other kind of data if the sink `dataTemplate` is set
-		logger.Debugf("mysql sink receive %s", item)
-		//TODO hard coded column here. In production, we'd better get the column/value pair from the item
-		sql := fmt.Sprintf("INSERT INTO %s (`name`) VALUES ('%s')", m.conf.Table, v)
-		logger.Debugf(sql)
-		insert, err := m.db.Query(sql)
-		if err != nil {
-			return err
-		}
-		defer insert.Close()
-	} else {
-		logger.Debug("mysql sink receive non byte data")
+	v, _, err := ctx.TransformOutput(data)
+	if err != nil {
+		logger.Error(err)
+		return err
+	}
+
+	//TODO 生产环境中需要处理item unmarshall后的各种类型。
+	// 默认的类型为 []map[string]interface{}
+	// 如果sink的`dataTemplate`属性有设置,则可能为各种其他的类型	
+	logger.Debugf("mysql sink receive %s", item)
+	//TODO 此处列名写死。生产环境中一般可从item中的键值对获取列名
+	sql := fmt.Sprintf("INSERT INTO %s (`name`) VALUES ('%s')", m.conf.Table, v)
+	logger.Debugf(sql)
+	insert, err := m.db.Query(sql)
+	if err != nil {
+		return err
 	}
+	defer insert.Close()
 	return nil
 }
 
@@ -340,7 +342,7 @@ Please refer [Docker compile](#Docker-compile) for the compilation process. The
 Users can use [REST API](https://github.com/lf-edge/ekuiper/blob/master/docs/en_US/restapi/plugins.md) or [CLI](https://github.com/lf-edge/ekuiper/blob/master/docs/en_US/cli/plugins.md) to manage plugins. The following takes the REST API as an example to deploy the plugin compiled in the previous step to the production environment. 
 
 1. Package the plugin and put it into the http server. Package the file `.so` of the plugin compiled in the previous step and the default configuration file (only required for source) `.yaml` into a `.zip` file (assuming that the file is `mysqlSink.zip`). Put this file into the http server that the production environment can also access. 
-    - Some plugin may depend on libs that are not installed on eKuiper environment. The user can either install them manually in the eKuiper server or put the install script and dependencies in the plugin zip and let the plugin management system do the installation. Please refer to [ Plugin File Format](../restapi/plugins.md#plugin-file-format) for detail.
+    - Some plugin may depend on libs that are not installed on eKuiper environment. The user can either install them manually in the eKuiper server or put the install script and dependencies in the plugin zip and let the plugin management system do the installation. Please refer to [ Plugin File Format](../../../operation/restapi/plugins.md#plugin-file-format) for detail.
 2. Use REST API to create plugins:
    ```
    POST http://{$production_eKuiper_ip}:9081/plugins/sinks

+ 7 - 7
docs/en_US/extension/native/sink.md

@@ -1,6 +1,6 @@
 # Sink Extension
 
-Sink feed data from eKuiper into external systems. eKuiper has built-in sink support for [MQTT broker](../../rules/sinks/mqtt.md) and [log sink](../../rules/sinks/log.md). There are still needs to publish data to various external systems include messaging systems and database etc. Sink extension is presented to meet this requirement.
+Sink feed data from eKuiper into external systems. eKuiper has built-in sink support for [MQTT broker](../../../rules/sinks/mqtt.md) and [log sink](../../../rules/sinks/log.md). There are still needs to publish data to various external systems include messaging systems and database etc. Sink extension is presented to meet this requirement.
 
 ## Developing
 
@@ -8,9 +8,9 @@ Sink feed data from eKuiper into external systems. eKuiper has built-in sink sup
 
 To develop a sink for eKuiper is to implement [api.Sink](https://github.com/lf-edge/ekuiper/blob/master/pkg/api/stream.go) interface and export it as a golang plugin.
 
-Before starting the development, you must [setup the environment for golang plugin](../overview.md#setup-the-plugin-developing-environment). 
+Before starting the development, you must [setup the environment for golang plugin](../../overview.md#setup-the-plugin-developing-environment). 
 
-To develop a sink, the _Configure_ method must be implemented. This method will be called once the sink is initialized. In this method, a map that contains the configuration in the [rule actions definition](../../rules/overview.md#actions) is passed in. Typically, there will be information such as host, port, user and password of the external system. You can use this map to initialize this sink.
+To develop a sink, the _Configure_ method must be implemented. This method will be called once the sink is initialized. In this method, a map that contains the configuration in the [rule actions definition](../../../rules/overview.md#actions) is passed in. Typically, there will be information such as host, port, user and password of the external system. You can use this map to initialize this sink.
 
 ```go
 //Called during initialization. Configure the sink with the properties from action definition 
@@ -28,7 +28,7 @@ The main task for a Sink is to implement _collect_ method. The function will be
 
 Most of the time, the map content will be the selective fields. But if `sendError` property is enabled and there are errors happen in the rule, the map content will be like `{"error":"error message here"}`.
 
-The developer can fetch the transformed result from the context method `ctx.TransformOutput(data)`. The return values are the transformed value of `[]byte` type. Currently, it will be transformed to the json byte array be default or formatted with the set [`dataTemlate` property](../../rules/overview.md#data-template). If the value is transformed by dataTemplate, the second return value will be true. 
+The developer can fetch the transformed result from the context method `ctx.TransformOutput(data)`. The return values are the transformed value of `[]byte` type. Currently, it will be transformed to the json byte array be default or formatted with the set [`dataTemlate` property](../../../rules/overview.md#data-template). If the value is transformed by dataTemplate, the second return value will be true. 
 
 The developer can return any errors. However, to leverage the retry feature of eKuiper, the developer must return an error whose message starts with "io error".
 
@@ -43,7 +43,7 @@ The last method to implement is _Close_ which literally close the connection. It
 Close(ctx StreamContext) error
 ```
 
-As the sink itself is a plugin, it must be in the main package. Given the sink struct name is mySink. At last of the file, the sink must be exported as a symbol as below. There are [2 types of exported symbol supported](../overview.md#plugin-development). For sink extension, states are usually needed, so it is recommended to export a constructor function.
+As the sink itself is a plugin, it must be in the main package. Given the sink struct name is mySink. At last of the file, the sink must be exported as a symbol as below. There are [2 types of exported symbol supported](../../overview.md#plugin-development). For sink extension, states are usually needed, so it is recommended to export a constructor function.
 
 ```go
 func MySink() api.Sink {
@@ -55,7 +55,7 @@ The [Memory Sink](https://github.com/lf-edge/ekuiper/blob/master/extensions/sink
 
 #### Parse dynamic properties
 
-For customized sink plugins, users may still want to support [dynamic properties](../../rules/overview.md#dynamic-properties) like the built-in ones.
+For customized sink plugins, users may still want to support [dynamic properties](../../../rules/overview.md#dynamic-properties) like the built-in ones.
 
 In the context object, a function `ParseDynamicProp` is provided to support the parsing of the dynamic property syntax. In the customized sink, developers can specify some properties to be dynamic according to the business logic. And in the plugin code, use this function to parse the user input in the collect function or elsewhere.
 
@@ -74,7 +74,7 @@ go build -trimpath -modfile extensions.mod --buildmode=plugin -o extensions/sink
 
 ### Usage
 
-The customized sink is specified in a [actions definition](../../rules/overview.md#actions). Its name is used as the key of the action. The configuration is the value.
+The customized sink is specified in a [actions definition](../../../rules/overview.md#actions). Its name is used as the key of the action. The configuration is the value.
 
 If you have developed a sink implementation MySink, you should have:
 1. In the plugin file, symbol MySink is exported.

File diff ditekan karena terlalu besar
+ 7 - 7
docs/en_US/extension/native/source.md


+ 1 - 1
docs/en_US/plugins/functions/functions.md

@@ -1,6 +1,6 @@
 # Custom function
 
-eKuiper can customize functions. For the development, compilation and use of functions, please [see here](../../extension/native/function.md).
+eKuiper can customize functions. For the development, compilation and use of functions, please [see here](../develop/function.md).
 
 ## echo plugin
 

+ 1 - 1
docs/en_US/plugins/functions/tensorflow_lite_tutorial.md

@@ -58,7 +58,7 @@ var LabelImage = labelImage{
 }
 ```
 
-Check [this tutorial](../plugins_tutorial.md) for detail steps of creating eKuiper plugins.  Please refer to [labelImage.go](https://github.com/lf-edge/ekuiper/blob/master/extensions/functions/labelImage/labelImage.go) for the full source code.
+Check [this tutorial](../develop/plugins_tutorial.md) for detail steps of creating eKuiper plugins.  Please refer to [labelImage.go](https://github.com/lf-edge/ekuiper/blob/master/extensions/functions/labelImage/labelImage.go) for the full source code.
 
 ## Build and install the plugin
 

+ 4 - 4
docs/en_US/extension/native/overview.md

@@ -8,9 +8,9 @@ eKuiper allows user to customize the different kinds of extensions by the native
 
 Please read the following to learn how to implement different extensions.
 
-- [Source extension](./source.md)
-- [Sink/Action extension](./sink.md)
-- [Function extension](./function.md)
+- [Source extension](develop/source.md)
+- [Sink/Action extension](develop/sink.md)
+- [Function extension](develop/function.md)
 
 ## Naming
 
@@ -46,7 +46,7 @@ func (f *accumulateWordCountFunc) Exec(args []interface{}, ctx api.FunctionConte
 
 ## Runtime dependencies
 
-Some plugin may need to access dependencies in the file system. Those files is put under {{eKuiperPath}}/etc/{{pluginType}}/{{pluginName}} directory. When packaging the plugin, put those files in [etc directory](../../restapi/plugins.md#plugin-file-format). After installation, they will be moved to the recommended place.
+Some plugin may need to access dependencies in the file system. Those files is put under {{eKuiperPath}}/etc/{{pluginType}}/{{pluginName}} directory. When packaging the plugin, put those files in [etc directory](../../operation/restapi/plugins.md#plugin-file-format). After installation, they will be moved to the recommended place.
 
 In the plugin source code, developers can access the dependencies of file system by getting the eKuiper root path from the context:
 

docs/en_US/plugins/sinks/file.md → docs/en_US/extension/native/sinks/file.md


docs/en_US/plugins/sinks/image.md → docs/en_US/extension/native/sinks/image.md


docs/en_US/plugins/sinks/influx.md → docs/en_US/extension/native/sinks/influx.md


docs/en_US/plugins/sinks/redis.md → docs/en_US/extension/native/sinks/redis.md


docs/en_US/plugins/sinks/tdengine.md → docs/en_US/extension/native/sinks/tdengine.md


docs/en_US/plugins/sinks/zmq.md → docs/en_US/extension/native/sinks/zmq.md


+ 1 - 1
docs/en_US/plugins/sources/random.md

@@ -53,7 +53,7 @@ An int value. If it is a positive number, the source will not issue the messages
 
 ## Override the default settings
 
-If you have a specific connection that need to overwrite the default settings, you can create a customized section. In the previous sample, we create a specific setting named with ``test``.  Then you can specify the configuration with option ``CONF_KEY`` when creating the stream definition (see [stream specs](../../sqls/streams.md) for more info).
+If you have a specific connection that need to overwrite the default settings, you can create a customized section. In the previous sample, we create a specific setting named with ``test``.  Then you can specify the configuration with option ``CONF_KEY`` when creating the stream definition (see [stream specs](../../../sqls/streams.md) for more info).
 
 ## Sample usage
 

+ 1 - 1
docs/en_US/plugins/sources/zmq.md

@@ -33,7 +33,7 @@ The url of the Zero Mq server that the source will subscribe to.
 
 ## Override the default settings
 
-If you have a specific connection that need to overwrite the default settings, you can create a customized section. In the previous sample, we create a specific setting named with ``test``.  Then you can specify the configuration with option ``CONF_KEY`` when creating the stream definition (see [stream specs](../../sqls/streams.md) for more info).
+If you have a specific connection that need to overwrite the default settings, you can create a customized section. In the previous sample, we create a specific setting named with ``test``.  Then you can specify the configuration with option ``CONF_KEY`` when creating the stream definition (see [stream specs](../../../sqls/streams.md) for more info).
 
 ## Sample usage
 

+ 3 - 3
docs/en_US/extension/portable/go_sdk.md

@@ -10,7 +10,7 @@ As the GO SDK provides almost identical API interfaces, the user's source, sink
 
 To develop the portable plugin, users need to depend on `github.com/lf-edge/ekuiper/sdk/go` instead of eKuiper main project. Then to implement source, just implement the interfaces in package `github.com/lf-edge/ekuiper/sdk/go/api`.
 
-For source, implement the source interface as below as the same as described in [native plugin source](../native/source.md).
+For source, implement the source interface as below as the same as described in [native plugin source](../native/develop/source.md).
 
 ```go
 type Source interface {
@@ -22,7 +22,7 @@ type Source interface {
 }
 ```
 
-For sink, implement the sink interface as below as the same as described in [native plugin sink](../native/sink.md).
+For sink, implement the sink interface as below as the same as described in [native plugin sink](../native/develop/sink.md).
 
 ```go
 type Sink interface {
@@ -36,7 +36,7 @@ type Sink interface {
 }
 ```
 
-For function, implement the function interface as below as the same as described in [native plugin function](../native/function.md).
+For function, implement the function interface as below as the same as described in [native plugin function](../native/develop/function.md).
 
 ```go
 type Function interface {

+ 1 - 1
docs/en_US/extension/portable/overview.md

@@ -78,7 +78,7 @@ A plugin can contain multiple sources, sinks and functions, define them in the c
 
 The portable plugins can be automatically loaded in start up by putting the content(the json, the executable and all supportive files) inside `plugins/portables/${pluginName}` and the configurations to the corresponding directories under `etc`.
 
-To manage the portable plugins in runtime, we can use the [REST](../../restapi/plugins.md) or [CLI](../../cli/plugins.md) commands.
+To manage the portable plugins in runtime, we can use the [REST](../../operation/restapi/plugins.md) or [CLI](../../operation/cli/plugins.md) commands.
 
 ## Restrictions
 

+ 1 - 1
docs/en_US/extension/portable/python_sdk.md

@@ -6,7 +6,7 @@ To run python plugin, there are two prerequisites in the runtime environment:
 1. Install Python 3.x environment.
 2. Install nng and ekuiper package by `pip install nng ekuiper`.
 
-By default, the eKuiper portable plugin runtime will run python script with `python userscript.py`. If users have multiple python instance or an alternative python executable command, they can specify the python command in [the configuration file](../../operation/configuration_file.md#portable-plugin-configurations).
+By default, the eKuiper portable plugin runtime will run python script with `python userscript.py`. If users have multiple python instance or an alternative python executable command, they can specify the python command in [the configuration file](../../operation/config/configuration_file.md#portable-plugin-configurations).
 
 ## Development
 

+ 3 - 3
docs/en_US/getting_started.md

@@ -191,15 +191,15 @@ Check the stream log located at "`log/stream.log`", and you would see the filter
 ```
 
 ### Managing the rules
-You can use command line tool to stop the rule for a while and restart it and other management work. The rule name is the identifier of a rule. Check [Rule Management CLI](cli/rules.md) for detail
+You can use command line tool to stop the rule for a while and restart it and other management work. The rule name is the identifier of a rule. Check [Rule Management CLI](operation/cli/rules.md) for detail
 ```sh
 $ bin/kuiper stop rule ruleDemo
 ```
 
 Refer to the following topics for guidance on using the eKuiper.
 
-- [Command line interface tools - CLI](./cli/overview.md)
+- [Command line interface tools - CLI](operation/cli/overview.md)
 - [eKuiper SQL reference](./sqls/overview.md)
 - [Rules](./rules/overview.md)
 - [Extend eKuiper](./extension/overview.md)
-- [Plugins](./plugins/overview.md)
+- [Plugins](extension/native/develop/overview.md)

+ 1 - 1
docs/en_US/cli/overview.md

@@ -3,7 +3,7 @@ The eKuiper CLI (command line interface) tools provides streams and rules manage
 The eKuiper CLI acts as a client to the eKuiper server. The eKuiper server runs the engine that executes the stream or rule queries. This includes processing stream or rule definitions, manage rule status and io.
 
 *eKuiper CLI Architecture*
-![CLI Arch](./resources/arch.png)
+![CLI Arch](resources/arch.png)
 
 - [Streams](streams.md)
 - [Rules](rules.md)

+ 1 - 1
docs/en_US/cli/plugins.md

@@ -50,7 +50,7 @@ To create a function plugin with multiple exported functions, specify the export
 ### parameters
 1. plugin_type: the type of the plugin. Available values are `["source", "sink", "function", "portable"]`
 2. plugin_name: a unique name of the plugin. The name must be the same as the camel case version of the plugin with lowercase first letter. For example, if the exported plugin name is `Random`, then the name of this plugin is `random`.
-3. file: the url of the plugin files. It must be a zip file with: a compiled so file and the yaml file(only required for sources). The name of the files must match the name of the plugin. Please check [Extension](../extension/overview.md) for the naming rule.
+3. file: the url of the plugin files. It must be a zip file with: a compiled so file and the yaml file(only required for sources). The name of the files must match the name of the plugin. Please check [Extension](../../extension/overview.md) for the naming rule.
 4. functions: only apply to function plugin which exports multiple functions. The property specifies the exported function names.
 
 ## show plugins

+ 0 - 0
docs/zh_CN/cli/resources/arch.png


+ 1 - 1
docs/en_US/cli/rules.md

@@ -4,7 +4,7 @@ The eKuiper rule command line tools allows you to manage rules, such as create,
 
 ## create a rule
 
-The command is used for creating a rule.  The rule's definition is specified with JSON format, read [rule](../rules/overview.md) for more detailed information.
+The command is used for creating a rule.  The rule's definition is specified with JSON format, read [rule](../../rules/overview.md) for more detailed information.
 
 ```shell
 create rule $rule_name '$rule_json' | create rule $rule_name -f $rule_def_file

+ 2 - 2
docs/en_US/cli/streams.md

@@ -4,7 +4,7 @@ The eKuiper stream command line tools allows you to manage the streams, such as
 
 ## create a stream
 
-The command is used for creating a stream. For more detailed information of stream definition, please refer to [streams](../sqls/streams.md).
+The command is used for creating a stream. For more detailed information of stream definition, please refer to [streams](../../sqls/streams.md).
 
 ```shell
 create stream $stream_name '$stream_def' | create stream -f $stream_def_file
@@ -103,7 +103,7 @@ Sample:
 kuiper > 
 ```
 
-After typing ``query`` sub-command, it prompts ``kuiper > ``, then type SQLs (see [eKuiper SQL reference](../sqls/overview.md) for how to use eKuiper SQL) in the command prompt and press enter. 
+After typing ``query`` sub-command, it prompts ``kuiper > ``, then type SQLs (see [eKuiper SQL reference](../../sqls/overview.md) for how to use eKuiper SQL) in the command prompt and press enter. 
 
 The results will be print in the console.
 

+ 1 - 1
docs/en_US/cli/tables.md

@@ -4,7 +4,7 @@ The eKuiper table command line tools allows you to manage the tables, such as cr
 
 ## create a table
 
-The command is used for creating a table. For more detailed information of table definition, please refer to [tables](../sqls/tables.md).
+The command is used for creating a table. For more detailed information of table definition, please refer to [tables](../../sqls/tables.md).
 
 ```shell
 create table $table_name $table_def | create table -f $table_def_file

+ 18 - 0
docs/en_US/operation/compile/compile.md

@@ -0,0 +1,18 @@
+#### Compile from source code
+
++ Binary:
+
+  - Binary: `$ make`
+
+  - Binary files that support EdgeX: `$ make build_with_edgex`
+
++ Packages: `` $ make pkg``
+
+  - Packages: `$ make pkg`
+
+  - Packages files that support EdgeX: `$ make pkg_with_edgex`
+
++ Docker images: `$ make docker`
+
+  > Docker images support EdgeX by default
+

docs/en_US/cross-compile.md → docs/en_US/operation/compile/cross-compile.md


docs/en_US/operation/authentication.md → docs/en_US/operation/config/authentication.md


+ 2 - 2
docs/en_US/operation/configuration_file.md

@@ -70,7 +70,7 @@ The port for the rest api http server to listen to.
 The tls cert file path and key file path setting. If restTls is not set, the rest api server will listen on http. Otherwise, it will listen on https.
 
 ## authentication 
-eKuiper will check the ``Token`` for rest api when ``authentication`` option is true. please check this file for [more info](./authentication.md).
+eKuiper will check the ``Token`` for rest api when ``authentication`` option is true. please check this file for [more info](authentication.md).
 
 ```yaml
 basic:
@@ -190,7 +190,7 @@ It has properties
 * connectionSelector - reuse the connection info defined in etc/connections/connection.yaml, mainly used for edgeX redis in secure mode
   * only applicable to redis connection information
   * the server, port and password in connection info will overwrite the host port and password above
-  * [more info](../rules/sources/edgex.md#connectionselector)
+  * [more info](../../rules/sources/edgex.md#connectionselector)
     
 
 ### Config

+ 2 - 2
docs/en_US/operation/install/overview.md

@@ -2,7 +2,7 @@
 
 Please download the installation package, and refer to below for the instruction of installing for different operate systems.
 
-- [Cent-OS](cent-os.md)
+- [Cent-OS](./cent-os.md)
 - ...
 
 ## Installation structure 
@@ -43,5 +43,5 @@ All of the log files are under this folder. The default log file name is ``strea
 ## Next steps
 
 - See [getting started](../../getting_started.md) for your first eKuiper experience.
-- See [CLI tools](../../cli/overview.md) for usage of eKuiper CLI tools.
+- See [CLI tools](../cli/overview.md) for usage of eKuiper CLI tools.
 

File diff ditekan karena terlalu besar
+ 12 - 12
docs/en_US/manager-ui/overview.md


File diff ditekan karena terlalu besar
+ 12 - 12
docs/en_US/manager-ui/plugins_in_manager.md


docs/en_US/manager-ui/resources/add_service.png → docs/en_US/operation/manager-ui/resources/add_service.png


docs/zh_CN/manager-ui/resources/arch.png → docs/en_US/operation/manager-ui/resources/arch.png


docs/en_US/manager-ui/resources/create_conf.png → docs/en_US/operation/manager-ui/resources/create_conf.png


docs/en_US/manager-ui/resources/function_about.png → docs/en_US/operation/manager-ui/resources/function_about.png


docs/en_US/manager-ui/resources/login.png → docs/en_US/operation/manager-ui/resources/login.png


docs/en_US/manager-ui/resources/new_plugin.png → docs/en_US/operation/manager-ui/resources/new_plugin.png


docs/en_US/manager-ui/resources/new_rule.png → docs/en_US/operation/manager-ui/resources/new_rule.png


docs/en_US/manager-ui/resources/new_stream.png → docs/en_US/operation/manager-ui/resources/new_stream.png


docs/en_US/manager-ui/resources/rule_op.png → docs/en_US/operation/manager-ui/resources/rule_op.png


docs/en_US/manager-ui/resources/sink_about.png → docs/en_US/operation/manager-ui/resources/sink_about.png


docs/en_US/manager-ui/resources/sink_cf.png → docs/en_US/operation/manager-ui/resources/sink_cf.png


docs/en_US/manager-ui/resources/sink_conf.png → docs/en_US/operation/manager-ui/resources/sink_conf.png


docs/en_US/manager-ui/resources/source_about.png → docs/en_US/operation/manager-ui/resources/source_about.png


docs/en_US/manager-ui/resources/source_cf.png → docs/en_US/operation/manager-ui/resources/source_cf.png


docs/en_US/manager-ui/resources/source_conf.png → docs/en_US/operation/manager-ui/resources/source_conf.png


docs/en_US/manager-ui/resources/source_confkey.png → docs/en_US/operation/manager-ui/resources/source_confkey.png


+ 5 - 1
docs/en_US/operation/overview.md

@@ -1,6 +1,10 @@
 
 eKuiper is developed by Golang, and it can be run at different operating systems. See below docs for how to install and operating eKuiper.
 
+- [Compile instruction](compile/compile.md)
 - [Install instruction](install/overview.md)
-- [Configuration File](./configuration_file.md)
+- [Configuration File](config/configuration_file.md)
+- [Cli management](cli/overview.md)
+- [UI management](manager-ui/overview.md)
+- [rest api management](restapi/overview.md)
 

docs/en_US/restapi/overview.md → docs/en_US/operation/restapi/overview.md


File diff ditekan karena terlalu besar
+ 2 - 2
docs/en_US/restapi/plugins.md


docs/en_US/restapi/rules.md → docs/en_US/operation/restapi/rules.md


docs/en_US/restapi/services.md → docs/en_US/operation/restapi/services.md


+ 1 - 1
docs/en_US/restapi/streams.md

@@ -4,7 +4,7 @@ The eKuiper REST api for streams allows you to manage the streams, such as creat
 
 ## create a stream
 
-The API is used for creating a stream. For more detailed information of stream definition, please refer to [streams](../sqls/streams.md).
+The API is used for creating a stream. For more detailed information of stream definition, please refer to [streams](../../sqls/streams.md).
 
 ```shell
 POST http://localhost:9081/streams

+ 1 - 1
docs/en_US/restapi/tables.md

@@ -4,7 +4,7 @@ The eKuiper REST api for tables allows you to manage the tables, such as create,
 
 ## create a table
 
-The API is used for creating a table. For more detailed information of table definition, please refer to [tables](../sqls/tables.md).
+The API is used for creating a table. For more detailed information of table definition, please refer to [tables](../../sqls/tables.md).
 
 ```shell
 POST http://localhost:9081/tables

+ 4 - 2
docs/en_US/reference.md

@@ -5,8 +5,10 @@
 Refer to the following topics for guidance on using the eKuiper.
 
 - [Install and operation](operation/overview.md)
-- [Command line interface tools - CLI](cli/overview.md)
+- [Command line interface tools - CLI](operation/cli/overview.md)
 - [eKuiper SQL reference](sqls/overview.md)
 - [Rules](rules/overview.md)
 - [Extend eKuiper](extension/overview.md)
-- [Plugins](plugins/overview.md)
+- [Native plugins](extension/native/overview.md)
+- [Portable plugins](extension/portable/overview.md)
+- [External function](extension/external/external_func.md)

docs/en_US/JSON_Expressions.pptx → docs/en_US/resources/JSON_Expressions.pptx


docs/zh_CN/arch.png → docs/en_US/resources/arch.png


+ 1 - 1
docs/en_US/rules/sources/file.md

@@ -10,7 +10,7 @@ create table table1 (
 ) WITH (DATASOURCE="lookup.json", FORMAT="json", TYPE="file");
 ```
 
-You can use [cli](../../cli/tables.md) or [rest api](../../restapi/tables.md) to manage the tables.
+You can use [cli](../../operation/cli/tables.md) or [rest api](../../operation/restapi/tables.md) to manage the tables.
 
 The configure file for the file source is in */etc/sources/file.yaml* in which the path to the file can be specified.
 

+ 1 - 1
docs/en_US/sqls/streams.md

@@ -69,7 +69,7 @@ The stream will subscribe to MQTT topic ``test/``, the server connection uses se
 
 - See [MQTT source](../rules/sources/mqtt.md) for more info.
 
-- See [rules and streams CLI docs](../cli/overview.md) for more information of rules & streams management.
+- See [rules and streams CLI docs](../operation/cli/overview.md) for more information of rules & streams management.
 
 ### Share source instance across rules
 

TEMPAT SAMPAH
docs/en_US/streaming_class_diagram.pdf


+ 0 - 17
docs/en_US/tutorial.md

@@ -1,17 +0,0 @@
-
-
-## Directory structure 
-
-Below is the installation directory structure after installing eKuiper. 
-
-```
-eKuiper_installed_dir
-  bin
-    cli
-  etc
-    mqtt_source.yaml
-  data
-  plugins
-  log
-```
-

File diff ditekan karena terlalu besar
+ 5 - 13
docs/zh_CN/README.md


+ 3 - 3
docs/zh_CN/deploy/openyurt_tutorial.md

@@ -1,6 +1,6 @@
 # 使用 OpenYurt 部署和管理 eKuiper
 
-LF Edge eKuiper 是轻量级物联网数据分析和流处理软件,通常在边缘端运行。 它提供了一个 [管理仪表板](../manager-ui/overview.md) 来管理一个或多个 eKuiper 实例。
+LF Edge eKuiper 是轻量级物联网数据分析和流处理软件,通常在边缘端运行。 它提供了一个 [管理仪表板](../operation/manager-ui/overview.md) 来管理一个或多个 eKuiper 实例。
 通常,仪表板部署在云节点中,用于管理跨多个边缘节点的 eKuiper 实例。
 
 在大多数情况下,出于安全或其他考虑,边缘节点在物理上无法从云节点访问。 这使得部署变得困难,并且无法进行云到边缘管理。 [OpenYurt](https://github.com/openyurtio/openyurt) 改变了这种情况。
@@ -284,7 +284,7 @@ kubectl apply -f config/setup/yurt-tunnel-agent.yaml
 
 ![system](./ping.png)
 
-很棒! 现在我们可以通过仪表板在边缘管理 eKuiper,就像它部署在云端一样。参照 [manager ui教程](../manager-ui/overview.md),可以从云端创建和管理 eKuiper
+很棒! 现在我们可以通过仪表板在边缘管理 eKuiper,就像它部署在云端一样。参照 [manager ui教程](../operation/manager-ui/overview.md),可以从云端创建和管理 eKuiper
 的流、规则和插件以及任何类似的管理工作。
 
 ## 扩展阅读
@@ -294,4 +294,4 @@ kubectl apply -f config/setup/yurt-tunnel-agent.yaml
 - [eKuiper Github 代码库](https://github.com/lf-edge/ekuiper/)
 - [eKuiper 参考指南](https://github.com/lf-edge/ekuiper/blob/edgex/docs/en_US/reference.md)
 - [OpenYurt 教程](https://github.com/openyurtio/openyurt/tree/master/docs/tutorial)
-- [eKuiper 管理控制台教程](../manager-ui/overview.md)
+- [eKuiper 管理控制台教程](../operation/manager-ui/overview.md)

+ 7 - 7
docs/zh_CN/edgex/edgex_rule_engine_tutorial.md

@@ -8,7 +8,7 @@
 - SQL:SQL 是你流式数据处理指定业务逻辑的地方,eKuiper 提供了 SQL 语句可以对数据进行抽取、过滤和转换;
 - 目标(Sink):目标用于将分析结果发送到特定的目标。例如,将分析结果发送到另外的 MQTT 服务器,或者一个 HTTP Rest 地址;
 
-![](../arch.png)
+![](../resources/arch.png)
 
 使用 eKuiper,一般需要完成以下三个步骤。
 
@@ -143,7 +143,7 @@ curl -X POST \
 }'
 ```
 
-关于其它 API,请参考[该文档](../restapi/overview.md).
+关于其它 API,请参考[该文档](../operation/restapi/overview.md).
 
 ### 方式2: 使用 eKuiper 命令行
 
@@ -159,7 +159,7 @@ docker exec -it kuiper /bin/sh
 bin/kuiper create stream demo'() WITH (FORMAT="JSON", TYPE="edgex")'
 ```
 
-其它命令行,请参考[该文档](../cli/overview.md)。
+其它命令行,请参考[该文档](../operation/cli/overview.md)。
 
 ------
 
@@ -284,7 +284,7 @@ time="2021-07-08 01:08:20" level=info msg="sink result for rule rule1: [{\"Uint3
 ...
 ```
 
-你也可以敲入以下的命令来查看规则执行的状态。相关的查看规则状态的 REST API 也有提供,请检查[相关文档](../restapi/overview.md).
+你也可以敲入以下的命令来查看规则执行的状态。相关的查看规则状态的 REST API 也有提供,请检查[相关文档](../operation/restapi/overview.md).
 
 ```shell
 # bin/kuiper getstatus rule rule1
@@ -322,16 +322,16 @@ Connecting to 127.0.0.1:20498...
 
 ## 更多练习
 
-目前的规则没有过滤发送给 eKuiper 的任何数据,那么如何过滤数据呢?请使用[删除规则](../cli/rules.md),然后试着更改一下 SQL 语句,完成更改后,重新部署规则。这时候如果监听 MQTT 服务的结果主题,检查一下相关的规则是否起作用?
+目前的规则没有过滤发送给 eKuiper 的任何数据,那么如何过滤数据呢?请使用[删除规则](../operation/cli/rules.md),然后试着更改一下 SQL 语句,完成更改后,重新部署规则。这时候如果监听 MQTT 服务的结果主题,检查一下相关的规则是否起作用?
 
 ### 扩展阅读
 
-- 从 eKuiper 0.9.1 版本开始,通过一个单独的 Docker 镜像提供了 [可视化 web 用户交互界面](../manager-ui/overview.md),您可以通过该 web 界面进行流、规则和插件等管理。
+- 从 eKuiper 0.9.1 版本开始,通过一个单独的 Docker 镜像提供了 [可视化 web 用户交互界面](../operation/manager-ui/overview.md),您可以通过该 web 界面进行流、规则和插件等管理。
 - 阅读 [EdgeX 源](../rules/sources/edgex.md) 获取更多详细信息,以及类型转换等。
 - [如何使用 meta 函数抽取在 EdgeX 消息总线中发送的更多信息?](edgex_meta.md) 设备服务往总线上发送数据的时候,一些额外的信息也随之发送,比如时间创建时间,id 等。如果你想在 SQL 语句中使用这些信息,请参考这篇文章。
 - [eKuiper 中使用 Golang 模版 (template) 定制分析结果](../rules/data_template.md) 分析结果在发送给不同的 sink 之前,可以使用数据模版对结果进行二次处理,参考这片文章可以获取更多的关于数据模版的使用场景。
 - [EdgeX 消息总线目标](../rules/sinks/edgex.md). 该文档描述了如何使用 EdgeX 消息总线目标。如果想把你的分析结果被别的 EdgeX 服务消费,你可以通过这个 sink 发送 EdgeX 格式的数据,别的 EdgeX 服务可以通过这个 eKuiper sink 暴露出来的新的消息总线进行订阅。
-- [eKuiper 插件开发教程](../plugins/plugins_tutorial.md): eKuiper 插件机制基于 Go 语言的插件机制,使用户可以构建松散耦合的插件程序,在运行时动态加载和绑定,如果您对开发插件有兴趣,请参考该文章。
+- [eKuiper 插件开发教程](../extension/native/develop/plugins_tutorial.md): eKuiper 插件机制基于 Go 语言的插件机制,使用户可以构建松散耦合的插件程序,在运行时动态加载和绑定,如果您对开发插件有兴趣,请参考该文章。
 
 如想了解更多的 LF Edge eKuiper 的信息,请参考以下资源。
 

+ 2 - 2
docs/zh_CN/extension/external/external_func.md

@@ -189,7 +189,7 @@ import "google/api/annotations.proto";
 
 外部服务配置需要1个 json 文件和至少一个 schema(.proto) 文件。配置定义了服务映射的3个层次。
 
-1. eKuiper 外部服务层: 外部服务名通过 json 文件名定义。这个名字将作为 [REST API](../../restapi/services.md) 中描述,删除和更新整体外部服务的键。
+1. eKuiper 外部服务层: 外部服务名通过 json 文件名定义。这个名字将作为 [REST API](../../operation/restapi/services.md) 中描述,删除和更新整体外部服务的键。
 2. 接口层: 定义于 json 文件的 `interfaces` 部分。该层为用户不可见的虚拟层,主要用于将一组服务聚合,以便可以只定义一次一组函数共有的属性,例如 schema,访问地址等。 
 3. eKuiper 函数层: 函数定义于 proto 文件中的`rpc`。需要注意的是,proto 文件中的 `rpc` 必须定义在 proto 文件中的 `service` 之下。此 `sevice` 与 eKuiper 中的外部服务概念不同,且没有关联,其取名没有任何限制。默认情况下,外部函数的名字与 rpc 名字相同。用户可通过修改 json 文件中,interface 下的 functions 部分来覆盖函数名的映射关系。 
 
@@ -233,7 +233,7 @@ eKuiper 启动时,会读取配置文件夹 *etc/services* 里的外部服务
    ```
 注意:eKuiper 启动之后,修改配置文件**不能**自动载入系统。需要动态更新时,请使用 REST 服务。
 
-服务的动态注册和管理,请参考[外部服务管理 API](../../restapi/services.md)。
+服务的动态注册和管理,请参考[外部服务管理 API](../../operation/restapi/services.md)。
 
 ## 使用
 

+ 5 - 5
docs/zh_CN/extension/native/function.md

@@ -1,6 +1,6 @@
 # 函数扩展
 
-在 eKuiper SQL 语法中,向服务器提供了[许多内置函数](../../sqls/built-in_functions.md),用于各种可重用的业务逻辑。 但是,用户仍然可能需要其他未被内置插件覆盖的可重用的业务逻辑。 提供函数扩展是为了自定义函数。
+在 eKuiper SQL 语法中,向服务器提供了[许多内置函数](../../../sqls/built-in_functions.md),用于各种可重用的业务逻辑。 但是,用户仍然可能需要其他未被内置插件覆盖的可重用的业务逻辑。 提供函数扩展是为了自定义函数。
 
 ## 开发
 
@@ -8,7 +8,7 @@
 
 为 eKuiper 开发函数的过程,就是实现 [api.Function](https://github.com/lf-edge/ekuiper/blob/master/pkg/api/stream.go) 接口并将其导出为 golang 插件。
 
-在开始开发之前,您必须为 [golang 插件设置环境](../overview.md#setup-the-plugin-developing-environment)。
+在开始开发之前,您必须为 [golang 插件设置环境](../../overview.md#setup-the-plugin-developing-environment)。
 
 为了开发函数,首先要实现 _Validate_ 方法。 在 SQL 验证期间将调用此方法。 在此方法中,将传递 [xsql.Expr](https://github.com/lf-edge/ekuiper/blob/master/pkg/ast/expr.go) 的切片作为参数,该参数包含运行时该函数的参数。 开发人员可以对其进行验证,以检查参数计数和类型等。如果验证成功,则返回 nil。 否则,返回一个错误对象。
 
@@ -30,7 +30,7 @@ IsAggregate() bool
 Exec(args []interface{}) (interface{}, bool)
 ```
 
-由于该函数本身是一个插件,因此必须位于 main 程序包中。 给定的函数结构名称为 myFunction。 在文件的最后,必须将源文件作为符号导出,如下所示。 有[2种类型的导出符号被支持](../overview.md#plugin-development)。 对于函数扩展,如果没有内部状态,建议导出单例实例。
+由于该函数本身是一个插件,因此必须位于 main 程序包中。 给定的函数结构名称为 myFunction。 在文件的最后,必须将源文件作为符号导出,如下所示。 有[2种类型的导出符号被支持](../../overview.md#plugin-development)。 对于函数扩展,如果没有内部状态,建议导出单例实例。
 
 ```go
 var MyFunction myFunction
@@ -63,8 +63,8 @@ go build -trimpath -modfile extensions.mod --buildmode=plugin -o plugins/functio
 
 eKuiper 启动时会自动载入插件目录里已编译好的插件。自动载入的函数插件假设插件里仅导出一个同名的函数。如果插件导出多个函数,则需要显示运行一次注册操作。有两种方法可以注册函数:
 
-1. 在开发环境中,建议直接构建插件 .so 文件到插件目录中以便 eKuiper 自动载入。构建完成后,运行 [CLI 注册函数命令](../../cli/plugins.md#register-functions) or [REST 注册函数 API](../../restapi/plugins.md#register-functions) 进行注册。
-2. 在生产环境中,[打包插件到 zip 压缩包](../../plugins/plugins_tutorial.md#plugin-deployment-1),然后运行 [CLI 创建函数插件命令](../../cli/plugins.md#create-a-plugin) 或者 [REST 创建函数 API](../../restapi/plugins.md#create-a-plugin) 并设置 functions 参数以指定导出函数名。
+1. 在开发环境中,建议直接构建插件 .so 文件到插件目录中以便 eKuiper 自动载入。构建完成后,运行 [CLI 注册函数命令](../../../operation/cli/plugins.md#register-functions) or [REST 注册函数 API](../../../operation/restapi/plugins.md#register-functions) 进行注册。
+2. 在生产环境中,[打包插件到 zip 压缩包](plugins_tutorial.md#plugin-deployment-1),然后运行 [CLI 创建函数插件命令](../../../operation/cli/plugins.md#create-a-plugin) 或者 [REST 创建函数 API](../../../operation/restapi/plugins.md#create-a-plugin) 并设置 functions 参数以指定导出函数名。
 
 ### 使用
 

+ 11 - 11
docs/zh_CN/plugins/overview.md

@@ -12,8 +12,8 @@ eKuiper 插件开发者在开发过程中,可以指定元数据文件,这些
 
 | 名称                  | 描述                                                  | 备注                                                |
 | --------------------- | ------------------------------------------------------------ | ------------------------------------------------------------ |
-| [zmq](sources/zmq.md)| 该插件监听 Zero Mq 消息并发送到 eKuiper 流中 | 插件样例,不可用于生产环境 |
-| [random](sources/random.md) | 该插件按照指定模式生成消息   | 插件样例,不可用于生产环境 |
+| [zmq](../sources/zmq.md)| 该插件监听 Zero Mq 消息并发送到 eKuiper 流中 | 插件样例,不可用于生产环境 |
+| [random](../sources/random.md) | 该插件按照指定模式生成消息   | 插件样例,不可用于生产环境 |
 
 ### source 元数据文件格式
 
@@ -159,10 +159,10 @@ source 的大部分属性用户通过对应的配置文件指定,用户无法
 
 | 名称                  | 描述                                                  | 备注                                                |
 | --------------------- | ------------------------------------------------------------ | ------------------------------------------------------------ |
-| [file](sinks/file.md) | 该插件将分析结果保存到某个指定到文件系统中 | 插件样例,不可用于生产环境 |
-| [zmq](sinks/zmq.md)   | 该插件将分析结果发送到 Zero Mq 的主题中  | 插件样例,不能用于生产环境 |
-| [Influxdb](sinks/influx.md)   | 该插件将分析结果发送到 InfluxDB 中  | 由 [@smart33690](https://github.com/smart33690) 提供 |
-| [TDengine](sinks/tdengine.md) | 该插件将分析结果发送到 TDengine 中 |  |
+| [file](../sinks/file.md) | 该插件将分析结果保存到某个指定到文件系统中 | 插件样例,不可用于生产环境 |
+| [zmq](../sinks/zmq.md)   | 该插件将分析结果发送到 Zero Mq 的主题中  | 插件样例,不能用于生产环境 |
+| [Influxdb](../sinks/influx.md)   | 该插件将分析结果发送到 InfluxDB 中  | 由 [@smart33690](https://github.com/smart33690) 提供 |
+| [TDengine](../sinks/tdengine.md) | 该插件将分析结果发送到 TDengine 中 |  |
 
 ### sink 元数据文件格式
 
@@ -277,11 +277,11 @@ source 的大部分属性用户通过对应的配置文件指定,用户无法
 
 | 名称                                          | 描述                                                         | 备注                       |
 | --------------------------------------------- | ------------------------------------------------------------ | -------------------------- |
-| [echo](functions/functions.md)                | 原样输出参数值                                               | 插件样例,不可用于生产环境 |
-| [countPlusOne](functions/functions.md)        | 输出参数长度加一的值                                         | 插件样例,不可用于生产环境 |
-| [accumulateWordCount](functions/functions.md) | 函数统计一共有多少个单词                                     | 插件样例,不可用于生产环境 |
-| [resize](functions/functions.md)              | 创建具有新尺寸(宽度,高度)的缩放图像。如果 width 或 height 设置为0,则将其设置为长宽比保留值 | 插件样例,不可用于生产环境 |
-| [thumbnail](functions/functions.md)           | 将保留宽高比的图像缩小到最大尺寸( maxWidth,maxHeight)。     | 插件样例,不可用于生产环境 |
+| [echo](../functions/functions.md)                | 原样输出参数值                                               | 插件样例,不可用于生产环境 |
+| [countPlusOne](../functions/functions.md)        | 输出参数长度加一的值                                         | 插件样例,不可用于生产环境 |
+| [accumulateWordCount](../functions/functions.md) | 函数统计一共有多少个单词                                     | 插件样例,不可用于生产环境 |
+| [resize](../functions/functions.md)              | 创建具有新尺寸(宽度,高度)的缩放图像。如果 width 或 height 设置为0,则将其设置为长宽比保留值 | 插件样例,不可用于生产环境 |
+| [thumbnail](../functions/functions.md)           | 将保留宽高比的图像缩小到最大尺寸( maxWidth,maxHeight)。     | 插件样例,不可用于生产环境 |
 
 eKuiper 具有许多内置函数,可以对数据执行计算。(具体文档参考 https://github.com/lf-edge/ekuiper/blob/master/docs/zh_CN/sqls/built-in_functions.md)
 

File diff ditekan karena terlalu besar
+ 20 - 17
docs/zh_CN/plugins/plugins_tutorial.md


+ 9 - 9
docs/zh_CN/extension/native/sink.md

@@ -1,6 +1,6 @@
 # 目标 (Sink) 扩展
 
-eKuiper 可以将数据接收到外部系统。 eKuiper具有对  [MQTT 消息服务器](../../rules/sinks/mqtt.md) 和 [日志目标](../../rules/sinks/log.md)的内置接收器支持。然而, 仍然需要将数据发布到各种外部系统,包括消息传递系统和数据库等。Sink (目标)扩展正是为了满足这一要求。
+eKuiper 可以将数据接收到外部系统。 eKuiper具有对  [MQTT 消息服务器](../../../rules/sinks/mqtt.md) 和 [日志目标](../../../rules/sinks/log.md)的内置接收器支持。然而, 仍然需要将数据发布到各种外部系统,包括消息传递系统和数据库等。Sink (目标)扩展正是为了满足这一要求。
 
 ## 开发
 
@@ -8,9 +8,9 @@ eKuiper 可以将数据接收到外部系统。 eKuiper具有对  [MQTT 消息
 
 为 eKuiper 开发 Sink (目标),是实现 [api.Sink](https://github.com/lf-edge/ekuiper/blob/master/pkg/api/stream.go) 接口并将其导出为 golang 插件。
 
-在开始开发之前,您必须为 [golang 插件设置环境](../overview.md#setup-the-plugin-developing-environment)。
+在开始开发之前,您必须为 [golang 插件设置环境](../../overview.md#setup-the-plugin-developing-environment)。
 
-要开发 Sink (目标),必须实现 _Configure_ 方法。 接收器初始化后,将调用此方法。 在此方法中,将传入包含 [规则操作定义](../../rules/overview.md#actions)中的配置映射,通常,将包含诸如外部系统的主机、端口、用户和密码之类的信息。您可以使用此映射来初始化此 Sink (目标)。
+要开发 Sink (目标),必须实现 _Configure_ 方法。 接收器初始化后,将调用此方法。 在此方法中,将传入包含 [规则操作定义](../../../rules/overview.md#actions)中的配置映射,通常,将包含诸如外部系统的主机、端口、用户和密码之类的信息。您可以使用此映射来初始化此 Sink (目标)。
 
 ```go
 //Called during initialization. Configure the sink with the properties from action definition 
@@ -25,13 +25,13 @@ Open(ctx StreamContext) error
 
 Sink (目标)的主要任务是实现 _collect_ 方法。 当 eKuiper 将任何数据输入 Sink (目标)时,将调用该函数。 作为无限流,此函数将被连续调用。 此功能的任务是将数据发布到外部系统。 第一个参数是上下文,第二个参数是从 eKuiper 接收的数据。接收到的数据有2种可能的类型:
 1. Map数组 `[]map[string]interface{}`: 默认类型。
-2. Map `map[string]interface{}`: 当 [`sendSingle` 属性](../../rules/overview.md#目标/动作)设置为 true 时,可能收到此类型。
+2. Map `map[string]interface{}`: 当 [`sendSingle` 属性](../../../rules/overview.md#目标/动作)设置为 true 时,可能收到此类型。
 
 大多数时候,收到到的 map 的内容为规则选择的列的值。但是,如果 `sendError` 属性设置为 true 且规则有错误,则错误信息会放到 map 里,形似 `{"error":"error message here"}` 。
 
-开发者可通过 context 方法`ctx.TransformOutput(data)` 获取转换后的字节数组。默认情况下,该方法将返回 json 编码的字节数组,若 [`dataTemlate` 属性](../../rules/overview.md#数据模板) 有设置,则返回格式化后的字符串数组,且第二个返回值设为 true,表示结果已经过变换。
+开发者可通过 context 方法`ctx.TransformOutput(data)` 获取转换后的字节数组。默认情况下,该方法将返回 json 编码的字节数组,若 [`dataTemlate` 属性](../../../rules/overview.md#数据模板) 有设置,则返回格式化后的字符串数组,且第二个返回值设为 true,表示结果已经过变换。
 
-需要注意的是,当 [`dataTemlate` 属性](../../rules/overview.md#数据模板) 设置时,开发者可通过 context 方法`ctx.TransformOutput(data)` 获取转换后的数据。若数据模板未设置,则该方法返回空值。
+需要注意的是,当 [`dataTemlate` 属性](../../../rules/overview.md#数据模板) 设置时,开发者可通过 context 方法`ctx.TransformOutput(data)` 获取转换后的数据。若数据模板未设置,则该方法返回空值。
 
 该方法可以返回任何错误类型。但是,如果想要让自动重试机制生效,返回的错误消息必须以 "io error" 开头。大多数情况下,也只有 io 问题才有重试的需要。
 
@@ -46,7 +46,7 @@ Collect(ctx StreamContext, data interface{}) error
 Close(ctx StreamContext) error
 ```
 
-由于 Sink (目标)本身是一个插件,因此它必须位于主程序包中。 给定 Sink (目标)结构名称为 mySink。 在文件的最后,必须将 Sink (目标)导出为以下符号。 共有 [2种类型的导出符号](../overview.md#plugin-development)。 对于 Sink (目标)扩展,通常需要状态,因此建议导出构造函数。
+由于 Sink (目标)本身是一个插件,因此它必须位于主程序包中。 给定 Sink (目标)结构名称为 mySink。 在文件的最后,必须将 Sink (目标)导出为以下符号。 共有 [2种类型的导出符号](../../overview.md#plugin-development)。 对于 Sink (目标)扩展,通常需要状态,因此建议导出构造函数。
 
 ```go
 func MySink() api.Sink {
@@ -58,7 +58,7 @@ func MySink() api.Sink {
 
 #### 解析动态属性
 
-在自定义的 sink 插件中,用户可能仍然想要像内置的 sink 一样支持[动态属性](../../rules/overview.md#动态属性)。 我们在 context 对象中提供了 `ParseDynamicProp` 方法使得开发者可以方便地解析动态属性并应用于插件中。开发组应当根据业务逻辑,设计那些属性支持动态值。然后在代码编写时,使用此方法解析用户传入的属性值。
+在自定义的 sink 插件中,用户可能仍然想要像内置的 sink 一样支持[动态属性](../../../rules/overview.md#动态属性)。 我们在 context 对象中提供了 `ParseDynamicProp` 方法使得开发者可以方便地解析动态属性并应用于插件中。开发组应当根据业务逻辑,设计那些属性支持动态值。然后在代码编写时,使用此方法解析用户传入的属性值。
 
 ```go
 // Parse the prop of jsonpath syntax against the current data.
@@ -75,7 +75,7 @@ go build -trimpath -modfile extensions.mod --buildmode=plugin -o plugins/sinks/M
 
 ### 使用
 
-自定义 Sink (目标)在 [动作定义](../../rules/overview.md#actions)规定。 它的名称用作操作的键, 配置就是值。
+自定义 Sink (目标)在 [动作定义](../../../rules/overview.md#actions)规定。 它的名称用作操作的键, 配置就是值。
 
 如果您开发了 Sink (目标)实现 MySink,则应该具有:
 1. 在插件文件中,将导出符号 MySink。

File diff ditekan karena terlalu besar
+ 6 - 6
docs/zh_CN/extension/native/source.md


+ 1 - 1
docs/zh_CN/plugins/functions/functions.md

@@ -1,6 +1,6 @@
 # 定制函数
 
-eKuiper 可以定制函数,函数的开发、编译及使用请[参见这里](../../extension/native/function.md)。
+eKuiper 可以定制函数,函数的开发、编译及使用请[参见这里](../develop/function.md)。
 
 ## echo 插件
 

+ 1 - 1
docs/zh_CN/plugins/functions/tensorflow_lite_tutorial.md

@@ -55,7 +55,7 @@ var LabelImage = labelImage{
 }
 ```
 
-查阅 [本教程](../plugins_tutorial.md) 以获得创建 eKuiper 插件的详细步骤。请参阅 [labelImage.go](https://github.com/lf-edge/ekuiper/blob/master/extensions/functions/labelImage/labelImage.go) 以获取完整的源代码。
+查阅 [本教程](../develop/plugins_tutorial.md) 以获得创建 eKuiper 插件的详细步骤。请参阅 [labelImage.go](https://github.com/lf-edge/ekuiper/blob/master/extensions/functions/labelImage/labelImage.go) 以获取完整的源代码。
 
 ## 构建并安装插件
 

+ 4 - 4
docs/zh_CN/extension/native/overview.md

@@ -22,9 +22,9 @@ eKuiper 允许用户自定义不同类型的扩展。
 
 请阅读以下内容,了解如何实现不同的扩展。
 
-- [源扩展](./source.md)
-- [Sink/Action 扩展](./sink.md)
-- [函数扩展](./function.md)
+- [源扩展](develop/source.md)
+- [Sink/Action 扩展](develop/sink.md)
+- [函数扩展](develop/function.md)
 
 ## 命名
 
@@ -59,7 +59,7 @@ func (f *accumulateWordCountFunc) Exec(args []interface{}, ctx api.FunctionConte
 
 ### 运行时依赖
 
-有些插件可能需要访问文件系统中的依赖文件。依赖文件建放置于 {{ekuiperPath}}/etc/{{pluginType}}/{{pluginName}} 目录。打包插件时,依赖文件应放置于 [etc 目录](../../restapi/plugins.md#plugin-file-format)。安装后,这些文件会自动移动到推荐的位置。
+有些插件可能需要访问文件系统中的依赖文件。依赖文件建放置于 {{ekuiperPath}}/etc/{{pluginType}}/{{pluginName}} 目录。打包插件时,依赖文件应放置于 [etc 目录](../../operation/restapi/plugins.md#plugin-file-format)。安装后,这些文件会自动移动到推荐的位置。
 
 在插件源代码中,开发者可通过 context 获取 eKuiper 根目录,以访问文件系统中的依赖:
 

docs/zh_CN/plugins/sinks/file.md → docs/zh_CN/extension/native/sinks/file.md


docs/zh_CN/plugins/sinks/image.md → docs/zh_CN/extension/native/sinks/image.md


docs/zh_CN/plugins/sinks/influx.md → docs/zh_CN/extension/native/sinks/influx.md


docs/zh_CN/plugins/sinks/redis.md → docs/zh_CN/extension/native/sinks/redis.md


docs/zh_CN/plugins/sinks/tdengine.md → docs/zh_CN/extension/native/sinks/tdengine.md


docs/zh_CN/plugins/sinks/zmq.md → docs/zh_CN/extension/native/sinks/zmq.md


+ 1 - 1
docs/zh_CN/plugins/sources/random.md

@@ -53,7 +53,7 @@ dedup:
 
 ## 覆盖默认设置
 
-如果您有特定的连接需要覆盖默认设置,则可以创建一个自定义部分。 在上一个示例中,我们创建一个名为 `test` 的特定设置。 然后,您可以在创建流定义时使用选项`CONF_KEY` 指定配置(有关更多信息,请参见 [stream specs](../../sqls/streams.md))。
+如果您有特定的连接需要覆盖默认设置,则可以创建一个自定义部分。 在上一个示例中,我们创建一个名为 `test` 的特定设置。 然后,您可以在创建流定义时使用选项`CONF_KEY` 指定配置(有关更多信息,请参见 [stream specs](../../../sqls/streams.md))。
 
 ## 使用示例
 

+ 1 - 1
docs/zh_CN/plugins/sources/zmq.md

@@ -33,7 +33,7 @@ test:
 
 ## 覆盖默认设置
 
-如果您有特定的连接需要覆盖默认设置,则可以创建一个自定义部分。 在上一个示例中,我们创建一个名为 `test` 的特定设置。 然后,您可以在创建流定义时使用选项 `CONF_KEY` 指定配置(有关更多信息,请参见 [stream specs](../../sqls/streams.md))。
+如果您有特定的连接需要覆盖默认设置,则可以创建一个自定义部分。 在上一个示例中,我们创建一个名为 `test` 的特定设置。 然后,您可以在创建流定义时使用选项 `CONF_KEY` 指定配置(有关更多信息,请参见 [stream specs](../../../sqls/streams.md))。
 
 ## 使用示例
 

+ 3 - 3
docs/zh_CN/extension/portable/go_sdk.md

@@ -10,7 +10,7 @@
 
 用户只需依赖 `github.com/lf-edge/ekuiper/sdk/go` 而不是 eKuiper 主项目即可编写 portable 插件,用户需要实现 `github.com/lf-edge/ekuiper/sdk/go/api` 中的相应接口即可
 
-对于源,实现跟[原生源插件](../native/source.md)中一样的接口即可 
+对于源,实现跟[原生源插件](../native/develop/source.md)中一样的接口即可 
 
 ```go
 type Source interface {
@@ -22,7 +22,7 @@ type Source interface {
 }
 ```
 
-对于目标,实现跟[原生目标插件](../native/sink.md)中一样的接口即可
+对于目标,实现跟[原生目标插件](../native/develop/sink.md)中一样的接口即可
 
 ```go
 type Sink interface {
@@ -36,7 +36,7 @@ type Sink interface {
 }
 ```
 
-对于函数,实现跟[原生函数插件](../native/function.md)中一样的接口即可
+对于函数,实现跟[原生函数插件](../native/develop/function.md)中一样的接口即可
 
 ```go
 type Function interface {

+ 1 - 1
docs/zh_CN/extension/portable/overview.md

@@ -72,7 +72,7 @@
 
 通过将内容(json、可执行文件和所有支持文件)放在`plugins/portables/${pluginName}`中,并将配置放在`etc`下的相应目录中,可以在启动时自动加载可移植插件。
 
-要在运行时管理可移植插件,我们可以使用 [REST](../../restapi/plugins.md) 或 [CLI](../../cli/plugins.md) 命令。
+要在运行时管理可移植插件,我们可以使用 [REST](../../operation/restapi/plugins.md) 或 [CLI](../../operation/cli/plugins.md) 命令。
 ## 限制
 
 目前,与原生插件相比,有两个方面的区别:

+ 1 - 1
docs/zh_CN/extension/portable/python_sdk.md

@@ -6,7 +6,7 @@ To run python plugin, there are two prerequisites in the runtime environment:
 1. 安装 Python 3.x 环境.
 2. 通过 `pip install nng ekuiper` 安装 nng 和 ekuiper 包.
 
-默认情况下,eKuiper 的 portable 插件运行时会通过 `python` 命令来运行插件。如果您的环境不支持 `python` 命令,请通过[配置文件](../../operation/configuration_file.md#portable-插件配置)更换为可用的 Python 命令。
+默认情况下,eKuiper 的 portable 插件运行时会通过 `python` 命令来运行插件。如果您的环境不支持 `python` 命令,请通过[配置文件](../../operation/config/configuration_file.md#portable-插件配置)更换为可用的 Python 命令。
 
 ## 插件开发
 

+ 2 - 2
docs/zh_CN/getting_started.md

@@ -197,8 +197,8 @@ $ bin/kuiper stop rule ruleDemo
 
 
 请参考以下主题,以获取有关使用 eKuiper 的指导。
-- [命令行界面工具 CLI](./cli/overview.md)
+- [命令行界面工具 CLI](operation/cli/overview.md)
 - [eKuiper SQL 参考](./sqls/overview.md)
 - [规则](./rules/overview.md)
 - [扩展 eKuiper](./extension/overview.md)
-- [插件](./plugins/overview.md)
+- [插件](extension/native/develop/overview.md)

+ 1 - 1
docs/zh_CN/cli/overview.md

@@ -3,7 +3,7 @@ eKuiper CLI (命令行界面)工具提供流和规则管理。
 eKuiper CLI 可以作为 eKuiper 服务器的客户端。 eKuiper 服务器运行引擎执行流或规则查询,包括处理流或规则定义、管理规则状态和 io。
 
 *eKuiper CLI 架构*
-![CLI Arch](./resources/arch.png)
+![CLI Arch](resources/arch.png)
 
 - [流](streams.md)
 - [规则](rules.md)

+ 1 - 1
docs/zh_CN/cli/plugins.md

@@ -50,7 +50,7 @@ create plugin $plugin_type $plugin_name $plugin_json | create plugin $plugin_typ
 ### 参数
 1. plugin_type:插件类型,可用值为 `["source", "sink", "function", "portable"]`
 2. plugin_name:插件的唯一名称。名称首字母必须小写。例如,如果导出的插件名称为 `Random`,则此插件的名称为 `Random`。
-3. file:插件文件的网址。 它必须是一个 zip 文件,其中包含:编译后的 so 文件和 yaml 文件(仅源文件需要)。 文件名称必须与插件名称匹配。 关于命名规则,查看 [扩展名](../extension/overview.md) 。
+3. file:插件文件的网址。 它必须是一个 zip 文件,其中包含:编译后的 so 文件和 yaml 文件(仅源文件需要)。 文件名称必须与插件名称匹配。 关于命名规则,查看 [扩展名](../../extension/overview.md) 。
 4. functions:仅用于导出多个函数的函数插件。该参数指明插件导出的所有函数名。
 
 ## 显示插件

+ 0 - 0
docs/en_US/cli/resources/arch.png


+ 1 - 1
docs/zh_CN/cli/rules.md

@@ -4,7 +4,7 @@ eKuiper 规则命令行工具可以管理规则,例如创建、显示、删除
 
 ## 创建规则
 
-如下命令用于创建规则。 规则的定义以 JSON 格式指定,请阅读 [规则](../rules/overview.md) 以获取更多详细信息。
+如下命令用于创建规则。 规则的定义以 JSON 格式指定,请阅读 [规则](../../rules/overview.md) 以获取更多详细信息。
 
 ```shell
 create rule $rule_name '$rule_json' | create rule $rule_name -f $rule_def_file

+ 2 - 2
docs/zh_CN/cli/streams.md

@@ -4,7 +4,7 @@ eKuiper 流命令行工具可用于管理流,例如创建、描述、显示和
 
 ## 创建流
 
-该命令用于创建流。有关流定义的更多详细信息,请参考[流](../sqls/streams.md)。
+该命令用于创建流。有关流定义的更多详细信息,请参考[流](../../sqls/streams.md)。
 
 ```shell
 create stream $stream_name '$stream_def' | create stream -f $stream_def_file
@@ -103,7 +103,7 @@ query
 kuiper > 
 ```
 
-键入 `query` 子命令后,它会提示 `kuiper>`,然后在命令提示符中键入 SQLs (有关如何使用eKuiper SQL的信息,请参阅 [eKuiper SQL 参考](../sqls/overview.md) ),然后按回车。
+键入 `query` 子命令后,它会提示 `kuiper>`,然后在命令提示符中键入 SQLs (有关如何使用eKuiper SQL的信息,请参阅 [eKuiper SQL 参考](../../sqls/overview.md) ),然后按回车。
 
 结果将在控制台中打印。
 

+ 0 - 0
docs/zh_CN/cli/tables.md


Beberapa file tidak ditampilkan karena terlalu banyak file yang berubah dalam diff ini