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"; + } }