From 7c527e6f480798b6089ac19f316f11a598708c1c Mon Sep 17 00:00:00 2001 From: Recolic K <bensl@microsoft.com> Date: Mon, 17 May 2021 14:57:13 +0800 Subject: [PATCH] update demo --- activity.hpp | 18 ++++++++++++++++++ web/demo.cc | 43 +++++++++++++++++++++++-------------------- workflows/another.cc | 22 +++++++++++----------- xaml-template.hpp | 4 ++++ 4 files changed, 56 insertions(+), 31 deletions(-) diff --git a/activity.hpp b/activity.hpp index 6d23d02..6849c39 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 90c061e..bd1e578 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 86e7cdc..4fef449 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 3cbd406..5528d26 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"; + } } -- GitLab