diff --git a/activity.hpp b/activity.hpp
index 6d23d02e8bf4baefa6fa2dd9a5c5765a6e04a465..6849c39a48e01e2b3bcef1a81e0d70ca78a6d29f 100644
--- a/activity.hpp
+++ b/activity.hpp
@@ -112,7 +112,25 @@ namespace CIS {
             xamlCode.replace_once("__TEMPLATE_ARG_EntityDefPlaceholder", entityXaml);
             return xamlCode;
         }
+    };
+
+    class Noop : public ActivityBase {
+    public:
+        explicit Noop(string displayName, string entityName = "")
+            : displayName(Utility::HtmlEscapeString(displayName)), entityName(entityName) {}
+        Noop(const Noop &) = default;
+        Noop(Noop &&) = default;
 
+    private:
+        string displayName, entityName;
+        virtual rlib::string generateXaml() const override {
+            rlib::string xamlCode = templates::NOOP_XAML;
+            xamlCode.replace_once("__TEMPLATE_ARG_DisplayName", displayName);
+
+            auto entityXaml = this->entityName == "" ? "" : rlib::string(templates::ENTITY_DEF_TEMPLATE).replace("__TEMPLATE_ARG_EntityName", this->entityName);
+            xamlCode.replace_once("__TEMPLATE_ARG_EntityDefPlaceholder", entityXaml);
+            return xamlCode;
+        }
     };
 
     class Flow {
diff --git a/web/demo.cc b/web/demo.cc
index 90c061e2e0d5bea70d5c9c6b76624a9c74683261..bd1e578a7e1094c15625a194f74f64c66f054f83 100644
--- a/web/demo.cc
+++ b/web/demo.cc
@@ -1,37 +1,39 @@
-
 // This is a DEMO. You may use any C++17 syntax here. 
 
-// 先演示一下定义一个Activity和ManualOperation的正常语法。
-//                  (ActivityName,   ClassName_In_Our_Code            , DependencyEntityName)
+// 先演示一下定义一个Activity和ManualOperation的基本语法。
+//          Activity(ActivityName,   ClassName_In_Our_Code            , DependencyEntityName)
 Activity HaveASleep ("HaveASleep", "FleetAGC.Activities.DelayActivity", "");
 HaveASleep.addInputSetting("Timespan", "60");
-//                           (DisplayName   ,   Message             , DependencyEntityName)
-ManualOperation AlertSomeone ("AlertSomeone", "This is some message", "");
+//            ManualOperation(DisplayName   ,   Message             ,  TeamId to alert   , DependencyEntityName)
+ManualOperation AlertSomeone ("AlertSomeone", "This is some message", "AzDNetDeployments", "");
+//         Noop(DisplayName      , DependencyEntityName)
+Noop DummyNode ("Just do nothing", "");
 // 但是如果你要定义很多很多Activity,建议下面的方法偷懒。
 
 ////////////////////////////////////////////////////////////////////////////////////////////////
 
 { // 偷懒方案1
-    // 这里假设你想用FleetAGC.Activities.DelayActivity,并且想给他一个TimeSpan参数。
-    #define AC(name, entityName) \
-            auto name = Activity(#name, "FleetAGC.Activities.DelayActivity", entityName).addInputSetting("Timespan", "60");
+    // 这里假设你想用ManualOperation。
+    #define AC(teamid, entityName) auto teamid = ManualOperation("Alert" #teamid, "This is an alert to wake you up!", #teamid, #entityName);
+    // 这里也有一个带参数的DelayActivity的例子。
+    // #define AC(name, entityName) auto name = Activity(#name, "FleetAGC.Activities.DelayActivity", #entityName).addInputSetting("Timespan", "60");
        
     // 使用刚刚定义的偷懒宏。
-    AC(GridManager, "M365Poc.SPO.GridManager")
-    AC(AuthAndProvision, "M365Poc.SPO.AuthProvisioning")
-    AC(FarmsAndTennats, "")
-    AC(CSC , "")
-    AC(FastSearch , "")
-    AC(Microservices, "M365Poc.SPO.MicroServices")
-    AC(MonitorAndAlert, "M365Poc.SPO.MonitoringAlerting")
-    AC(SPOTooling, "M365Poc.SPO.SPOTooling")
-    AC(UXCDNFailover, "M365Poc.SPO.UXCDNFailover")
-    AC(ODFBSyncClient, "M365Poc.SPO.ODFBSyncClient")
+    AC(GridManagerTeam, M365Poc.SPO.GridManager)
+    AC(AuthAndProvisionTeam, M365Poc.SPO.AuthProvisioning)
+    AC(FarmsAndTennats, )
+    AC(CSC , )
+    AC(FastSearch , )
+    AC(Microservices, M365Poc.SPO.MicroServices)
+    AC(MonitorAndAlert, M365Poc.SPO.MonitoringAlerting)
+    AC(SPOTooling, M365Poc.SPO.SPOTooling)
+    AC(UXCDNFailover, M365Poc.SPO.UXCDNFailover)
+    AC(ODFBSyncClient, M365Poc.SPO.ODFBSyncClient)
     
     // 把定义好的Activity组合一下,其中箭头表示串行,竖线表示并行。
-    auto block1 = GridManager >> FarmsAndTennats >> (CSC | FastSearch);
+    auto block1 = GridManagerTeam >> FarmsAndTennats >> (CSC | FastSearch);
     auto block2 = Microservices | MonitorAndAlert;
-    auto completeFlow = block1 | AuthAndProvision | block2 >> SPOTooling | UXCDNFailover | ODFBSyncClient;
+    auto completeFlow = block1 | AuthAndProvisionTeam | block2 >> SPOTooling | UXCDNFailover | ODFBSyncClient;
     
     // 最后指定一下workflow的名字就可以了。
     println(completeFlow.generateXaml("FleetAGC.Workflows.SPOBuildoutPOCWorkflow"));
@@ -53,3 +55,4 @@ if constexpr(false) { // 偷懒方案2
     // 最后指定一下workflow的名字就可以了。
     println(completeFlow.generateXaml("FleetAGC.Workflows.SPOBuildoutPOCWorkflow"));
 }
+
diff --git a/workflows/another.cc b/workflows/another.cc
index 86e7cdc145f35153dcf28da76892b2d359b1525a..4fef44907adfce1711f55e846453f432287a53e6 100644
--- a/workflows/another.cc
+++ b/workflows/another.cc
@@ -16,19 +16,19 @@ ManualOperation AlertSomeone ("AlertSomeone", "This is some message", "AzDNetDep
 { // 偷懒方案1
     // 这里假设你想用FleetAGC.Activities.DelayActivity,并且想给他一个TimeSpan参数。
     #define AC(name, entityName) \
-            auto name = Activity(#name, "FleetAGC.Activities.DelayActivity", entityName).addInputSetting("Timespan", "60");
+            auto name = Activity(#name, "FleetAGC.Activities.DelayActivity", #entityName).addInputSetting("Timespan", "60");
        
     // 使用刚刚定义的偷懒宏。
-    AC(GridManager, "M365Poc.SPO.GridManager")
-    AC(AuthAndProvision, "M365Poc.SPO.AuthProvisioning")
-    AC(FarmsAndTennats, "")
-    AC(CSC , "")
-    AC(FastSearch , "")
-    AC(Microservices, "M365Poc.SPO.MicroServices")
-    AC(MonitorAndAlert, "M365Poc.SPO.MonitoringAlerting")
-    AC(SPOTooling, "M365Poc.SPO.SPOTooling")
-    AC(UXCDNFailover, "M365Poc.SPO.UXCDNFailover")
-    AC(ODFBSyncClient, "M365Poc.SPO.ODFBSyncClient")
+    AC(GridManager, M365Poc.SPO.GridManager)
+    AC(AuthAndProvision, M365Poc.SPO.AuthProvisioning)
+    AC(FarmsAndTennats, )
+    AC(CSC , )
+    AC(FastSearch , )
+    AC(Microservices, M365Poc.SPO.MicroServices)
+    AC(MonitorAndAlert, M365Poc.SPO.MonitoringAlerting)
+    AC(SPOTooling, M365Poc.SPO.SPOTooling)
+    AC(UXCDNFailover, M365Poc.SPO.UXCDNFailover)
+    AC(ODFBSyncClient, M365Poc.SPO.ODFBSyncClient)
     
     // 把定义好的Activity组合一下,其中箭头表示串行,竖线表示并行。
     auto block1 = GridManager >> FarmsAndTennats >> (CSC | FastSearch);
diff --git a/xaml-template.hpp b/xaml-template.hpp
index 3cbd40671042b73387bc8151d80ecbc7218fda78..5528d26257e906be111934bcf5f9366922714db4 100644
--- a/xaml-template.hpp
+++ b/xaml-template.hpp
@@ -105,6 +105,10 @@ R"XAML(    <mwcwa:ManualOperation TaskId="__TEMPLATE_ARG_TaskId" DisplayName="__
     </mwcwa:ManualOperation>
 )XAML";
 
+constexpr auto NOOP_XAML = 
+R"XAML(    <mwcwa:NoOpsActivity DisplayName="__TEMPLATE_ARG_DisplayName" __TEMPLATE_ARG_EntityDefPlaceholder/>
+)XAML";
+
 }
 }