This is an automated email from the ASF dual-hosted git repository.

github-bot pushed a commit to branch asf-site
in repository https://gitbox.apache.org/repos/asf/dolphinscheduler-website.git


The following commit(s) were added to refs/heads/asf-site by this push:
     new fff5031db8 Automated deployment: 
3d052b9a2fbf0bbc45f4b91dc66c88b55d16c0ec
fff5031db8 is described below

commit fff5031db80870bf87f293a4aaa9eec19ac7df34
Author: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
AuthorDate: Tue Feb 28 05:09:44 2023 +0000

    Automated deployment: 3d052b9a2fbf0bbc45f4b91dc66c88b55d16c0ec
---
 python/2.0.5/.buildinfo                            |   2 +-
 python/2.0.6/.buildinfo                            |   2 +-
 python/2.0.7/.buildinfo                            |   2 +-
 python/3.0.0/.buildinfo                            |   2 +-
 python/3.0.1/.buildinfo                            |   2 +-
 python/3.1.0/.buildinfo                            |   2 +-
 python/4.0.0/.buildinfo                            |   2 +-
 python/4.0.1/.buildinfo                            |   2 +-
 python/main/.buildinfo                             |   2 +-
 python/main/_modules/index.html                    |   1 -
 .../_modules/pydolphinscheduler/constants.html     |   7 +
 .../_modules/pydolphinscheduler/core/database.html | 201 ---------------------
 .../_modules/pydolphinscheduler/tasks/datax.html   |  44 ++++-
 .../pydolphinscheduler/tasks/procedure.html        |  29 ++-
 .../_modules/pydolphinscheduler/tasks/sql.html     |  22 ++-
 python/main/api.html                               | 190 ++++++++-----------
 python/main/genindex.html                          |  66 ++++---
 python/main/objects.inv                            | Bin 11487 -> 11458 bytes
 python/main/searchindex.js                         |   2 +-
 python/main/tasks/datax.html                       |  40 +++-
 python/main/tasks/procedure.html                   |   9 +-
 python/main/tasks/sql.html                         |   8 +-
 22 files changed, 248 insertions(+), 389 deletions(-)

diff --git a/python/2.0.5/.buildinfo b/python/2.0.5/.buildinfo
index 2c9da239cb..ba308ea8a5 100644
--- a/python/2.0.5/.buildinfo
+++ b/python/2.0.5/.buildinfo
@@ -1,4 +1,4 @@
 # Sphinx build info version 1
 # This file hashes the configuration used when building these files. When it 
is not found, a full rebuild will be done.
-config: c357d2137f2ad00e9759ece805237c2f
+config: 1c917ae6be579edb9bbf48b2080a733c
 tags: 645f666f9bcd5a90fca523b33c5a78b7
diff --git a/python/2.0.6/.buildinfo b/python/2.0.6/.buildinfo
index 954b02f0bc..5e259f5de1 100644
--- a/python/2.0.6/.buildinfo
+++ b/python/2.0.6/.buildinfo
@@ -1,4 +1,4 @@
 # Sphinx build info version 1
 # This file hashes the configuration used when building these files. When it 
is not found, a full rebuild will be done.
-config: dde00f737accdb7ba26a1488a34346ed
+config: e1da382b476d541e8b5cf1d191f7843c
 tags: 645f666f9bcd5a90fca523b33c5a78b7
diff --git a/python/2.0.7/.buildinfo b/python/2.0.7/.buildinfo
index 20e5bb9417..d89787ca67 100644
--- a/python/2.0.7/.buildinfo
+++ b/python/2.0.7/.buildinfo
@@ -1,4 +1,4 @@
 # Sphinx build info version 1
 # This file hashes the configuration used when building these files. When it 
is not found, a full rebuild will be done.
-config: 97e9a445770e7dbb3b7d154a4521cf05
+config: bab4f1410b79353b467739ed87109af2
 tags: 645f666f9bcd5a90fca523b33c5a78b7
diff --git a/python/3.0.0/.buildinfo b/python/3.0.0/.buildinfo
index e5cda607b5..8f4c1fa3b7 100644
--- a/python/3.0.0/.buildinfo
+++ b/python/3.0.0/.buildinfo
@@ -1,4 +1,4 @@
 # Sphinx build info version 1
 # This file hashes the configuration used when building these files. When it 
is not found, a full rebuild will be done.
-config: a7af85d41e9e69737bf41aab4ef280ca
+config: 48c2b78835481ea6c3672a187f30ab43
 tags: 645f666f9bcd5a90fca523b33c5a78b7
diff --git a/python/3.0.1/.buildinfo b/python/3.0.1/.buildinfo
index dbf96486c9..b141c02af2 100644
--- a/python/3.0.1/.buildinfo
+++ b/python/3.0.1/.buildinfo
@@ -1,4 +1,4 @@
 # Sphinx build info version 1
 # This file hashes the configuration used when building these files. When it 
is not found, a full rebuild will be done.
-config: 63884f001a01bceb003c08779912a2b7
+config: 86bcd550d3db0d61d99c4b79c0452f48
 tags: 645f666f9bcd5a90fca523b33c5a78b7
diff --git a/python/3.1.0/.buildinfo b/python/3.1.0/.buildinfo
index 91c7b1f82b..8ef3b99746 100644
--- a/python/3.1.0/.buildinfo
+++ b/python/3.1.0/.buildinfo
@@ -1,4 +1,4 @@
 # Sphinx build info version 1
 # This file hashes the configuration used when building these files. When it 
is not found, a full rebuild will be done.
-config: 92f3db0d03cb8451eff02f0306c1c6f4
+config: 02369485f8cd18e7e4ee2505c4fdd92d
 tags: 645f666f9bcd5a90fca523b33c5a78b7
diff --git a/python/4.0.0/.buildinfo b/python/4.0.0/.buildinfo
index 7fdae24e0b..aeb8b42fbe 100644
--- a/python/4.0.0/.buildinfo
+++ b/python/4.0.0/.buildinfo
@@ -1,4 +1,4 @@
 # Sphinx build info version 1
 # This file hashes the configuration used when building these files. When it 
is not found, a full rebuild will be done.
-config: 1c66766e4ea97ef55598324fb192b6b6
+config: 0b25be07334526b41f3b4fc8ce366acb
 tags: 645f666f9bcd5a90fca523b33c5a78b7
diff --git a/python/4.0.1/.buildinfo b/python/4.0.1/.buildinfo
index 97cfaf5c1d..5b6e72b34a 100644
--- a/python/4.0.1/.buildinfo
+++ b/python/4.0.1/.buildinfo
@@ -1,4 +1,4 @@
 # Sphinx build info version 1
 # This file hashes the configuration used when building these files. When it 
is not found, a full rebuild will be done.
-config: 7d1258a255cca6b7b6e6e5585ae60ffb
+config: 2d4997b957bdce73c341493dc91d35f5
 tags: 645f666f9bcd5a90fca523b33c5a78b7
diff --git a/python/main/.buildinfo b/python/main/.buildinfo
index 518695a338..b9690bea45 100644
--- a/python/main/.buildinfo
+++ b/python/main/.buildinfo
@@ -1,4 +1,4 @@
 # Sphinx build info version 1
 # This file hashes the configuration used when building these files. When it 
is not found, a full rebuild will be done.
-config: 2ee65b81325545f9251abdd594b5d789
+config: c3ba267056b6c711f727447ead76ae3a
 tags: 645f666f9bcd5a90fca523b33c5a78b7
diff --git a/python/main/_modules/index.html b/python/main/_modules/index.html
index 6b66d2f7e5..a10c69d6ef 100644
--- a/python/main/_modules/index.html
+++ b/python/main/_modules/index.html
@@ -83,7 +83,6 @@
              
   <h1>All modules for which code is available</h1>
 <ul><li><a 
href="pydolphinscheduler/constants.html">pydolphinscheduler.constants</a></li>
-<li><a 
href="pydolphinscheduler/core/database.html">pydolphinscheduler.core.database</a></li>
 <li><a 
href="pydolphinscheduler/core/engine.html">pydolphinscheduler.core.engine</a></li>
 <li><a 
href="pydolphinscheduler/core/resource_plugin.html">pydolphinscheduler.core.resource_plugin</a></li>
 <li><a 
href="pydolphinscheduler/core/task.html">pydolphinscheduler.core.task</a></li>
diff --git a/python/main/_modules/pydolphinscheduler/constants.html 
b/python/main/_modules/pydolphinscheduler/constants.html
index 17b9ccd90f..ae07c3b564 100644
--- a/python/main/_modules/pydolphinscheduler/constants.html
+++ b/python/main/_modules/pydolphinscheduler/constants.html
@@ -222,6 +222,13 @@
 
     <span class="n">DS</span> <span class="o">=</span> <span 
class="s2">&quot;dolphinscheduler&quot;</span>
     <span class="n">FILE_NAME</span> <span class="o">=</span> <span 
class="s2">&quot;version_ext&quot;</span></div>
+
+
+<div class="viewcode-block" id="Keyword"><a class="viewcode-back" 
href="../../api.html#pydolphinscheduler.constants.Keyword">[docs]</a><span 
class="k">class</span> <span class="nc">Keyword</span><span 
class="p">(</span><span class="nb">str</span><span class="p">):</span>
+<span class="w">    </span><span class="sd">&quot;&quot;&quot;Constants for 
keyword.&quot;&quot;&quot;</span>
+
+    <span class="n">DATASOURCE_ID</span> <span class="o">=</span> <span 
class="s2">&quot;id&quot;</span>
+    <span class="n">DATASOURCE_TYPE</span> <span class="o">=</span> <span 
class="s2">&quot;type&quot;</span></div>
 </pre></div>
 
            </div>
diff --git a/python/main/_modules/pydolphinscheduler/core/database.html 
b/python/main/_modules/pydolphinscheduler/core/database.html
deleted file mode 100644
index fbed5ce528..0000000000
--- a/python/main/_modules/pydolphinscheduler/core/database.html
+++ /dev/null
@@ -1,201 +0,0 @@
-<!DOCTYPE html>
-<html class="writer-html5" lang="en" >
-<head>
-  <meta charset="utf-8" />
-  <meta name="viewport" content="width=device-width, initial-scale=1.0" />
-  <title>pydolphinscheduler.core.database &mdash; apache-dolphinscheduler 
4.0.2-dev documentation</title>
-      <link rel="stylesheet" href="../../../_static/pygments.css" 
type="text/css" />
-      <link rel="stylesheet" href="../../../_static/css/theme.css" 
type="text/css" />
-      <link rel="stylesheet" href="../../../_static/tabs.css" type="text/css" 
/>
-      <link rel="stylesheet" href="../../../_static/copybutton.css" 
type="text/css" />
-  <!--[if lt IE 9]>
-    <script src="../../../_static/js/html5shiv.min.js"></script>
-  <![endif]-->
-  
-        <script data-url_root="../../../" id="documentation_options" 
src="../../../_static/documentation_options.js"></script>
-        <script src="../../../_static/jquery.js"></script>
-        <script src="../../../_static/underscore.js"></script>
-        <script 
src="../../../_static/_sphinx_javascript_frameworks_compat.js"></script>
-        <script src="../../../_static/doctools.js"></script>
-        <script src="../../../_static/sphinx_highlight.js"></script>
-        <script src="../../../_static/tabs.js"></script>
-        <script src="../../../_static/clipboard.min.js"></script>
-        <script src="../../../_static/copybutton.js"></script>
-    <script src="../../../_static/js/theme.js"></script>
-    <link rel="index" title="Index" href="../../../genindex.html" />
-    <link rel="search" title="Search" href="../../../search.html" /> 
-</head>
-
-<body class="wy-body-for-nav"> 
-  <div class="wy-grid-for-nav">
-    <nav data-toggle="wy-nav-shift" class="wy-nav-side">
-      <div class="wy-side-scroll">
-        <div class="wy-side-nav-search" >
-
-          
-          
-          <a href="../../../index.html" class="icon icon-home">
-            apache-dolphinscheduler
-          </a>
-<div role="search">
-  <form id="rtd-search-form" class="wy-form" action="../../../search.html" 
method="get">
-    <input type="text" name="q" placeholder="Search docs" aria-label="Search 
docs" />
-    <input type="hidden" name="check_keywords" value="yes" />
-    <input type="hidden" name="area" value="default" />
-  </form>
-</div>
-        </div><div class="wy-menu wy-menu-vertical" data-spy="affix" 
role="navigation" aria-label="Navigation menu">
-              <ul>
-<li class="toctree-l1"><a class="reference internal" 
href="../../../start.html">Getting Started</a></li>
-<li class="toctree-l1"><a class="reference internal" 
href="../../../tutorial.html">Tutorial</a></li>
-<li class="toctree-l1"><a class="reference internal" 
href="../../../concept.html">Concepts</a></li>
-<li class="toctree-l1"><a class="reference internal" 
href="../../../tasks/index.html">Tasks</a></li>
-<li class="toctree-l1"><a class="reference internal" 
href="../../../howto/index.html">HOWTOs</a></li>
-<li class="toctree-l1"><a class="reference internal" 
href="../../../cli.html">Command Line Interface</a></li>
-<li class="toctree-l1"><a class="reference internal" 
href="../../../config.html">Configuration</a></li>
-<li class="toctree-l1"><a class="reference internal" 
href="../../../api.html">API</a></li>
-<li class="toctree-l1"><a class="reference internal" 
href="../../../resources_plugin/index.html">Resources_plugin</a></li>
-<li class="toctree-l1"><a class="reference internal" 
href="../../../changelog.html">Changelog</a></li>
-</ul>
-
-        </div>
-      </div>
-    </nav>
-
-    <section data-toggle="wy-nav-shift" class="wy-nav-content-wrap"><nav 
class="wy-nav-top" aria-label="Mobile navigation menu" >
-          <i data-toggle="wy-nav-top" class="fa fa-bars"></i>
-          <a href="../../../index.html">apache-dolphinscheduler</a>
-      </nav>
-
-      <div class="wy-nav-content">
-        <div class="rst-content">
-          <div role="navigation" aria-label="Page navigation">
-  <ul class="wy-breadcrumbs">
-      <li><a href="../../../index.html" class="icon icon-home" 
aria-label="Home"></a></li>
-          <li class="breadcrumb-item"><a href="../../index.html">Module 
code</a></li>
-      <li class="breadcrumb-item active">pydolphinscheduler.core.database</li>
-      <li class="wy-breadcrumbs-aside">
-      </li>
-  </ul>
-  <hr/>
-</div>
-          <div role="main" class="document" itemscope="itemscope" 
itemtype="http://schema.org/Article";>
-           <div itemprop="articleBody">
-             
-  <h1>Source code for pydolphinscheduler.core.database</h1><div 
class="highlight"><pre>
-<span></span><span class="c1"># Licensed to the Apache Software Foundation 
(ASF) under one</span>
-<span class="c1"># or more contributor license agreements.  See the NOTICE 
file</span>
-<span class="c1"># distributed with this work for additional information</span>
-<span class="c1"># regarding copyright ownership.  The ASF licenses this 
file</span>
-<span class="c1"># to you under the Apache License, Version 2.0 (the</span>
-<span class="c1"># &quot;License&quot;); you may not use this file except in 
compliance</span>
-<span class="c1"># with the License.  You may obtain a copy of the License 
at</span>
-<span class="c1">#</span>
-<span class="c1">#   http://www.apache.org/licenses/LICENSE-2.0</span>
-<span class="c1">#</span>
-<span class="c1"># Unless required by applicable law or agreed to in 
writing,</span>
-<span class="c1"># software distributed under the License is distributed on 
an</span>
-<span class="c1"># &quot;AS IS&quot; BASIS, WITHOUT WARRANTIES OR CONDITIONS 
OF ANY</span>
-<span class="c1"># KIND, either express or implied.  See the License for 
the</span>
-<span class="c1"># specific language governing permissions and 
limitations</span>
-<span class="c1"># under the License.</span>
-
-<span class="sd">&quot;&quot;&quot;Module database.&quot;&quot;&quot;</span>
-
-<span class="kn">from</span> <span class="nn">typing</span> <span 
class="kn">import</span> <span class="n">Dict</span>
-
-<span class="kn">from</span> <span class="nn">py4j.protocol</span> <span 
class="kn">import</span> <span class="n">Py4JJavaError</span>
-
-<span class="kn">from</span> <span 
class="nn">pydolphinscheduler.exceptions</span> <span class="kn">import</span> 
<span class="n">PyDSParamException</span>
-<span class="kn">from</span> <span 
class="nn">pydolphinscheduler.java_gateway</span> <span 
class="kn">import</span> <span class="n">gateway</span>
-
-
-<div class="viewcode-block" id="Database"><a class="viewcode-back" 
href="../../../api.html#pydolphinscheduler.core.Database">[docs]</a><span 
class="k">class</span> <span class="nc">Database</span><span 
class="p">(</span><span class="nb">dict</span><span class="p">):</span>
-<span class="w">    </span><span class="sd">&quot;&quot;&quot;database object, 
get information about database.</span>
-
-<span class="sd">    You provider database_name contain connection 
information, it decisions which</span>
-<span class="sd">    database type and database instance would run task.</span>
-<span class="sd">    &quot;&quot;&quot;</span>
-
-    <span class="k">def</span> <span class="fm">__init__</span><span 
class="p">(</span><span class="bp">self</span><span class="p">,</span> <span 
class="n">database_name</span><span class="p">:</span> <span 
class="nb">str</span><span class="p">,</span> <span 
class="n">type_key</span><span class="p">,</span> <span 
class="n">database_key</span><span class="p">,</span> <span 
class="o">*</span><span class="n">args</span><span class="p">,</span> <span 
class="o">**</span><span class="n">kwargs [...]
-        <span class="nb">super</span><span class="p">()</span><span 
class="o">.</span><span class="fm">__init__</span><span class="p">(</span><span 
class="o">*</span><span class="n">args</span><span class="p">,</span> <span 
class="o">**</span><span class="n">kwargs</span><span class="p">)</span>
-        <span class="bp">self</span><span class="o">.</span><span 
class="n">_database</span> <span class="o">=</span> <span class="p">{}</span>
-        <span class="bp">self</span><span class="o">.</span><span 
class="n">database_name</span> <span class="o">=</span> <span 
class="n">database_name</span>
-        <span class="bp">self</span><span class="p">[</span><span 
class="n">type_key</span><span class="p">]</span> <span class="o">=</span> 
<span class="bp">self</span><span class="o">.</span><span 
class="n">database_type</span>
-        <span class="bp">self</span><span class="p">[</span><span 
class="n">database_key</span><span class="p">]</span> <span class="o">=</span> 
<span class="bp">self</span><span class="o">.</span><span 
class="n">database_id</span>
-
-    <span class="nd">@property</span>
-    <span class="k">def</span> <span class="nf">database_type</span><span 
class="p">(</span><span class="bp">self</span><span class="p">)</span> <span 
class="o">-&gt;</span> <span class="nb">str</span><span class="p">:</span>
-<span class="w">        </span><span class="sd">&quot;&quot;&quot;Get database 
type from java gateway, a wrapper for 
:func:`get_database_info`.&quot;&quot;&quot;</span>
-        <span class="k">return</span> <span class="bp">self</span><span 
class="o">.</span><span class="n">get_database_info</span><span 
class="p">(</span><span class="bp">self</span><span class="o">.</span><span 
class="n">database_name</span><span class="p">)</span><span 
class="o">.</span><span class="n">get</span><span class="p">(</span><span 
class="s2">&quot;type&quot;</span><span class="p">)</span>
-
-    <span class="nd">@property</span>
-    <span class="k">def</span> <span class="nf">database_id</span><span 
class="p">(</span><span class="bp">self</span><span class="p">)</span> <span 
class="o">-&gt;</span> <span class="nb">str</span><span class="p">:</span>
-<span class="w">        </span><span class="sd">&quot;&quot;&quot;Get database 
id from java gateway, a wrapper for 
:func:`get_database_info`.&quot;&quot;&quot;</span>
-        <span class="k">return</span> <span class="bp">self</span><span 
class="o">.</span><span class="n">get_database_info</span><span 
class="p">(</span><span class="bp">self</span><span class="o">.</span><span 
class="n">database_name</span><span class="p">)</span><span 
class="o">.</span><span class="n">get</span><span class="p">(</span><span 
class="s2">&quot;id&quot;</span><span class="p">)</span>
-
-<div class="viewcode-block" id="Database.get_database_info"><a 
class="viewcode-back" 
href="../../../api.html#pydolphinscheduler.core.Database.get_database_info">[docs]</a>
    <span class="k">def</span> <span class="nf">get_database_info</span><span 
class="p">(</span><span class="bp">self</span><span class="p">,</span> <span 
class="n">name</span><span class="p">)</span> <span class="o">-&gt;</span> 
<span class="n">Dict</span><span class="p">:</span>
-<span class="w">        </span><span class="sd">&quot;&quot;&quot;Get database 
info from java gateway, contains database id, type, 
name.&quot;&quot;&quot;</span>
-        <span class="k">if</span> <span class="bp">self</span><span 
class="o">.</span><span class="n">_database</span><span class="p">:</span>
-            <span class="k">return</span> <span class="bp">self</span><span 
class="o">.</span><span class="n">_database</span>
-        <span class="k">else</span><span class="p">:</span>
-            <span class="k">try</span><span class="p">:</span>
-                <span class="bp">self</span><span class="o">.</span><span 
class="n">_database</span> <span class="o">=</span> <span 
class="n">gateway</span><span class="o">.</span><span 
class="n">get_datasource_info</span><span class="p">(</span><span 
class="n">name</span><span class="p">)</span>
-            <span class="c1"># Handler database source do not exists error, 
for now we just terminate the process.</span>
-            <span class="k">except</span> <span class="n">Py4JJavaError</span> 
<span class="k">as</span> <span class="n">ex</span><span class="p">:</span>
-                <span class="k">raise</span> <span 
class="n">PyDSParamException</span><span class="p">(</span><span 
class="nb">str</span><span class="p">(</span><span class="n">ex</span><span 
class="o">.</span><span class="n">java_exception</span><span class="p">))</span>
-            <span class="k">return</span> <span class="bp">self</span><span 
class="o">.</span><span class="n">_database</span></div></div>
-</pre></div>
-
-           </div>
-          </div>
-          <footer>
-
-  <hr/>
-
-  <div role="contentinfo">
-    <p>&#169; Copyright 2022, apache.</p>
-  </div>
-
-  Built with <a href="https://www.sphinx-doc.org/";>Sphinx</a> using a
-    <a href="https://github.com/readthedocs/sphinx_rtd_theme";>theme</a>
-    provided by <a href="https://readthedocs.org";>Read the Docs</a>.
-   
-
-</footer>
-        </div>
-      </div>
-    </section>
-  </div>
-  
-<div class="rst-versions" data-toggle="rst-versions" role="note" 
aria-label="versions">
-  <span class="rst-current-version" data-toggle="rst-current-version">
-    <span class="fa fa-book"> Other Versions</span>
-    v: main
-    <span class="fa fa-caret-down"></span>
-  </span>
-  <div class="rst-other-versions">
-    <dl>
-      <dt>Tags</dt>
-      <dd><a href="../../../../2.0.5/index.html">2.0.5</a></dd>
-      <dd><a href="../../../../2.0.6/index.html">2.0.6</a></dd>
-      <dd><a href="../../../../2.0.7/index.html">2.0.7</a></dd>
-      <dd><a href="../../../../3.0.0/index.html">3.0.0</a></dd>
-      <dd><a href="../../../../3.0.1/index.html">3.0.1</a></dd>
-      <dd><a href="../../../../3.1.0/index.html">3.1.0</a></dd>
-      <dd><a href="../../../../4.0.0/index.html">4.0.0</a></dd>
-      <dd><a href="../../../../4.0.1/index.html">4.0.1</a></dd>
-    </dl>
-    <dl>
-      <dt>Branches</dt>
-      <dd><a href="database.html">main</a></dd>
-    </dl>
-  </div>
-</div><script>
-      jQuery(function () {
-          SphinxRtdTheme.Navigation.enable(true);
-      });
-  </script> 
-
-</body>
-</html>
\ No newline at end of file
diff --git a/python/main/_modules/pydolphinscheduler/tasks/datax.html 
b/python/main/_modules/pydolphinscheduler/tasks/datax.html
index 2bc27c5823..b79ab561bd 100644
--- a/python/main/_modules/pydolphinscheduler/tasks/datax.html
+++ b/python/main/_modules/pydolphinscheduler/tasks/datax.html
@@ -105,8 +105,8 @@
 <span class="kn">from</span> <span class="nn">typing</span> <span 
class="kn">import</span> <span class="n">Dict</span><span class="p">,</span> 
<span class="n">List</span><span class="p">,</span> <span 
class="n">Optional</span>
 
 <span class="kn">from</span> <span 
class="nn">pydolphinscheduler.constants</span> <span class="kn">import</span> 
<span class="n">TaskType</span>
-<span class="kn">from</span> <span 
class="nn">pydolphinscheduler.core.database</span> <span 
class="kn">import</span> <span class="n">Database</span>
 <span class="kn">from</span> <span 
class="nn">pydolphinscheduler.core.task</span> <span class="kn">import</span> 
<span class="n">Task</span>
+<span class="kn">from</span> <span 
class="nn">pydolphinscheduler.models.datasource</span> <span 
class="kn">import</span> <span class="n">Datasource</span>
 
 
 <div class="viewcode-block" id="CustomDataX"><a class="viewcode-back" 
href="../../../tasks/datax.html#pydolphinscheduler.tasks.CustomDataX">[docs]</a><span
 class="k">class</span> <span class="nc">CustomDataX</span><span 
class="p">(</span><span class="n">Task</span><span class="p">):</span>
@@ -142,12 +142,21 @@
 <span class="w">    </span><span class="sd">&quot;&quot;&quot;Task DataX 
object, declare behavior for DataX task to dolphinscheduler.</span>
 
 <span class="sd">    It should run database datax job in multiply sql link 
engine, such as:</span>
+
 <span class="sd">    - MySQL</span>
 <span class="sd">    - Oracle</span>
 <span class="sd">    - Postgresql</span>
 <span class="sd">    - SQLServer</span>
+
 <span class="sd">    You provider datasource_name and datatarget_name contain 
connection information, it decisions which</span>
 <span class="sd">    database type and database instance would synchronous 
data.</span>
+
+<span class="sd">    :param name: task name.</span>
+<span class="sd">    :param datasource_name: source database name for task 
datax to extract data.</span>
+<span class="sd">    :param datatarget_name: target database name for task 
datax to load data.</span>
+<span class="sd">    :param sql: sql statement for task datax to extract data 
form source database.</span>
+<span class="sd">    :param target_table: target table name for task datax to 
load data into target database.</span>
+<span class="sd">    :param datasource_type: source database type, 
dolphinscheduler use</span>
 <span class="sd">    &quot;&quot;&quot;</span>
 
     <span class="n">CUSTOM_CONFIG</span> <span class="o">=</span> <span 
class="mi">0</span>
@@ -174,6 +183,8 @@
         <span class="n">datatarget_name</span><span class="p">:</span> <span 
class="nb">str</span><span class="p">,</span>
         <span class="n">sql</span><span class="p">:</span> <span 
class="nb">str</span><span class="p">,</span>
         <span class="n">target_table</span><span class="p">:</span> <span 
class="nb">str</span><span class="p">,</span>
+        <span class="n">datasource_type</span><span class="p">:</span> <span 
class="n">Optional</span><span class="p">[</span><span 
class="nb">str</span><span class="p">]</span> <span class="o">=</span> <span 
class="kc">None</span><span class="p">,</span>
+        <span class="n">datatarget_type</span><span class="p">:</span> <span 
class="n">Optional</span><span class="p">[</span><span 
class="nb">str</span><span class="p">]</span> <span class="o">=</span> <span 
class="kc">None</span><span class="p">,</span>
         <span class="n">job_speed_byte</span><span class="p">:</span> <span 
class="n">Optional</span><span class="p">[</span><span 
class="nb">int</span><span class="p">]</span> <span class="o">=</span> <span 
class="mi">0</span><span class="p">,</span>
         <span class="n">job_speed_record</span><span class="p">:</span> <span 
class="n">Optional</span><span class="p">[</span><span 
class="nb">int</span><span class="p">]</span> <span class="o">=</span> <span 
class="mi">1000</span><span class="p">,</span>
         <span class="n">pre_statements</span><span class="p">:</span> <span 
class="n">Optional</span><span class="p">[</span><span 
class="n">List</span><span class="p">[</span><span class="nb">str</span><span 
class="p">]]</span> <span class="o">=</span> <span class="kc">None</span><span 
class="p">,</span>
@@ -186,7 +197,9 @@
         <span class="bp">self</span><span class="o">.</span><span 
class="n">_sql</span> <span class="o">=</span> <span class="n">sql</span>
         <span class="nb">super</span><span class="p">()</span><span 
class="o">.</span><span class="fm">__init__</span><span class="p">(</span><span 
class="n">name</span><span class="p">,</span> <span 
class="n">TaskType</span><span class="o">.</span><span 
class="n">DATAX</span><span class="p">,</span> <span class="o">*</span><span 
class="n">args</span><span class="p">,</span> <span class="o">**</span><span 
class="n">kwargs</span><span class="p">)</span>
         <span class="bp">self</span><span class="o">.</span><span 
class="n">custom_config</span> <span class="o">=</span> <span 
class="bp">self</span><span class="o">.</span><span 
class="n">CUSTOM_CONFIG</span>
+        <span class="bp">self</span><span class="o">.</span><span 
class="n">datasource_type</span> <span class="o">=</span> <span 
class="n">datasource_type</span>
         <span class="bp">self</span><span class="o">.</span><span 
class="n">datasource_name</span> <span class="o">=</span> <span 
class="n">datasource_name</span>
+        <span class="bp">self</span><span class="o">.</span><span 
class="n">datatarget_type</span> <span class="o">=</span> <span 
class="n">datatarget_type</span>
         <span class="bp">self</span><span class="o">.</span><span 
class="n">datatarget_name</span> <span class="o">=</span> <span 
class="n">datatarget_name</span>
         <span class="bp">self</span><span class="o">.</span><span 
class="n">target_table</span> <span class="o">=</span> <span 
class="n">target_table</span>
         <span class="bp">self</span><span class="o">.</span><span 
class="n">job_speed_byte</span> <span class="o">=</span> <span 
class="n">job_speed_byte</span>
@@ -196,6 +209,28 @@
         <span class="bp">self</span><span class="o">.</span><span 
class="n">xms</span> <span class="o">=</span> <span class="n">xms</span>
         <span class="bp">self</span><span class="o">.</span><span 
class="n">xmx</span> <span class="o">=</span> <span class="n">xmx</span>
 
+    <span class="nd">@property</span>
+    <span class="k">def</span> <span class="nf">source_params</span><span 
class="p">(</span><span class="bp">self</span><span class="p">)</span> <span 
class="o">-&gt;</span> <span class="n">Dict</span><span class="p">:</span>
+<span class="w">        </span><span class="sd">&quot;&quot;&quot;Get source 
params for datax task.&quot;&quot;&quot;</span>
+        <span class="n">datasource_task_u</span> <span class="o">=</span> 
<span class="n">Datasource</span><span class="o">.</span><span 
class="n">get_task_usage_4j</span><span class="p">(</span>
+            <span class="bp">self</span><span class="o">.</span><span 
class="n">datasource_name</span><span class="p">,</span> <span 
class="bp">self</span><span class="o">.</span><span 
class="n">datasource_type</span>
+        <span class="p">)</span>
+        <span class="k">return</span> <span class="p">{</span>
+            <span class="s2">&quot;dsType&quot;</span><span class="p">:</span> 
<span class="n">datasource_task_u</span><span class="o">.</span><span 
class="n">type</span><span class="p">,</span>
+            <span class="s2">&quot;dataSource&quot;</span><span 
class="p">:</span> <span class="n">datasource_task_u</span><span 
class="o">.</span><span class="n">id</span><span class="p">,</span>
+        <span class="p">}</span>
+
+    <span class="nd">@property</span>
+    <span class="k">def</span> <span class="nf">target_params</span><span 
class="p">(</span><span class="bp">self</span><span class="p">)</span> <span 
class="o">-&gt;</span> <span class="n">Dict</span><span class="p">:</span>
+<span class="w">        </span><span class="sd">&quot;&quot;&quot;Get target 
params for datax task.&quot;&quot;&quot;</span>
+        <span class="n">datasource_task_u</span> <span class="o">=</span> 
<span class="n">Datasource</span><span class="o">.</span><span 
class="n">get_task_usage_4j</span><span class="p">(</span>
+            <span class="bp">self</span><span class="o">.</span><span 
class="n">datatarget_name</span><span class="p">,</span> <span 
class="bp">self</span><span class="o">.</span><span 
class="n">datatarget_type</span>
+        <span class="p">)</span>
+        <span class="k">return</span> <span class="p">{</span>
+            <span class="s2">&quot;dtType&quot;</span><span class="p">:</span> 
<span class="n">datasource_task_u</span><span class="o">.</span><span 
class="n">type</span><span class="p">,</span>
+            <span class="s2">&quot;dataTarget&quot;</span><span 
class="p">:</span> <span class="n">datasource_task_u</span><span 
class="o">.</span><span class="n">id</span><span class="p">,</span>
+        <span class="p">}</span>
+
     <span class="nd">@property</span>
     <span class="k">def</span> <span class="nf">task_params</span><span 
class="p">(</span><span class="bp">self</span><span class="p">,</span> <span 
class="n">camel_attr</span><span class="p">:</span> <span 
class="nb">bool</span> <span class="o">=</span> <span 
class="kc">True</span><span class="p">,</span> <span 
class="n">custom_attr</span><span class="p">:</span> <span 
class="nb">set</span> <span class="o">=</span> <span 
class="kc">None</span><span class="p">)</span> <span class="o">-&g [...]
 <span class="w">        </span><span class="sd">&quot;&quot;&quot;Override 
Task.task_params for datax task.</span>
@@ -204,11 +239,8 @@
 <span class="sd">        directly set as python property, so we Override 
Task.task_params here.</span>
 <span class="sd">        &quot;&quot;&quot;</span>
         <span class="n">params</span> <span class="o">=</span> <span 
class="nb">super</span><span class="p">()</span><span class="o">.</span><span 
class="n">task_params</span>
-        <span class="n">datasource</span> <span class="o">=</span> <span 
class="n">Database</span><span class="p">(</span><span 
class="bp">self</span><span class="o">.</span><span 
class="n">datasource_name</span><span class="p">,</span> <span 
class="s2">&quot;dsType&quot;</span><span class="p">,</span> <span 
class="s2">&quot;dataSource&quot;</span><span class="p">)</span>
-        <span class="n">params</span><span class="o">.</span><span 
class="n">update</span><span class="p">(</span><span 
class="n">datasource</span><span class="p">)</span>
-
-        <span class="n">datatarget</span> <span class="o">=</span> <span 
class="n">Database</span><span class="p">(</span><span 
class="bp">self</span><span class="o">.</span><span 
class="n">datatarget_name</span><span class="p">,</span> <span 
class="s2">&quot;dtType&quot;</span><span class="p">,</span> <span 
class="s2">&quot;dataTarget&quot;</span><span class="p">)</span>
-        <span class="n">params</span><span class="o">.</span><span 
class="n">update</span><span class="p">(</span><span 
class="n">datatarget</span><span class="p">)</span>
+        <span class="n">params</span><span class="o">.</span><span 
class="n">update</span><span class="p">(</span><span 
class="bp">self</span><span class="o">.</span><span 
class="n">source_params</span><span class="p">)</span>
+        <span class="n">params</span><span class="o">.</span><span 
class="n">update</span><span class="p">(</span><span 
class="bp">self</span><span class="o">.</span><span 
class="n">target_params</span><span class="p">)</span>
         <span class="k">return</span> <span class="n">params</span></div>
 </pre></div>
 
diff --git a/python/main/_modules/pydolphinscheduler/tasks/procedure.html 
b/python/main/_modules/pydolphinscheduler/tasks/procedure.html
index 2698854953..530cdefc01 100644
--- a/python/main/_modules/pydolphinscheduler/tasks/procedure.html
+++ b/python/main/_modules/pydolphinscheduler/tasks/procedure.html
@@ -102,11 +102,11 @@
 
 <span class="sd">&quot;&quot;&quot;Task procedure.&quot;&quot;&quot;</span>
 
-<span class="kn">from</span> <span class="nn">typing</span> <span 
class="kn">import</span> <span class="n">Dict</span>
+<span class="kn">from</span> <span class="nn">typing</span> <span 
class="kn">import</span> <span class="n">Dict</span><span class="p">,</span> 
<span class="n">Optional</span>
 
 <span class="kn">from</span> <span 
class="nn">pydolphinscheduler.constants</span> <span class="kn">import</span> 
<span class="n">TaskType</span>
-<span class="kn">from</span> <span 
class="nn">pydolphinscheduler.core.database</span> <span 
class="kn">import</span> <span class="n">Database</span>
 <span class="kn">from</span> <span 
class="nn">pydolphinscheduler.core.task</span> <span class="kn">import</span> 
<span class="n">Task</span>
+<span class="kn">from</span> <span 
class="nn">pydolphinscheduler.models.datasource</span> <span 
class="kn">import</span> <span class="n">Datasource</span>
 
 
 <div class="viewcode-block" id="Procedure"><a class="viewcode-back" 
href="../../../tasks/procedure.html#pydolphinscheduler.tasks.Procedure">[docs]</a><span
 class="k">class</span> <span class="nc">Procedure</span><span 
class="p">(</span><span class="n">Task</span><span class="p">):</span>
@@ -127,11 +127,31 @@
 
     <span class="n">_task_custom_attr</span> <span class="o">=</span> <span 
class="p">{</span><span class="s2">&quot;method&quot;</span><span 
class="p">}</span>
 
-    <span class="k">def</span> <span class="fm">__init__</span><span 
class="p">(</span><span class="bp">self</span><span class="p">,</span> <span 
class="n">name</span><span class="p">:</span> <span class="nb">str</span><span 
class="p">,</span> <span class="n">datasource_name</span><span 
class="p">:</span> <span class="nb">str</span><span class="p">,</span> <span 
class="n">method</span><span class="p">:</span> <span 
class="nb">str</span><span class="p">,</span> <span class="o">*</span><sp [...]
+    <span class="k">def</span> <span class="fm">__init__</span><span 
class="p">(</span>
+        <span class="bp">self</span><span class="p">,</span>
+        <span class="n">name</span><span class="p">:</span> <span 
class="nb">str</span><span class="p">,</span>
+        <span class="n">datasource_name</span><span class="p">:</span> <span 
class="nb">str</span><span class="p">,</span>
+        <span class="n">method</span><span class="p">:</span> <span 
class="nb">str</span><span class="p">,</span>
+        <span class="n">datasource_type</span><span class="p">:</span> <span 
class="n">Optional</span><span class="p">[</span><span 
class="nb">str</span><span class="p">]</span> <span class="o">=</span> <span 
class="kc">None</span><span class="p">,</span>
+        <span class="o">*</span><span class="n">args</span><span 
class="p">,</span>
+        <span class="o">**</span><span class="n">kwargs</span>
+    <span class="p">):</span>
         <span class="nb">super</span><span class="p">()</span><span 
class="o">.</span><span class="fm">__init__</span><span class="p">(</span><span 
class="n">name</span><span class="p">,</span> <span 
class="n">TaskType</span><span class="o">.</span><span 
class="n">PROCEDURE</span><span class="p">,</span> <span 
class="o">*</span><span class="n">args</span><span class="p">,</span> <span 
class="o">**</span><span class="n">kwargs</span><span class="p">)</span>
         <span class="bp">self</span><span class="o">.</span><span 
class="n">datasource_name</span> <span class="o">=</span> <span 
class="n">datasource_name</span>
+        <span class="bp">self</span><span class="o">.</span><span 
class="n">datasource_type</span> <span class="o">=</span> <span 
class="n">datasource_type</span>
         <span class="bp">self</span><span class="o">.</span><span 
class="n">method</span> <span class="o">=</span> <span class="n">method</span>
 
+    <span class="nd">@property</span>
+    <span class="k">def</span> <span class="nf">datasource</span><span 
class="p">(</span><span class="bp">self</span><span class="p">)</span> <span 
class="o">-&gt;</span> <span class="n">Dict</span><span class="p">:</span>
+<span class="w">        </span><span class="sd">&quot;&quot;&quot;Get 
datasource for procedure task.&quot;&quot;&quot;</span>
+        <span class="n">datasource_task_u</span> <span class="o">=</span> 
<span class="n">Datasource</span><span class="o">.</span><span 
class="n">get_task_usage_4j</span><span class="p">(</span>
+            <span class="bp">self</span><span class="o">.</span><span 
class="n">datasource_name</span><span class="p">,</span> <span 
class="bp">self</span><span class="o">.</span><span 
class="n">datasource_type</span>
+        <span class="p">)</span>
+        <span class="k">return</span> <span class="p">{</span>
+            <span class="s2">&quot;datasource&quot;</span><span 
class="p">:</span> <span class="n">datasource_task_u</span><span 
class="o">.</span><span class="n">id</span><span class="p">,</span>
+            <span class="s2">&quot;type&quot;</span><span class="p">:</span> 
<span class="n">datasource_task_u</span><span class="o">.</span><span 
class="n">type</span><span class="p">,</span>
+        <span class="p">}</span>
+
     <span class="nd">@property</span>
     <span class="k">def</span> <span class="nf">task_params</span><span 
class="p">(</span><span class="bp">self</span><span class="p">,</span> <span 
class="n">camel_attr</span><span class="p">:</span> <span 
class="nb">bool</span> <span class="o">=</span> <span 
class="kc">True</span><span class="p">,</span> <span 
class="n">custom_attr</span><span class="p">:</span> <span 
class="nb">set</span> <span class="o">=</span> <span 
class="kc">None</span><span class="p">)</span> <span class="o">-&g [...]
 <span class="w">        </span><span class="sd">&quot;&quot;&quot;Override 
Task.task_params for produce task.</span>
@@ -140,8 +160,7 @@
 <span class="sd">        directly set as python property, so we Override 
Task.task_params here.</span>
 <span class="sd">        &quot;&quot;&quot;</span>
         <span class="n">params</span> <span class="o">=</span> <span 
class="nb">super</span><span class="p">()</span><span class="o">.</span><span 
class="n">task_params</span>
-        <span class="n">datasource</span> <span class="o">=</span> <span 
class="n">Database</span><span class="p">(</span><span 
class="bp">self</span><span class="o">.</span><span 
class="n">datasource_name</span><span class="p">,</span> <span 
class="s2">&quot;type&quot;</span><span class="p">,</span> <span 
class="s2">&quot;datasource&quot;</span><span class="p">)</span>
-        <span class="n">params</span><span class="o">.</span><span 
class="n">update</span><span class="p">(</span><span 
class="n">datasource</span><span class="p">)</span>
+        <span class="n">params</span><span class="o">.</span><span 
class="n">update</span><span class="p">(</span><span 
class="bp">self</span><span class="o">.</span><span 
class="n">datasource</span><span class="p">)</span>
         <span class="k">return</span> <span class="n">params</span></div>
 </pre></div>
 
diff --git a/python/main/_modules/pydolphinscheduler/tasks/sql.html 
b/python/main/_modules/pydolphinscheduler/tasks/sql.html
index 9c8d88a4a7..3eec4feb7e 100644
--- a/python/main/_modules/pydolphinscheduler/tasks/sql.html
+++ b/python/main/_modules/pydolphinscheduler/tasks/sql.html
@@ -107,8 +107,8 @@
 <span class="kn">from</span> <span class="nn">typing</span> <span 
class="kn">import</span> <span class="n">Dict</span><span class="p">,</span> 
<span class="n">List</span><span class="p">,</span> <span 
class="n">Optional</span><span class="p">,</span> <span 
class="n">Sequence</span><span class="p">,</span> <span class="n">Union</span>
 
 <span class="kn">from</span> <span 
class="nn">pydolphinscheduler.constants</span> <span class="kn">import</span> 
<span class="n">TaskType</span>
-<span class="kn">from</span> <span 
class="nn">pydolphinscheduler.core.database</span> <span 
class="kn">import</span> <span class="n">Database</span>
 <span class="kn">from</span> <span 
class="nn">pydolphinscheduler.core.task</span> <span class="kn">import</span> 
<span class="n">Task</span>
+<span class="kn">from</span> <span 
class="nn">pydolphinscheduler.models.datasource</span> <span 
class="kn">import</span> <span class="n">Datasource</span>
 
 <span class="n">log</span> <span class="o">=</span> <span 
class="n">logging</span><span class="o">.</span><span 
class="n">getLogger</span><span class="p">(</span><span 
class="vm">__file__</span><span class="p">)</span>
 
@@ -164,9 +164,10 @@
         <span class="n">name</span><span class="p">:</span> <span 
class="nb">str</span><span class="p">,</span>
         <span class="n">datasource_name</span><span class="p">:</span> <span 
class="nb">str</span><span class="p">,</span>
         <span class="n">sql</span><span class="p">:</span> <span 
class="nb">str</span><span class="p">,</span>
+        <span class="n">datasource_type</span><span class="p">:</span> <span 
class="n">Optional</span><span class="p">[</span><span 
class="nb">str</span><span class="p">]</span> <span class="o">=</span> <span 
class="kc">None</span><span class="p">,</span>
         <span class="n">sql_type</span><span class="p">:</span> <span 
class="n">Optional</span><span class="p">[</span><span 
class="nb">str</span><span class="p">]</span> <span class="o">=</span> <span 
class="kc">None</span><span class="p">,</span>
-        <span class="n">pre_statements</span><span class="p">:</span> <span 
class="n">Optional</span><span class="p">[</span><span 
class="n">Union</span><span class="p">[</span><span class="nb">str</span><span 
class="p">,</span> <span class="n">Sequence</span><span class="p">[</span><span 
class="nb">str</span><span class="p">]]]</span> <span class="o">=</span> <span 
class="kc">None</span><span class="p">,</span>
-        <span class="n">post_statements</span><span class="p">:</span> <span 
class="n">Optional</span><span class="p">[</span><span 
class="n">Union</span><span class="p">[</span><span class="nb">str</span><span 
class="p">,</span> <span class="n">Sequence</span><span class="p">[</span><span 
class="nb">str</span><span class="p">]]]</span> <span class="o">=</span> <span 
class="kc">None</span><span class="p">,</span>
+        <span class="n">pre_statements</span><span class="p">:</span> <span 
class="n">Union</span><span class="p">[</span><span class="nb">str</span><span 
class="p">,</span> <span class="n">Sequence</span><span class="p">[</span><span 
class="nb">str</span><span class="p">],</span> <span 
class="kc">None</span><span class="p">]</span> <span class="o">=</span> <span 
class="kc">None</span><span class="p">,</span>
+        <span class="n">post_statements</span><span class="p">:</span> <span 
class="n">Union</span><span class="p">[</span><span class="nb">str</span><span 
class="p">,</span> <span class="n">Sequence</span><span class="p">[</span><span 
class="nb">str</span><span class="p">],</span> <span 
class="kc">None</span><span class="p">]</span> <span class="o">=</span> <span 
class="kc">None</span><span class="p">,</span>
         <span class="n">display_rows</span><span class="p">:</span> <span 
class="n">Optional</span><span class="p">[</span><span 
class="nb">int</span><span class="p">]</span> <span class="o">=</span> <span 
class="mi">10</span><span class="p">,</span>
         <span class="o">*</span><span class="n">args</span><span 
class="p">,</span>
         <span class="o">**</span><span class="n">kwargs</span>
@@ -175,6 +176,7 @@
         <span class="nb">super</span><span class="p">()</span><span 
class="o">.</span><span class="fm">__init__</span><span class="p">(</span><span 
class="n">name</span><span class="p">,</span> <span 
class="n">TaskType</span><span class="o">.</span><span 
class="n">SQL</span><span class="p">,</span> <span class="o">*</span><span 
class="n">args</span><span class="p">,</span> <span class="o">**</span><span 
class="n">kwargs</span><span class="p">)</span>
         <span class="bp">self</span><span class="o">.</span><span 
class="n">param_sql_type</span> <span class="o">=</span> <span 
class="n">sql_type</span>
         <span class="bp">self</span><span class="o">.</span><span 
class="n">datasource_name</span> <span class="o">=</span> <span 
class="n">datasource_name</span>
+        <span class="bp">self</span><span class="o">.</span><span 
class="n">datasource_type</span> <span class="o">=</span> <span 
class="n">datasource_type</span>
         <span class="bp">self</span><span class="o">.</span><span 
class="n">pre_statements</span> <span class="o">=</span> <span 
class="bp">self</span><span class="o">.</span><span 
class="n">get_stm_list</span><span class="p">(</span><span 
class="n">pre_statements</span><span class="p">)</span>
         <span class="bp">self</span><span class="o">.</span><span 
class="n">post_statements</span> <span class="o">=</span> <span 
class="bp">self</span><span class="o">.</span><span 
class="n">get_stm_list</span><span class="p">(</span><span 
class="n">post_statements</span><span class="p">)</span>
         <span class="bp">self</span><span class="o">.</span><span 
class="n">display_rows</span> <span class="o">=</span> <span 
class="n">display_rows</span>
@@ -219,6 +221,17 @@
         <span class="k">else</span><span class="p">:</span>
             <span class="k">return</span> <span class="n">SqlType</span><span 
class="o">.</span><span class="n">SELECT</span>
 
+    <span class="nd">@property</span>
+    <span class="k">def</span> <span class="nf">datasource</span><span 
class="p">(</span><span class="bp">self</span><span class="p">)</span> <span 
class="o">-&gt;</span> <span class="n">Dict</span><span class="p">:</span>
+<span class="w">        </span><span class="sd">&quot;&quot;&quot;Get 
datasource for procedure sql.&quot;&quot;&quot;</span>
+        <span class="n">datasource_task_u</span> <span class="o">=</span> 
<span class="n">Datasource</span><span class="o">.</span><span 
class="n">get_task_usage_4j</span><span class="p">(</span>
+            <span class="bp">self</span><span class="o">.</span><span 
class="n">datasource_name</span><span class="p">,</span> <span 
class="bp">self</span><span class="o">.</span><span 
class="n">datasource_type</span>
+        <span class="p">)</span>
+        <span class="k">return</span> <span class="p">{</span>
+            <span class="s2">&quot;datasource&quot;</span><span 
class="p">:</span> <span class="n">datasource_task_u</span><span 
class="o">.</span><span class="n">id</span><span class="p">,</span>
+            <span class="s2">&quot;type&quot;</span><span class="p">:</span> 
<span class="n">datasource_task_u</span><span class="o">.</span><span 
class="n">type</span><span class="p">,</span>
+        <span class="p">}</span>
+
     <span class="nd">@property</span>
     <span class="k">def</span> <span class="nf">task_params</span><span 
class="p">(</span><span class="bp">self</span><span class="p">,</span> <span 
class="n">camel_attr</span><span class="p">:</span> <span 
class="nb">bool</span> <span class="o">=</span> <span 
class="kc">True</span><span class="p">,</span> <span 
class="n">custom_attr</span><span class="p">:</span> <span 
class="nb">set</span> <span class="o">=</span> <span 
class="kc">None</span><span class="p">)</span> <span class="o">-&g [...]
 <span class="w">        </span><span class="sd">&quot;&quot;&quot;Override 
Task.task_params for sql task.</span>
@@ -227,8 +240,7 @@
 <span class="sd">        directly set as python property, so we Override 
Task.task_params here.</span>
 <span class="sd">        &quot;&quot;&quot;</span>
         <span class="n">params</span> <span class="o">=</span> <span 
class="nb">super</span><span class="p">()</span><span class="o">.</span><span 
class="n">task_params</span>
-        <span class="n">datasource</span> <span class="o">=</span> <span 
class="n">Database</span><span class="p">(</span><span 
class="bp">self</span><span class="o">.</span><span 
class="n">datasource_name</span><span class="p">,</span> <span 
class="s2">&quot;type&quot;</span><span class="p">,</span> <span 
class="s2">&quot;datasource&quot;</span><span class="p">)</span>
-        <span class="n">params</span><span class="o">.</span><span 
class="n">update</span><span class="p">(</span><span 
class="n">datasource</span><span class="p">)</span>
+        <span class="n">params</span><span class="o">.</span><span 
class="n">update</span><span class="p">(</span><span 
class="bp">self</span><span class="o">.</span><span 
class="n">datasource</span><span class="p">)</span>
         <span class="k">return</span> <span class="n">params</span></div>
 </pre></div>
 
diff --git a/python/main/api.html b/python/main/api.html
index 77e1448657..006453d6e0 100644
--- a/python/main/api.html
+++ b/python/main/api.html
@@ -58,23 +58,6 @@
 <li class="toctree-l1"><a class="reference internal" 
href="config.html">Configuration</a></li>
 <li class="toctree-l1 current"><a class="current reference internal" 
href="#">API</a><ul>
 <li class="toctree-l2"><a class="reference internal" 
href="#module-pydolphinscheduler.core">Core</a><ul>
-<li class="toctree-l3"><a class="reference internal" 
href="#pydolphinscheduler.core.Database"><code class="docutils literal 
notranslate"><span class="pre">Database</span></code></a><ul>
-<li class="toctree-l4"><a class="reference internal" 
href="#pydolphinscheduler.core.Database.clear"><code class="docutils literal 
notranslate"><span class="pre">Database.clear()</span></code></a></li>
-<li class="toctree-l4"><a class="reference internal" 
href="#pydolphinscheduler.core.Database.copy"><code class="docutils literal 
notranslate"><span class="pre">Database.copy()</span></code></a></li>
-<li class="toctree-l4"><a class="reference internal" 
href="#pydolphinscheduler.core.Database.fromkeys"><code class="docutils literal 
notranslate"><span class="pre">Database.fromkeys()</span></code></a></li>
-<li class="toctree-l4"><a class="reference internal" 
href="#pydolphinscheduler.core.Database.get"><code class="docutils literal 
notranslate"><span class="pre">Database.get()</span></code></a></li>
-<li class="toctree-l4"><a class="reference internal" 
href="#pydolphinscheduler.core.Database.get_database_info"><code 
class="docutils literal notranslate"><span 
class="pre">Database.get_database_info()</span></code></a></li>
-<li class="toctree-l4"><a class="reference internal" 
href="#pydolphinscheduler.core.Database.items"><code class="docutils literal 
notranslate"><span class="pre">Database.items()</span></code></a></li>
-<li class="toctree-l4"><a class="reference internal" 
href="#pydolphinscheduler.core.Database.keys"><code class="docutils literal 
notranslate"><span class="pre">Database.keys()</span></code></a></li>
-<li class="toctree-l4"><a class="reference internal" 
href="#pydolphinscheduler.core.Database.pop"><code class="docutils literal 
notranslate"><span class="pre">Database.pop()</span></code></a></li>
-<li class="toctree-l4"><a class="reference internal" 
href="#pydolphinscheduler.core.Database.popitem"><code class="docutils literal 
notranslate"><span class="pre">Database.popitem()</span></code></a></li>
-<li class="toctree-l4"><a class="reference internal" 
href="#pydolphinscheduler.core.Database.setdefault"><code class="docutils 
literal notranslate"><span 
class="pre">Database.setdefault()</span></code></a></li>
-<li class="toctree-l4"><a class="reference internal" 
href="#pydolphinscheduler.core.Database.update"><code class="docutils literal 
notranslate"><span class="pre">Database.update()</span></code></a></li>
-<li class="toctree-l4"><a class="reference internal" 
href="#pydolphinscheduler.core.Database.values"><code class="docutils literal 
notranslate"><span class="pre">Database.values()</span></code></a></li>
-<li class="toctree-l4"><a class="reference internal" 
href="#pydolphinscheduler.core.Database.database_id"><code class="docutils 
literal notranslate"><span 
class="pre">Database.database_id</span></code></a></li>
-<li class="toctree-l4"><a class="reference internal" 
href="#pydolphinscheduler.core.Database.database_type"><code class="docutils 
literal notranslate"><span 
class="pre">Database.database_type</span></code></a></li>
-</ul>
-</li>
 <li class="toctree-l3"><a class="reference internal" 
href="#pydolphinscheduler.core.Engine"><code class="docutils literal 
notranslate"><span class="pre">Engine</span></code></a><ul>
 <li class="toctree-l4"><a class="reference internal" 
href="#pydolphinscheduler.core.Engine._get_attr"><code class="docutils literal 
notranslate"><span class="pre">Engine._get_attr()</span></code></a></li>
 <li class="toctree-l4"><a class="reference internal" 
href="#pydolphinscheduler.core.Engine._set_deps"><code class="docutils literal 
notranslate"><span class="pre">Engine._set_deps()</span></code></a></li>
@@ -483,6 +466,8 @@
 <li class="toctree-l4"><a class="reference internal" 
href="#pydolphinscheduler.tasks.DataX.is_cache"><code class="docutils literal 
notranslate"><span class="pre">DataX.is_cache</span></code></a></li>
 <li class="toctree-l4"><a class="reference internal" 
href="#pydolphinscheduler.tasks.DataX.local_params"><code class="docutils 
literal notranslate"><span class="pre">DataX.local_params</span></code></a></li>
 <li class="toctree-l4"><a class="reference internal" 
href="#pydolphinscheduler.tasks.DataX.resource_list"><code class="docutils 
literal notranslate"><span 
class="pre">DataX.resource_list</span></code></a></li>
+<li class="toctree-l4"><a class="reference internal" 
href="#pydolphinscheduler.tasks.DataX.source_params"><code class="docutils 
literal notranslate"><span 
class="pre">DataX.source_params</span></code></a></li>
+<li class="toctree-l4"><a class="reference internal" 
href="#pydolphinscheduler.tasks.DataX.target_params"><code class="docutils 
literal notranslate"><span 
class="pre">DataX.target_params</span></code></a></li>
 <li class="toctree-l4"><a class="reference internal" 
href="#pydolphinscheduler.tasks.DataX.task_params"><code class="docutils 
literal notranslate"><span class="pre">DataX.task_params</span></code></a></li>
 <li class="toctree-l4"><a class="reference internal" 
href="#pydolphinscheduler.tasks.DataX.timeout"><code class="docutils literal 
notranslate"><span class="pre">DataX.timeout</span></code></a></li>
 <li class="toctree-l4"><a class="reference internal" 
href="#pydolphinscheduler.tasks.DataX.timeout_flag"><code class="docutils 
literal notranslate"><span class="pre">DataX.timeout_flag</span></code></a></li>
@@ -899,6 +884,7 @@
 <li class="toctree-l4"><a class="reference internal" 
href="#pydolphinscheduler.tasks.Procedure._timeout"><code class="docutils 
literal notranslate"><span class="pre">Procedure._timeout</span></code></a></li>
 <li class="toctree-l4"><a class="reference internal" 
href="#pydolphinscheduler.tasks.Procedure._upstream_task_codes"><code 
class="docutils literal notranslate"><span 
class="pre">Procedure._upstream_task_codes</span></code></a></li>
 <li class="toctree-l4"><a class="reference internal" 
href="#pydolphinscheduler.tasks.Procedure.condition_result"><code 
class="docutils literal notranslate"><span 
class="pre">Procedure.condition_result</span></code></a></li>
+<li class="toctree-l4"><a class="reference internal" 
href="#pydolphinscheduler.tasks.Procedure.datasource"><code class="docutils 
literal notranslate"><span 
class="pre">Procedure.datasource</span></code></a></li>
 <li class="toctree-l4"><a class="reference internal" 
href="#pydolphinscheduler.tasks.Procedure.environment_code"><code 
class="docutils literal notranslate"><span 
class="pre">Procedure.environment_code</span></code></a></li>
 <li class="toctree-l4"><a class="reference internal" 
href="#pydolphinscheduler.tasks.Procedure.ext"><code class="docutils literal 
notranslate"><span class="pre">Procedure.ext</span></code></a></li>
 <li class="toctree-l4"><a class="reference internal" 
href="#pydolphinscheduler.tasks.Procedure.ext_attr"><code class="docutils 
literal notranslate"><span class="pre">Procedure.ext_attr</span></code></a></li>
@@ -1127,6 +1113,7 @@
 <li class="toctree-l4"><a class="reference internal" 
href="#pydolphinscheduler.tasks.Sql._timeout"><code class="docutils literal 
notranslate"><span class="pre">Sql._timeout</span></code></a></li>
 <li class="toctree-l4"><a class="reference internal" 
href="#pydolphinscheduler.tasks.Sql._upstream_task_codes"><code class="docutils 
literal notranslate"><span 
class="pre">Sql._upstream_task_codes</span></code></a></li>
 <li class="toctree-l4"><a class="reference internal" 
href="#pydolphinscheduler.tasks.Sql.condition_result"><code class="docutils 
literal notranslate"><span 
class="pre">Sql.condition_result</span></code></a></li>
+<li class="toctree-l4"><a class="reference internal" 
href="#pydolphinscheduler.tasks.Sql.datasource"><code class="docutils literal 
notranslate"><span class="pre">Sql.datasource</span></code></a></li>
 <li class="toctree-l4"><a class="reference internal" 
href="#pydolphinscheduler.tasks.Sql.environment_code"><code class="docutils 
literal notranslate"><span 
class="pre">Sql.environment_code</span></code></a></li>
 <li class="toctree-l4"><a class="reference internal" 
href="#pydolphinscheduler.tasks.Sql.ext"><code class="docutils literal 
notranslate"><span class="pre">Sql.ext</span></code></a></li>
 <li class="toctree-l4"><a class="reference internal" 
href="#pydolphinscheduler.tasks.Sql.ext_attr"><code class="docutils literal 
notranslate"><span class="pre">Sql.ext_attr</span></code></a></li>
@@ -1246,6 +1233,11 @@
 <li class="toctree-l4"><a class="reference internal" 
href="#pydolphinscheduler.constants.JavaGatewayDefault.RESULT_STATUS_SUCCESS"><code
 class="docutils literal notranslate"><span 
class="pre">JavaGatewayDefault.RESULT_STATUS_SUCCESS</span></code></a></li>
 </ul>
 </li>
+<li class="toctree-l3"><a class="reference internal" 
href="#pydolphinscheduler.constants.Keyword"><code class="docutils literal 
notranslate"><span class="pre">Keyword</span></code></a><ul>
+<li class="toctree-l4"><a class="reference internal" 
href="#pydolphinscheduler.constants.Keyword.DATASOURCE_ID"><code 
class="docutils literal notranslate"><span 
class="pre">Keyword.DATASOURCE_ID</span></code></a></li>
+<li class="toctree-l4"><a class="reference internal" 
href="#pydolphinscheduler.constants.Keyword.DATASOURCE_TYPE"><code 
class="docutils literal notranslate"><span 
class="pre">Keyword.DATASOURCE_TYPE</span></code></a></li>
+</ul>
+</li>
 <li class="toctree-l3"><a class="reference internal" 
href="#pydolphinscheduler.constants.ResourceKey"><code class="docutils literal 
notranslate"><span class="pre">ResourceKey</span></code></a><ul>
 <li class="toctree-l4"><a class="reference internal" 
href="#pydolphinscheduler.constants.ResourceKey.NAME"><code class="docutils 
literal notranslate"><span class="pre">ResourceKey.NAME</span></code></a></li>
 </ul>
@@ -1360,97 +1352,6 @@
 <section id="module-pydolphinscheduler.core">
 <span id="core"></span><h2>Core<a class="headerlink" 
href="#module-pydolphinscheduler.core" title="Permalink to this 
heading"></a></h2>
 <p>Init pydolphinscheduler.core package.</p>
-<dl class="py class">
-<dt class="sig sig-object py" id="pydolphinscheduler.core.Database">
-<em class="property"><span class="pre">class</span><span class="w"> 
</span></em><span class="sig-prename descclassname"><span 
class="pre">pydolphinscheduler.core.</span></span><span class="sig-name 
descname"><span class="pre">Database</span></span><span 
class="sig-paren">(</span><em class="sig-param"><span class="n"><span 
class="pre">database_name</span></span><span class="p"><span 
class="pre">:</span></span><span class="w"> </span><span class="n"><span 
class="pre">str</span></span></em> [...]
-<dd><p>Bases: <code class="xref py py-class docutils literal 
notranslate"><span class="pre">dict</span></code></p>
-<p>database object, get information about database.</p>
-<p>You provider database_name contain connection information, it decisions 
which
-database type and database instance would run task.</p>
-<dl class="py method">
-<dt class="sig sig-object py" id="pydolphinscheduler.core.Database.clear">
-<span class="sig-name descname"><span class="pre">clear</span></span><span 
class="sig-paren">(</span><span class="sig-paren">)</span> <span 
class="sig-return"><span class="sig-return-icon">&#x2192;</span> <span 
class="sig-return-typehint"><span class="pre">None.</span>&#160; <span 
class="pre">Remove</span> <span class="pre">all</span> <span 
class="pre">items</span> <span class="pre">from</span> <span 
class="pre">D.</span></span></span><a class="headerlink" 
href="#pydolphinscheduler.core. [...]
-<dd></dd></dl>
-
-<dl class="py method">
-<dt class="sig sig-object py" id="pydolphinscheduler.core.Database.copy">
-<span class="sig-name descname"><span class="pre">copy</span></span><span 
class="sig-paren">(</span><span class="sig-paren">)</span> <span 
class="sig-return"><span class="sig-return-icon">&#x2192;</span> <span 
class="sig-return-typehint"><span class="pre">a</span> <span 
class="pre">shallow</span> <span class="pre">copy</span> <span 
class="pre">of</span> <span class="pre">D</span></span></span><a 
class="headerlink" href="#pydolphinscheduler.core.Database.copy" 
title="Permalink to this def [...]
-<dd></dd></dl>
-
-<dl class="py method">
-<dt class="sig sig-object py" id="pydolphinscheduler.core.Database.fromkeys">
-<span class="sig-name descname"><span class="pre">fromkeys</span></span><span 
class="sig-paren">(</span><em class="sig-param"><span class="n"><span 
class="pre">value=None</span></span></em>, <em class="sig-param"><span 
class="n"><span class="pre">/</span></span></em><span 
class="sig-paren">)</span><a class="headerlink" 
href="#pydolphinscheduler.core.Database.fromkeys" title="Permalink to this 
definition"></a></dt>
-<dd><p>Create a new dictionary with keys from iterable and values set to 
value.</p>
-</dd></dl>
-
-<dl class="py method">
-<dt class="sig sig-object py" id="pydolphinscheduler.core.Database.get">
-<span class="sig-name descname"><span class="pre">get</span></span><span 
class="sig-paren">(</span><em class="sig-param"><span class="n"><span 
class="pre">key</span></span></em>, <em class="sig-param"><span class="n"><span 
class="pre">default=None</span></span></em>, <em class="sig-param"><span 
class="n"><span class="pre">/</span></span></em><span 
class="sig-paren">)</span><a class="headerlink" 
href="#pydolphinscheduler.core.Database.get" title="Permalink to this 
definition"></a></dt>
-<dd><p>Return the value for key if key is in the dictionary, else default.</p>
-</dd></dl>
-
-<dl class="py method">
-<dt class="sig sig-object py" 
id="pydolphinscheduler.core.Database.get_database_info">
-<span class="sig-name descname"><span 
class="pre">get_database_info</span></span><span class="sig-paren">(</span><em 
class="sig-param"><span class="n"><span 
class="pre">name</span></span></em><span class="sig-paren">)</span> <span 
class="sig-return"><span class="sig-return-icon">&#x2192;</span> <span 
class="sig-return-typehint"><span class="pre">Dict</span></span></span><a 
class="reference internal" 
href="_modules/pydolphinscheduler/core/database.html#Database.get_database_info"><span
 cl [...]
-<dd><p>Get database info from java gateway, contains database id, type, 
name.</p>
-</dd></dl>
-
-<dl class="py method">
-<dt class="sig sig-object py" id="pydolphinscheduler.core.Database.items">
-<span class="sig-name descname"><span class="pre">items</span></span><span 
class="sig-paren">(</span><span class="sig-paren">)</span> <span 
class="sig-return"><span class="sig-return-icon">&#x2192;</span> <span 
class="sig-return-typehint"><span class="pre">a</span> <span 
class="pre">set-like</span> <span class="pre">object</span> <span 
class="pre">providing</span> <span class="pre">a</span> <span 
class="pre">view</span> <span class="pre">on</span> <span 
class="pre">D's</span> <span class [...]
-<dd></dd></dl>
-
-<dl class="py method">
-<dt class="sig sig-object py" id="pydolphinscheduler.core.Database.keys">
-<span class="sig-name descname"><span class="pre">keys</span></span><span 
class="sig-paren">(</span><span class="sig-paren">)</span> <span 
class="sig-return"><span class="sig-return-icon">&#x2192;</span> <span 
class="sig-return-typehint"><span class="pre">a</span> <span 
class="pre">set-like</span> <span class="pre">object</span> <span 
class="pre">providing</span> <span class="pre">a</span> <span 
class="pre">view</span> <span class="pre">on</span> <span 
class="pre">D's</span> <span class= [...]
-<dd></dd></dl>
-
-<dl class="py method">
-<dt class="sig sig-object py" id="pydolphinscheduler.core.Database.pop">
-<span class="sig-name descname"><span class="pre">pop</span></span><span 
class="sig-paren">(</span><em class="sig-param"><span class="n"><span 
class="pre">k</span></span></em><span class="optional">[</span>, <em 
class="sig-param"><span class="n"><span class="pre">d</span></span></em><span 
class="optional">]</span><span class="sig-paren">)</span> <span 
class="sig-return"><span class="sig-return-icon">&#x2192;</span> <span 
class="sig-return-typehint"><span class="pre">v,</span> <span class [...]
-<dd><p>If key is not found, d is returned if given, otherwise KeyError is 
raised</p>
-</dd></dl>
-
-<dl class="py method">
-<dt class="sig sig-object py" id="pydolphinscheduler.core.Database.popitem">
-<span class="sig-name descname"><span class="pre">popitem</span></span><span 
class="sig-paren">(</span><span class="sig-paren">)</span> <span 
class="sig-return"><span class="sig-return-icon">&#x2192;</span> <span 
class="sig-return-typehint"><span class="pre">(k,</span> <span 
class="pre">v),</span> <span class="pre">remove</span> <span 
class="pre">and</span> <span class="pre">return</span> <span 
class="pre">some</span> <span class="pre">(key,</span> <span 
class="pre">value)</span> <span c [...]
-<dd><p>2-tuple; but raise KeyError if D is empty.</p>
-</dd></dl>
-
-<dl class="py method">
-<dt class="sig sig-object py" id="pydolphinscheduler.core.Database.setdefault">
-<span class="sig-name descname"><span 
class="pre">setdefault</span></span><span class="sig-paren">(</span><em 
class="sig-param"><span class="n"><span class="pre">key</span></span></em>, <em 
class="sig-param"><span class="n"><span 
class="pre">default=None</span></span></em>, <em class="sig-param"><span 
class="n"><span class="pre">/</span></span></em><span 
class="sig-paren">)</span><a class="headerlink" 
href="#pydolphinscheduler.core.Database.setdefault" title="Permalink to this 
definition [...]
-<dd><p>Insert key with a value of default if key is not in the dictionary.</p>
-<p>Return the value for key if key is in the dictionary, else default.</p>
-</dd></dl>
-
-<dl class="py method">
-<dt class="sig sig-object py" id="pydolphinscheduler.core.Database.update">
-<span class="sig-name descname"><span class="pre">update</span></span><span 
class="sig-paren">(</span><span class="optional">[</span><em 
class="sig-param"><span class="n"><span class="pre">E</span></span></em>, <span 
class="optional">]</span><em class="sig-param"><span class="n"><span 
class="pre">**F</span></span></em><span class="sig-paren">)</span> <span 
class="sig-return"><span class="sig-return-icon">&#x2192;</span> <span 
class="sig-return-typehint"><span class="pre">None.</span>&#16 [...]
-<dd><p>If E is present and has a .keys() method, then does:  for k in E: D[k] 
= E[k]
-If E is present and lacks a .keys() method, then does:  for k, v in E: D[k] = v
-In either case, this is followed by: for k in F:  D[k] = F[k]</p>
-</dd></dl>
-
-<dl class="py method">
-<dt class="sig sig-object py" id="pydolphinscheduler.core.Database.values">
-<span class="sig-name descname"><span class="pre">values</span></span><span 
class="sig-paren">(</span><span class="sig-paren">)</span> <span 
class="sig-return"><span class="sig-return-icon">&#x2192;</span> <span 
class="sig-return-typehint"><span class="pre">an</span> <span 
class="pre">object</span> <span class="pre">providing</span> <span 
class="pre">a</span> <span class="pre">view</span> <span class="pre">on</span> 
<span class="pre">D's</span> <span class="pre">values</span></span></spa [...]
-<dd></dd></dl>
-
-<dl class="py property">
-<dt class="sig sig-object py" 
id="pydolphinscheduler.core.Database.database_id">
-<em class="property"><span class="pre">property</span><span class="w"> 
</span></em><span class="sig-name descname"><span 
class="pre">database_id</span></span><em class="property"><span class="p"><span 
class="pre">:</span></span><span class="w"> </span><span 
class="pre">str</span></em><a class="headerlink" 
href="#pydolphinscheduler.core.Database.database_id" title="Permalink to this 
definition"></a></dt>
-<dd><p>Get database id from java gateway, a wrapper for <a class="reference 
internal" href="#pydolphinscheduler.core.Database.get_database_info" 
title="pydolphinscheduler.core.Database.get_database_info"><code class="xref py 
py-func docutils literal notranslate"><span 
class="pre">get_database_info()</span></code></a>.</p>
-</dd></dl>
-
-<dl class="py property">
-<dt class="sig sig-object py" 
id="pydolphinscheduler.core.Database.database_type">
-<em class="property"><span class="pre">property</span><span class="w"> 
</span></em><span class="sig-name descname"><span 
class="pre">database_type</span></span><em class="property"><span 
class="p"><span class="pre">:</span></span><span class="w"> </span><span 
class="pre">str</span></em><a class="headerlink" 
href="#pydolphinscheduler.core.Database.database_type" title="Permalink to this 
definition"></a></dt>
-<dd><p>Get database type from java gateway, a wrapper for <a class="reference 
internal" href="#pydolphinscheduler.core.Database.get_database_info" 
title="pydolphinscheduler.core.Database.get_database_info"><code class="xref py 
py-func docutils literal notranslate"><span 
class="pre">get_database_info()</span></code></a>.</p>
-</dd></dl>
-
-</dd></dl>
-
 <dl class="py class">
 <dt class="sig sig-object py" id="pydolphinscheduler.core.Engine">
 <em class="property"><span class="pre">class</span><span class="w"> 
</span></em><span class="sig-prename descclassname"><span 
class="pre">pydolphinscheduler.core.</span></span><span class="sig-name 
descname"><span class="pre">Engine</span></span><span 
class="sig-paren">(</span><em class="sig-param"><span class="n"><span 
class="pre">name</span></span><span class="p"><span 
class="pre">:</span></span><span class="w"> </span><span class="n"><span 
class="pre">str</span></span></em>, <em class [...]
@@ -3785,16 +3686,30 @@ workflow.resource_plugin.</p>
 
 <dl class="py class">
 <dt class="sig sig-object py" id="pydolphinscheduler.tasks.DataX">
-<em class="property"><span class="pre">class</span><span class="w"> 
</span></em><span class="sig-prename descclassname"><span 
class="pre">pydolphinscheduler.tasks.</span></span><span class="sig-name 
descname"><span class="pre">DataX</span></span><span 
class="sig-paren">(</span><em class="sig-param"><span class="n"><span 
class="pre">name</span></span><span class="p"><span 
class="pre">:</span></span><span class="w"> </span><span class="n"><span 
class="pre">str</span></span></em>, <em class [...]
+<em class="property"><span class="pre">class</span><span class="w"> 
</span></em><span class="sig-prename descclassname"><span 
class="pre">pydolphinscheduler.tasks.</span></span><span class="sig-name 
descname"><span class="pre">DataX</span></span><span 
class="sig-paren">(</span><em class="sig-param"><span class="n"><span 
class="pre">name</span></span><span class="p"><span 
class="pre">:</span></span><span class="w"> </span><span class="n"><span 
class="pre">str</span></span></em>, <em class [...]
 <dd><p>Bases: <a class="reference internal" 
href="#pydolphinscheduler.core.Task" 
title="pydolphinscheduler.core.task.Task"><code class="xref py py-class 
docutils literal notranslate"><span class="pre">Task</span></code></a></p>
 <p>Task DataX object, declare behavior for DataX task to dolphinscheduler.</p>
-<p>It should run database datax job in multiply sql link engine, such as:
-- MySQL
-- Oracle
-- Postgresql
-- SQLServer
-You provider datasource_name and datatarget_name contain connection 
information, it decisions which
+<p>It should run database datax job in multiply sql link engine, such as:</p>
+<ul class="simple">
+<li><p>MySQL</p></li>
+<li><p>Oracle</p></li>
+<li><p>Postgresql</p></li>
+<li><p>SQLServer</p></li>
+</ul>
+<p>You provider datasource_name and datatarget_name contain connection 
information, it decisions which
 database type and database instance would synchronous data.</p>
+<dl class="field-list simple">
+<dt class="field-odd">Parameters<span class="colon">:</span></dt>
+<dd class="field-odd"><ul class="simple">
+<li><p><strong>name</strong> – task name.</p></li>
+<li><p><strong>datasource_name</strong> – source database name for task datax 
to extract data.</p></li>
+<li><p><strong>datatarget_name</strong> – target database name for task datax 
to load data.</p></li>
+<li><p><strong>sql</strong> – sql statement for task datax to extract data 
form source database.</p></li>
+<li><p><strong>target_table</strong> – target table name for task datax to 
load data into target database.</p></li>
+<li><p><strong>datasource_type</strong> – source database type, 
dolphinscheduler use</p></li>
+</ul>
+</dd>
+</dl>
 <dl class="py method">
 <dt class="sig sig-object py" id="pydolphinscheduler.tasks.DataX._get_attr">
 <span class="sig-name descname"><span class="pre">_get_attr</span></span><span 
class="sig-paren">(</span><span class="sig-paren">)</span> <span 
class="sig-return"><span class="sig-return-icon">&#x2192;</span> <span 
class="sig-return-typehint"><span class="pre">Set</span><span class="p"><span 
class="pre">[</span></span><span class="pre">str</span><span class="p"><span 
class="pre">]</span></span></span></span><a class="headerlink" 
href="#pydolphinscheduler.tasks.DataX._get_attr" title="Per [...]
@@ -4000,6 +3915,18 @@ workflow.resource_plugin.</p>
 <dd><p>Get task define attribute <cite>resource_list</cite>.</p>
 </dd></dl>
 
+<dl class="py property">
+<dt class="sig sig-object py" 
id="pydolphinscheduler.tasks.DataX.source_params">
+<em class="property"><span class="pre">property</span><span class="w"> 
</span></em><span class="sig-name descname"><span 
class="pre">source_params</span></span><em class="property"><span 
class="p"><span class="pre">:</span></span><span class="w"> </span><span 
class="pre">Dict</span></em><a class="headerlink" 
href="#pydolphinscheduler.tasks.DataX.source_params" title="Permalink to this 
definition"></a></dt>
+<dd><p>Get source params for datax task.</p>
+</dd></dl>
+
+<dl class="py property">
+<dt class="sig sig-object py" 
id="pydolphinscheduler.tasks.DataX.target_params">
+<em class="property"><span class="pre">property</span><span class="w"> 
</span></em><span class="sig-name descname"><span 
class="pre">target_params</span></span><em class="property"><span 
class="p"><span class="pre">:</span></span><span class="w"> </span><span 
class="pre">Dict</span></em><a class="headerlink" 
href="#pydolphinscheduler.tasks.DataX.target_params" title="Permalink to this 
definition"></a></dt>
+<dd><p>Get target params for datax task.</p>
+</dd></dl>
+
 <dl class="py property">
 <dt class="sig sig-object py" id="pydolphinscheduler.tasks.DataX.task_params">
 <em class="property"><span class="pre">property</span><span class="w"> 
</span></em><span class="sig-name descname"><span 
class="pre">task_params</span></span><em class="property"><span class="p"><span 
class="pre">:</span></span><span class="w"> </span><span 
class="pre">Dict</span></em><a class="headerlink" 
href="#pydolphinscheduler.tasks.DataX.task_params" title="Permalink to this 
definition"></a></dt>
@@ -6573,7 +6500,7 @@ workflow.resource_plugin.</p>
 
 <dl class="py class">
 <dt class="sig sig-object py" id="pydolphinscheduler.tasks.Procedure">
-<em class="property"><span class="pre">class</span><span class="w"> 
</span></em><span class="sig-prename descclassname"><span 
class="pre">pydolphinscheduler.tasks.</span></span><span class="sig-name 
descname"><span class="pre">Procedure</span></span><span 
class="sig-paren">(</span><em class="sig-param"><span class="n"><span 
class="pre">name</span></span><span class="p"><span 
class="pre">:</span></span><span class="w"> </span><span class="n"><span 
class="pre">str</span></span></em>, <em c [...]
+<em class="property"><span class="pre">class</span><span class="w"> 
</span></em><span class="sig-prename descclassname"><span 
class="pre">pydolphinscheduler.tasks.</span></span><span class="sig-name 
descname"><span class="pre">Procedure</span></span><span 
class="sig-paren">(</span><em class="sig-param"><span class="n"><span 
class="pre">name</span></span><span class="p"><span 
class="pre">:</span></span><span class="w"> </span><span class="n"><span 
class="pre">str</span></span></em>, <em c [...]
 <dd><p>Bases: <a class="reference internal" 
href="#pydolphinscheduler.core.Task" 
title="pydolphinscheduler.core.task.Task"><code class="xref py py-class 
docutils literal notranslate"><span class="pre">Task</span></code></a></p>
 <p>Task Procedure object, declare behavior for Procedure task to 
dolphinscheduler.</p>
 <p>It should run database procedure job in multiply sql lik engine, such as:
@@ -6753,6 +6680,12 @@ workflow.resource_plugin.</p>
 <dd><p>Get attribute condition_result.</p>
 </dd></dl>
 
+<dl class="py property">
+<dt class="sig sig-object py" 
id="pydolphinscheduler.tasks.Procedure.datasource">
+<em class="property"><span class="pre">property</span><span class="w"> 
</span></em><span class="sig-name descname"><span 
class="pre">datasource</span></span><em class="property"><span class="p"><span 
class="pre">:</span></span><span class="w"> </span><span 
class="pre">Dict</span></em><a class="headerlink" 
href="#pydolphinscheduler.tasks.Procedure.datasource" title="Permalink to this 
definition"></a></dt>
+<dd><p>Get datasource for procedure task.</p>
+</dd></dl>
+
 <dl class="py property">
 <dt class="sig sig-object py" 
id="pydolphinscheduler.tasks.Procedure.environment_code">
 <em class="property"><span class="pre">property</span><span class="w"> 
</span></em><span class="sig-name descname"><span 
class="pre">environment_code</span></span><em class="property"><span 
class="p"><span class="pre">:</span></span><span class="w"> </span><span 
class="pre">str</span></em><a class="headerlink" 
href="#pydolphinscheduler.tasks.Procedure.environment_code" title="Permalink to 
this definition"></a></dt>
@@ -8114,7 +8047,7 @@ directly set as python property, so we Override 
Task.task_params here.</p>
 
 <dl class="py class">
 <dt class="sig sig-object py" id="pydolphinscheduler.tasks.Sql">
-<em class="property"><span class="pre">class</span><span class="w"> 
</span></em><span class="sig-prename descclassname"><span 
class="pre">pydolphinscheduler.tasks.</span></span><span class="sig-name 
descname"><span class="pre">Sql</span></span><span 
class="sig-paren">(</span><em class="sig-param"><span class="n"><span 
class="pre">name</span></span><span class="p"><span 
class="pre">:</span></span><span class="w"> </span><span class="n"><span 
class="pre">str</span></span></em>, <em class=" [...]
+<em class="property"><span class="pre">class</span><span class="w"> 
</span></em><span class="sig-prename descclassname"><span 
class="pre">pydolphinscheduler.tasks.</span></span><span class="sig-name 
descname"><span class="pre">Sql</span></span><span 
class="sig-paren">(</span><em class="sig-param"><span class="n"><span 
class="pre">name</span></span><span class="p"><span 
class="pre">:</span></span><span class="w"> </span><span class="n"><span 
class="pre">str</span></span></em>, <em class=" [...]
 <dd><p>Bases: <a class="reference internal" 
href="#pydolphinscheduler.core.Task" 
title="pydolphinscheduler.core.task.Task"><code class="xref py py-class 
docutils literal notranslate"><span class="pre">Task</span></code></a></p>
 <p>Task SQL object, declare behavior for SQL task to dolphinscheduler.</p>
 <p>It should run sql job in multiply sql lik engine, such as:
@@ -8325,6 +8258,12 @@ workflow.resource_plugin.</p>
 <dd><p>Get attribute condition_result.</p>
 </dd></dl>
 
+<dl class="py property">
+<dt class="sig sig-object py" id="pydolphinscheduler.tasks.Sql.datasource">
+<em class="property"><span class="pre">property</span><span class="w"> 
</span></em><span class="sig-name descname"><span 
class="pre">datasource</span></span><em class="property"><span class="p"><span 
class="pre">:</span></span><span class="w"> </span><span 
class="pre">Dict</span></em><a class="headerlink" 
href="#pydolphinscheduler.tasks.Sql.datasource" title="Permalink to this 
definition"></a></dt>
+<dd><p>Get datasource for procedure sql.</p>
+</dd></dl>
+
 <dl class="py property">
 <dt class="sig sig-object py" 
id="pydolphinscheduler.tasks.Sql.environment_code">
 <em class="property"><span class="pre">property</span><span class="w"> 
</span></em><span class="sig-name descname"><span 
class="pre">environment_code</span></span><em class="property"><span 
class="p"><span class="pre">:</span></span><span class="w"> </span><span 
class="pre">str</span></em><a class="headerlink" 
href="#pydolphinscheduler.tasks.Sql.environment_code" title="Permalink to this 
definition"></a></dt>
@@ -8999,6 +8938,23 @@ attribute <cite>_task_custom_attr</cite> due to avoid 
attribute cover.</p>
 
 </dd></dl>
 
+<dl class="py class">
+<dt class="sig sig-object py" id="pydolphinscheduler.constants.Keyword">
+<em class="property"><span class="pre">class</span><span class="w"> 
</span></em><span class="sig-prename descclassname"><span 
class="pre">pydolphinscheduler.constants.</span></span><span class="sig-name 
descname"><span class="pre">Keyword</span></span><a class="reference internal" 
href="_modules/pydolphinscheduler/constants.html#Keyword"><span 
class="viewcode-link"><span class="pre">[source]</span></span></a><a 
class="headerlink" href="#pydolphinscheduler.constants.Keyword" title="Permal 
[...]
+<dd><p>Bases: <code class="xref py py-class docutils literal 
notranslate"><span class="pre">str</span></code></p>
+<p>Constants for keyword.</p>
+<dl class="py attribute">
+<dt class="sig sig-object py" 
id="pydolphinscheduler.constants.Keyword.DATASOURCE_ID">
+<span class="sig-name descname"><span 
class="pre">DATASOURCE_ID</span></span><em class="property"><span class="w"> 
</span><span class="p"><span class="pre">=</span></span><span class="w"> 
</span><span class="pre">'id'</span></em><a class="headerlink" 
href="#pydolphinscheduler.constants.Keyword.DATASOURCE_ID" title="Permalink to 
this definition"></a></dt>
+<dd></dd></dl>
+
+<dl class="py attribute">
+<dt class="sig sig-object py" 
id="pydolphinscheduler.constants.Keyword.DATASOURCE_TYPE">
+<span class="sig-name descname"><span 
class="pre">DATASOURCE_TYPE</span></span><em class="property"><span class="w"> 
</span><span class="p"><span class="pre">=</span></span><span class="w"> 
</span><span class="pre">'type'</span></em><a class="headerlink" 
href="#pydolphinscheduler.constants.Keyword.DATASOURCE_TYPE" title="Permalink 
to this definition"></a></dt>
+<dd></dd></dl>
+
+</dd></dl>
+
 <dl class="py class">
 <dt class="sig sig-object py" id="pydolphinscheduler.constants.ResourceKey">
 <em class="property"><span class="pre">class</span><span class="w"> 
</span></em><span class="sig-prename descclassname"><span 
class="pre">pydolphinscheduler.constants.</span></span><span class="sig-name 
descname"><span class="pre">ResourceKey</span></span><a class="reference 
internal" href="_modules/pydolphinscheduler/constants.html#ResourceKey"><span 
class="viewcode-link"><span class="pre">[source]</span></span></a><a 
class="headerlink" href="#pydolphinscheduler.constants.ResourceKey" t [...]
diff --git a/python/main/genindex.html b/python/main/genindex.html
index c06a9adebf..c741d499bf 100644
--- a/python/main/genindex.html
+++ b/python/main/genindex.html
@@ -1408,8 +1408,6 @@
 <h2 id="C">C</h2>
 <table style="width: 100%" class="indextable genindextable"><tr>
   <td style="width: 33%; vertical-align: top;"><ul>
-      <li><a href="api.html#pydolphinscheduler.core.Database.clear">clear() 
(pydolphinscheduler.core.Database method)</a>
-</li>
       <li><a 
href="tasks/spark.html#pydolphinscheduler.tasks.spark.DeployMode.CLIENT">CLIENT 
(pydolphinscheduler.tasks.spark.DeployMode attribute)</a>
 </li>
       <li><a 
href="tasks/flink.html#pydolphinscheduler.tasks.flink.DeployMode.CLUSTER">CLUSTER
 (pydolphinscheduler.tasks.flink.DeployMode attribute)</a>
@@ -1495,8 +1493,6 @@
       <li><a 
href="tasks/condition.html#pydolphinscheduler.tasks.condition.ConditionOperator">ConditionOperator
 (class in pydolphinscheduler.tasks.condition)</a>
 </li>
       <li><a 
href="api.html#pydolphinscheduler.constants.TaskType.CONDITIONS">CONDITIONS 
(pydolphinscheduler.constants.TaskType attribute)</a>
-</li>
-      <li><a href="api.html#pydolphinscheduler.core.Database.copy">copy() 
(pydolphinscheduler.core.Database method)</a>
 </li>
       <li><a 
href="api.html#pydolphinscheduler.models.BaseSide.create_if_not_exists">create_if_not_exists()
 (pydolphinscheduler.models.BaseSide class method)</a>
 
@@ -1544,11 +1540,19 @@
   <td style="width: 33%; vertical-align: top;"><ul>
       <li><a href="api.html#pydolphinscheduler.constants.Delimiter.DASH">DASH 
(pydolphinscheduler.constants.Delimiter attribute)</a>
 </li>
-      <li><a href="api.html#pydolphinscheduler.core.Database">Database (class 
in pydolphinscheduler.core)</a>
+      <li><a 
href="api.html#pydolphinscheduler.tasks.Procedure.datasource">datasource 
(pydolphinscheduler.tasks.Procedure property)</a>
+
+      <ul>
+        <li><a 
href="tasks/procedure.html#pydolphinscheduler.tasks.procedure.Procedure.datasource">(pydolphinscheduler.tasks.procedure.Procedure
 property)</a>
+</li>
+        <li><a 
href="api.html#pydolphinscheduler.tasks.Sql.datasource">(pydolphinscheduler.tasks.Sql
 property)</a>
 </li>
-      <li><a 
href="api.html#pydolphinscheduler.core.Database.database_id">database_id 
(pydolphinscheduler.core.Database property)</a>
+        <li><a 
href="tasks/sql.html#pydolphinscheduler.tasks.sql.Sql.datasource">(pydolphinscheduler.tasks.sql.Sql
 property)</a>
 </li>
-      <li><a 
href="api.html#pydolphinscheduler.core.Database.database_type">database_type 
(pydolphinscheduler.core.Database property)</a>
+      </ul></li>
+      <li><a 
href="api.html#pydolphinscheduler.constants.Keyword.DATASOURCE_ID">DATASOURCE_ID
 (pydolphinscheduler.constants.Keyword attribute)</a>
+</li>
+      <li><a 
href="api.html#pydolphinscheduler.constants.Keyword.DATASOURCE_TYPE">DATASOURCE_TYPE
 (pydolphinscheduler.constants.Keyword attribute)</a>
 </li>
       <li><a href="api.html#pydolphinscheduler.tasks.DataX">DataX (class in 
pydolphinscheduler.tasks)</a>
 
@@ -1622,10 +1626,10 @@
         <li><a 
href="api.html#pydolphinscheduler.tasks.Switch.DEFAULT_CONDITION_RESULT">(pydolphinscheduler.tasks.Switch
 attribute)</a>
 </li>
       </ul></li>
-      <li><a 
href="api.html#pydolphinscheduler.constants.DefaultTaskCodeNum">DefaultTaskCodeNum
 (class in pydolphinscheduler.constants)</a>
-</li>
   </ul></td>
   <td style="width: 33%; vertical-align: top;"><ul>
+      <li><a 
href="api.html#pydolphinscheduler.constants.DefaultTaskCodeNum">DefaultTaskCodeNum
 (class in pydolphinscheduler.constants)</a>
+</li>
       <li><a 
href="tasks/dependent.html#pydolphinscheduler.tasks.dependent.DependentItem.definition_code">definition_code
 (pydolphinscheduler.tasks.dependent.DependentItem property)</a>
 </li>
       <li><a 
href="tasks/http.html#pydolphinscheduler.tasks.http.HttpMethod.DELETE">DELETE 
(pydolphinscheduler.tasks.http.HttpMethod attribute)</a>
@@ -1941,11 +1945,11 @@
 </li>
       </ul></li>
       <li><a href="api.html#pydolphinscheduler.constants.TaskType.FLINK">FLINK 
(pydolphinscheduler.constants.TaskType attribute)</a>
-</li>
-      <li><a 
href="tasks/flink.html#pydolphinscheduler.tasks.flink.FlinkVersion">FlinkVersion
 (class in pydolphinscheduler.tasks.flink)</a>
 </li>
   </ul></td>
   <td style="width: 33%; vertical-align: top;"><ul>
+      <li><a 
href="tasks/flink.html#pydolphinscheduler.tasks.flink.FlinkVersion">FlinkVersion
 (class in pydolphinscheduler.tasks.flink)</a>
+</li>
       <li><a 
href="api.html#pydolphinscheduler.constants.Time.FMT_DASH_DATE">FMT_DASH_DATE 
(pydolphinscheduler.constants.Time attribute)</a>
 </li>
       <li><a 
href="api.html#pydolphinscheduler.constants.Time.FMT_NO_COLON_TIME">FMT_NO_COLON_TIME
 (pydolphinscheduler.constants.Time attribute)</a>
@@ -1955,8 +1959,6 @@
       <li><a 
href="api.html#pydolphinscheduler.constants.Time.FMT_STD_DATE">FMT_STD_DATE 
(pydolphinscheduler.constants.Time attribute)</a>
 </li>
       <li><a 
href="api.html#pydolphinscheduler.constants.Time.FMT_STD_TIME">FMT_STD_TIME 
(pydolphinscheduler.constants.Time attribute)</a>
-</li>
-      <li><a 
href="api.html#pydolphinscheduler.core.Database.fromkeys">fromkeys() 
(pydolphinscheduler.core.Database method)</a>
 </li>
   </ul></td>
 </tr></table>
@@ -2021,8 +2023,6 @@
 </li>
       </ul></li>
       <li><a 
href="tasks/http.html#pydolphinscheduler.tasks.http.HttpMethod.GET">GET 
(pydolphinscheduler.tasks.http.HttpMethod attribute)</a>
-</li>
-      <li><a href="api.html#pydolphinscheduler.core.Database.get">get() 
(pydolphinscheduler.core.Database method)</a>
 </li>
       <li><a 
href="tasks/dependent.html#pydolphinscheduler.tasks.dependent.DependentItem.get_code_from_gateway">get_code_from_gateway()
 (pydolphinscheduler.tasks.dependent.DependentItem method)</a>
 </li>
@@ -2082,8 +2082,6 @@
         <li><a 
href="api.html#pydolphinscheduler.tasks.Switch.get_content">(pydolphinscheduler.tasks.Switch
 method)</a>
 </li>
       </ul></li>
-      <li><a 
href="api.html#pydolphinscheduler.core.Database.get_database_info">get_database_info()
 (pydolphinscheduler.core.Database method)</a>
-</li>
       <li><a 
href="api.html#pydolphinscheduler.core.Engine.get_define">get_define() 
(pydolphinscheduler.core.Engine method)</a>
 
       <ul>
@@ -2453,8 +2451,6 @@
       <li><a 
href="tasks/pytorch.html#pydolphinscheduler.tasks.pytorch.DEFAULT.is_create_environment">is_create_environment
 (pydolphinscheduler.tasks.pytorch.DEFAULT attribute)</a>
 </li>
       <li><a href="api.html#pydolphinscheduler.constants.IsCache">IsCache 
(class in pydolphinscheduler.constants)</a>
-</li>
-      <li><a href="api.html#pydolphinscheduler.core.Database.items">items() 
(pydolphinscheduler.core.Database method)</a>
 </li>
   </ul></td>
 </tr></table>
@@ -2470,7 +2466,7 @@
 <h2 id="K">K</h2>
 <table style="width: 100%" class="indextable genindextable"><tr>
   <td style="width: 33%; vertical-align: top;"><ul>
-      <li><a href="api.html#pydolphinscheduler.core.Database.keys">keys() 
(pydolphinscheduler.core.Database method)</a>
+      <li><a href="api.html#pydolphinscheduler.constants.Keyword">Keyword 
(class in pydolphinscheduler.constants)</a>
 </li>
       <li><a href="api.html#pydolphinscheduler.tasks.Kubernetes">Kubernetes 
(class in pydolphinscheduler.tasks)</a>
 
@@ -2830,10 +2826,6 @@
       <li><a 
href="api.html#pydolphinscheduler.core.Workflow.param_json">param_json 
(pydolphinscheduler.core.Workflow property)</a>
 </li>
       <li><a href="api.html#pydolphinscheduler.constants.Symbol.POINT">POINT 
(pydolphinscheduler.constants.Symbol attribute)</a>
-</li>
-      <li><a href="api.html#pydolphinscheduler.core.Database.pop">pop() 
(pydolphinscheduler.core.Database method)</a>
-</li>
-      <li><a 
href="api.html#pydolphinscheduler.core.Database.popitem">popitem() 
(pydolphinscheduler.core.Database method)</a>
 </li>
       <li><a 
href="tasks/http.html#pydolphinscheduler.tasks.http.HttpMethod.POST">POST 
(pydolphinscheduler.tasks.http.HttpMethod attribute)</a>
 </li>
@@ -2980,8 +2972,6 @@
         <li><a 
href="tasks/condition.html#module-pydolphinscheduler.tasks.condition">module</a>
 </li>
       </ul></li>
-  </ul></td>
-  <td style="width: 33%; vertical-align: top;"><ul>
       <li>
     pydolphinscheduler.tasks.datax
 
@@ -2989,6 +2979,8 @@
         <li><a 
href="tasks/datax.html#module-pydolphinscheduler.tasks.datax">module</a>
 </li>
       </ul></li>
+  </ul></td>
+  <td style="width: 33%; vertical-align: top;"><ul>
       <li>
     pydolphinscheduler.tasks.dependent
 
@@ -3401,8 +3393,6 @@
       </ul></li>
   </ul></td>
   <td style="width: 33%; vertical-align: top;"><ul>
-      <li><a 
href="api.html#pydolphinscheduler.core.Database.setdefault">setdefault() 
(pydolphinscheduler.core.Database method)</a>
-</li>
       <li><a href="api.html#pydolphinscheduler.tasks.Shell">Shell (class in 
pydolphinscheduler.tasks)</a>
 
       <ul>
@@ -3413,6 +3403,12 @@
 </li>
       <li><a href="api.html#pydolphinscheduler.constants.Symbol.SLASH">SLASH 
(pydolphinscheduler.constants.Symbol attribute)</a>
 </li>
+      <li><a 
href="api.html#pydolphinscheduler.tasks.DataX.source_params">source_params 
(pydolphinscheduler.tasks.DataX property)</a>
+
+      <ul>
+        <li><a 
href="tasks/datax.html#pydolphinscheduler.tasks.datax.DataX.source_params">(pydolphinscheduler.tasks.datax.DataX
 property)</a>
+</li>
+      </ul></li>
       <li><a href="api.html#pydolphinscheduler.tasks.Spark">Spark (class in 
pydolphinscheduler.tasks)</a>
 
       <ul>
@@ -3481,6 +3477,12 @@
 <h2 id="T">T</h2>
 <table style="width: 100%" class="indextable genindextable"><tr>
   <td style="width: 33%; vertical-align: top;"><ul>
+      <li><a 
href="api.html#pydolphinscheduler.tasks.DataX.target_params">target_params 
(pydolphinscheduler.tasks.DataX property)</a>
+
+      <ul>
+        <li><a 
href="tasks/datax.html#pydolphinscheduler.tasks.datax.DataX.target_params">(pydolphinscheduler.tasks.datax.DataX
 property)</a>
+</li>
+      </ul></li>
       <li><a href="api.html#pydolphinscheduler.core.Task">Task (class in 
pydolphinscheduler.core)</a>
 </li>
       <li><a 
href="tasks/func_wrap.html#pydolphinscheduler.tasks.func_wrap.task">task() (in 
module pydolphinscheduler.tasks.func_wrap)</a>
@@ -3705,11 +3707,9 @@
 </li>
       <li><a 
href="api.html#pydolphinscheduler.constants.Delimiter.UNDERSCORE">UNDERSCORE 
(pydolphinscheduler.constants.Delimiter attribute)</a>
 </li>
-      <li><a href="api.html#pydolphinscheduler.core.Database.update">update() 
(pydolphinscheduler.core.Database method)</a>
+      <li><a href="api.html#pydolphinscheduler.models.Project.update">update() 
(pydolphinscheduler.models.Project method)</a>
 
       <ul>
-        <li><a 
href="api.html#pydolphinscheduler.models.Project.update">(pydolphinscheduler.models.Project
 method)</a>
-</li>
         <li><a 
href="api.html#pydolphinscheduler.models.Tenant.update">(pydolphinscheduler.models.Tenant
 method)</a>
 </li>
         <li><a 
href="api.html#pydolphinscheduler.models.User.update">(pydolphinscheduler.models.User
 method)</a>
@@ -3782,10 +3782,6 @@
 
 <h2 id="V">V</h2>
 <table style="width: 100%" class="indextable genindextable"><tr>
-  <td style="width: 33%; vertical-align: top;"><ul>
-      <li><a href="api.html#pydolphinscheduler.core.Database.values">values() 
(pydolphinscheduler.core.Database method)</a>
-</li>
-  </ul></td>
   <td style="width: 33%; vertical-align: top;"><ul>
       <li><a href="api.html#pydolphinscheduler.constants.Version">Version 
(class in pydolphinscheduler.constants)</a>
 </li>
diff --git a/python/main/objects.inv b/python/main/objects.inv
index 179660ac60..7f59082146 100644
Binary files a/python/main/objects.inv and b/python/main/objects.inv differ
diff --git a/python/main/searchindex.js b/python/main/searchindex.js
index a54b41d976..951c3d0a2c 100644
--- a/python/main/searchindex.js
+++ b/python/main/searchindex.js
@@ -1 +1 @@
-Search.setIndex({"docnames": ["api", "changelog", "cli", "concept", "config", 
"howto/index", "howto/multi-resources", "howto/remote-submit", "index", 
"resources_plugin/develop", "resources_plugin/github", 
"resources_plugin/gitlab", "resources_plugin/index", "resources_plugin/local", 
"resources_plugin/oss", "resources_plugin/resource-plugin", 
"resources_plugin/s3", "start", "tasks/condition", "tasks/datax", 
"tasks/dependent", "tasks/dvc", "tasks/flink", "tasks/func_wrap", "tasks/http", 
"t [...]
\ No newline at end of file
+Search.setIndex({"docnames": ["api", "changelog", "cli", "concept", "config", 
"howto/index", "howto/multi-resources", "howto/remote-submit", "index", 
"resources_plugin/develop", "resources_plugin/github", 
"resources_plugin/gitlab", "resources_plugin/index", "resources_plugin/local", 
"resources_plugin/oss", "resources_plugin/resource-plugin", 
"resources_plugin/s3", "start", "tasks/condition", "tasks/datax", 
"tasks/dependent", "tasks/dvc", "tasks/flink", "tasks/func_wrap", "tasks/http", 
"t [...]
\ No newline at end of file
diff --git a/python/main/tasks/datax.html b/python/main/tasks/datax.html
index 6aafc0ab3b..c304f0384b 100644
--- a/python/main/tasks/datax.html
+++ b/python/main/tasks/datax.html
@@ -253,16 +253,30 @@
 
 <dl class="py class">
 <dt class="sig sig-object py" id="pydolphinscheduler.tasks.datax.DataX">
-<em class="property"><span class="pre">class</span><span class="w"> 
</span></em><span class="sig-prename descclassname"><span 
class="pre">pydolphinscheduler.tasks.datax.</span></span><span class="sig-name 
descname"><span class="pre">DataX</span></span><span 
class="sig-paren">(</span><em class="sig-param"><span class="n"><span 
class="pre">name</span></span><span class="p"><span 
class="pre">:</span></span><span class="w"> </span><span class="n"><span 
class="pre">str</span></span></em>, <em [...]
+<em class="property"><span class="pre">class</span><span class="w"> 
</span></em><span class="sig-prename descclassname"><span 
class="pre">pydolphinscheduler.tasks.datax.</span></span><span class="sig-name 
descname"><span class="pre">DataX</span></span><span 
class="sig-paren">(</span><em class="sig-param"><span class="n"><span 
class="pre">name</span></span><span class="p"><span 
class="pre">:</span></span><span class="w"> </span><span class="n"><span 
class="pre">str</span></span></em>, <em [...]
 <dd><p>Bases: <a class="reference internal" 
href="../api.html#pydolphinscheduler.core.Task" 
title="pydolphinscheduler.core.task.Task"><code class="xref py py-class 
docutils literal notranslate"><span class="pre">Task</span></code></a></p>
 <p>Task DataX object, declare behavior for DataX task to dolphinscheduler.</p>
-<p>It should run database datax job in multiply sql link engine, such as:
-- MySQL
-- Oracle
-- Postgresql
-- SQLServer
-You provider datasource_name and datatarget_name contain connection 
information, it decisions which
+<p>It should run database datax job in multiply sql link engine, such as:</p>
+<ul class="simple">
+<li><p>MySQL</p></li>
+<li><p>Oracle</p></li>
+<li><p>Postgresql</p></li>
+<li><p>SQLServer</p></li>
+</ul>
+<p>You provider datasource_name and datatarget_name contain connection 
information, it decisions which
 database type and database instance would synchronous data.</p>
+<dl class="field-list simple">
+<dt class="field-odd">Parameters<span class="colon">:</span></dt>
+<dd class="field-odd"><ul class="simple">
+<li><p><strong>name</strong> – task name.</p></li>
+<li><p><strong>datasource_name</strong> – source database name for task datax 
to extract data.</p></li>
+<li><p><strong>datatarget_name</strong> – target database name for task datax 
to load data.</p></li>
+<li><p><strong>sql</strong> – sql statement for task datax to extract data 
form source database.</p></li>
+<li><p><strong>target_table</strong> – target table name for task datax to 
load data into target database.</p></li>
+<li><p><strong>datasource_type</strong> – source database type, 
dolphinscheduler use</p></li>
+</ul>
+</dd>
+</dl>
 <dl class="py attribute">
 <dt class="sig sig-object py" 
id="pydolphinscheduler.tasks.datax.DataX.CUSTOM_CONFIG">
 <span class="sig-name descname"><span 
class="pre">CUSTOM_CONFIG</span></span><em class="property"><span class="w"> 
</span><span class="p"><span class="pre">=</span></span><span class="w"> 
</span><span class="pre">0</span></em><a class="headerlink" 
href="#pydolphinscheduler.tasks.datax.DataX.CUSTOM_CONFIG" title="Permalink to 
this definition"></a></dt>
@@ -303,6 +317,18 @@ database type and database instance would synchronous 
data.</p>
 <span class="sig-name descname"><span class="pre">ext_attr</span></span><em 
class="property"><span class="p"><span class="pre">:</span></span><span 
class="w"> </span><span class="pre">str</span></em><em class="property"><span 
class="w"> </span><span class="p"><span class="pre">=</span></span><span 
class="w"> </span><span class="pre">'_sql'</span></em><a class="headerlink" 
href="#pydolphinscheduler.tasks.datax.DataX.ext_attr" title="Permalink to this 
definition"></a></dt>
 <dd></dd></dl>
 
+<dl class="py property">
+<dt class="sig sig-object py" 
id="pydolphinscheduler.tasks.datax.DataX.source_params">
+<em class="property"><span class="pre">property</span><span class="w"> 
</span></em><span class="sig-name descname"><span 
class="pre">source_params</span></span><em class="property"><span 
class="p"><span class="pre">:</span></span><span class="w"> </span><span 
class="pre">Dict</span></em><a class="headerlink" 
href="#pydolphinscheduler.tasks.datax.DataX.source_params" title="Permalink to 
this definition"></a></dt>
+<dd><p>Get source params for datax task.</p>
+</dd></dl>
+
+<dl class="py property">
+<dt class="sig sig-object py" 
id="pydolphinscheduler.tasks.datax.DataX.target_params">
+<em class="property"><span class="pre">property</span><span class="w"> 
</span></em><span class="sig-name descname"><span 
class="pre">target_params</span></span><em class="property"><span 
class="p"><span class="pre">:</span></span><span class="w"> </span><span 
class="pre">Dict</span></em><a class="headerlink" 
href="#pydolphinscheduler.tasks.datax.DataX.target_params" title="Permalink to 
this definition"></a></dt>
+<dd><p>Get target params for datax task.</p>
+</dd></dl>
+
 <dl class="py property">
 <dt class="sig sig-object py" 
id="pydolphinscheduler.tasks.datax.DataX.task_params">
 <em class="property"><span class="pre">property</span><span class="w"> 
</span></em><span class="sig-name descname"><span 
class="pre">task_params</span></span><em class="property"><span class="p"><span 
class="pre">:</span></span><span class="w"> </span><span 
class="pre">Dict</span></em><a class="headerlink" 
href="#pydolphinscheduler.tasks.datax.DataX.task_params" title="Permalink to 
this definition"></a></dt>
diff --git a/python/main/tasks/procedure.html b/python/main/tasks/procedure.html
index 0d32e068fe..54cb47a045 100644
--- a/python/main/tasks/procedure.html
+++ b/python/main/tasks/procedure.html
@@ -71,6 +71,7 @@
 <li class="toctree-l4"><a class="reference internal" 
href="#pydolphinscheduler.tasks.procedure.Procedure._task_relation"><code 
class="docutils literal notranslate"><span 
class="pre">Procedure._task_relation</span></code></a></li>
 <li class="toctree-l4"><a class="reference internal" 
href="#pydolphinscheduler.tasks.procedure.Procedure._timeout"><code 
class="docutils literal notranslate"><span 
class="pre">Procedure._timeout</span></code></a></li>
 <li class="toctree-l4"><a class="reference internal" 
href="#pydolphinscheduler.tasks.procedure.Procedure._upstream_task_codes"><code 
class="docutils literal notranslate"><span 
class="pre">Procedure._upstream_task_codes</span></code></a></li>
+<li class="toctree-l4"><a class="reference internal" 
href="#pydolphinscheduler.tasks.procedure.Procedure.datasource"><code 
class="docutils literal notranslate"><span 
class="pre">Procedure.datasource</span></code></a></li>
 <li class="toctree-l4"><a class="reference internal" 
href="#pydolphinscheduler.tasks.procedure.Procedure.task_params"><code 
class="docutils literal notranslate"><span 
class="pre">Procedure.task_params</span></code></a></li>
 </ul>
 </li>
@@ -125,7 +126,7 @@
 <p>Task procedure.</p>
 <dl class="py class">
 <dt class="sig sig-object py" 
id="pydolphinscheduler.tasks.procedure.Procedure">
-<em class="property"><span class="pre">class</span><span class="w"> 
</span></em><span class="sig-prename descclassname"><span 
class="pre">pydolphinscheduler.tasks.procedure.</span></span><span 
class="sig-name descname"><span class="pre">Procedure</span></span><span 
class="sig-paren">(</span><em class="sig-param"><span class="n"><span 
class="pre">name</span></span><span class="p"><span 
class="pre">:</span></span><span class="w"> </span><span class="n"><span 
class="pre">str</span></span></ [...]
+<em class="property"><span class="pre">class</span><span class="w"> 
</span></em><span class="sig-prename descclassname"><span 
class="pre">pydolphinscheduler.tasks.procedure.</span></span><span 
class="sig-name descname"><span class="pre">Procedure</span></span><span 
class="sig-paren">(</span><em class="sig-param"><span class="n"><span 
class="pre">name</span></span><span class="p"><span 
class="pre">:</span></span><span class="w"> </span><span class="n"><span 
class="pre">str</span></span></ [...]
 <dd><p>Bases: <a class="reference internal" 
href="../api.html#pydolphinscheduler.core.Task" 
title="pydolphinscheduler.core.task.Task"><code class="xref py py-class 
docutils literal notranslate"><span class="pre">Task</span></code></a></p>
 <p>Task Procedure object, declare behavior for Procedure task to 
dolphinscheduler.</p>
 <p>It should run database procedure job in multiply sql lik engine, such as:
@@ -164,6 +165,12 @@ database type and database instance would run this sql.</p>
 <span class="sig-name descname"><span 
class="pre">_upstream_task_codes</span></span><em class="property"><span 
class="p"><span class="pre">:</span></span><span class="w"> </span><span 
class="pre">Set</span><span class="p"><span class="pre">[</span></span><span 
class="pre">int</span><span class="p"><span class="pre">]</span></span></em><a 
class="headerlink" 
href="#pydolphinscheduler.tasks.procedure.Procedure._upstream_task_codes" 
title="Permalink to this definition"></a></dt>
 <dd></dd></dl>
 
+<dl class="py property">
+<dt class="sig sig-object py" 
id="pydolphinscheduler.tasks.procedure.Procedure.datasource">
+<em class="property"><span class="pre">property</span><span class="w"> 
</span></em><span class="sig-name descname"><span 
class="pre">datasource</span></span><em class="property"><span class="p"><span 
class="pre">:</span></span><span class="w"> </span><span 
class="pre">Dict</span></em><a class="headerlink" 
href="#pydolphinscheduler.tasks.procedure.Procedure.datasource" 
title="Permalink to this definition"></a></dt>
+<dd><p>Get datasource for procedure task.</p>
+</dd></dl>
+
 <dl class="py property">
 <dt class="sig sig-object py" 
id="pydolphinscheduler.tasks.procedure.Procedure.task_params">
 <em class="property"><span class="pre">property</span><span class="w"> 
</span></em><span class="sig-name descname"><span 
class="pre">task_params</span></span><em class="property"><span class="p"><span 
class="pre">:</span></span><span class="w"> </span><span 
class="pre">Dict</span></em><a class="headerlink" 
href="#pydolphinscheduler.tasks.procedure.Procedure.task_params" 
title="Permalink to this definition"></a></dt>
diff --git a/python/main/tasks/sql.html b/python/main/tasks/sql.html
index f3bad53d0f..9204b48cbd 100644
--- a/python/main/tasks/sql.html
+++ b/python/main/tasks/sql.html
@@ -239,7 +239,7 @@ multiple statements. But if you only need to execute one 
statement, you can assi
 <p>Task sql.</p>
 <dl class="py class">
 <dt class="sig sig-object py" id="pydolphinscheduler.tasks.sql.Sql">
-<em class="property"><span class="pre">class</span><span class="w"> 
</span></em><span class="sig-prename descclassname"><span 
class="pre">pydolphinscheduler.tasks.sql.</span></span><span class="sig-name 
descname"><span class="pre">Sql</span></span><span 
class="sig-paren">(</span><em class="sig-param"><span class="n"><span 
class="pre">name</span></span><span class="p"><span 
class="pre">:</span></span><span class="w"> </span><span class="n"><span 
class="pre">str</span></span></em>, <em cla [...]
+<em class="property"><span class="pre">class</span><span class="w"> 
</span></em><span class="sig-prename descclassname"><span 
class="pre">pydolphinscheduler.tasks.sql.</span></span><span class="sig-name 
descname"><span class="pre">Sql</span></span><span 
class="sig-paren">(</span><em class="sig-param"><span class="n"><span 
class="pre">name</span></span><span class="p"><span 
class="pre">:</span></span><span class="w"> </span><span class="n"><span 
class="pre">str</span></span></em>, <em cla [...]
 <dd><p>Bases: <a class="reference internal" 
href="../api.html#pydolphinscheduler.core.Task" 
title="pydolphinscheduler.core.task.Task"><code class="xref py py-class 
docutils literal notranslate"><span class="pre">Task</span></code></a></p>
 <p>Task SQL object, declare behavior for SQL task to dolphinscheduler.</p>
 <p>It should run sql job in multiply sql lik engine, such as:
@@ -309,6 +309,12 @@ query statement.</p></li>
 <span class="sig-name descname"><span 
class="pre">_upstream_task_codes</span></span><em class="property"><span 
class="p"><span class="pre">:</span></span><span class="w"> </span><span 
class="pre">Set</span><span class="p"><span class="pre">[</span></span><span 
class="pre">int</span><span class="p"><span class="pre">]</span></span></em><a 
class="headerlink" 
href="#pydolphinscheduler.tasks.sql.Sql._upstream_task_codes" title="Permalink 
to this definition"></a></dt>
 <dd></dd></dl>
 
+<dl class="py property">
+<dt class="sig sig-object py" id="pydolphinscheduler.tasks.sql.Sql.datasource">
+<em class="property"><span class="pre">property</span><span class="w"> 
</span></em><span class="sig-name descname"><span 
class="pre">datasource</span></span><em class="property"><span class="p"><span 
class="pre">:</span></span><span class="w"> </span><span 
class="pre">Dict</span></em><a class="headerlink" 
href="#pydolphinscheduler.tasks.sql.Sql.datasource" title="Permalink to this 
definition"></a></dt>
+<dd><p>Get datasource for procedure sql.</p>
+</dd></dl>
+
 <dl class="py attribute">
 <dt class="sig sig-object py" id="pydolphinscheduler.tasks.sql.Sql.ext">
 <span class="sig-name descname"><span class="pre">ext</span></span><em 
class="property"><span class="p"><span class="pre">:</span></span><span 
class="w"> </span><span class="pre">set</span></em><em class="property"><span 
class="w"> </span><span class="p"><span class="pre">=</span></span><span 
class="w"> </span><span class="pre">{'.sql'}</span></em><a class="headerlink" 
href="#pydolphinscheduler.tasks.sql.Sql.ext" title="Permalink to this 
definition"></a></dt>

Reply via email to