Skip to content
Snippets Groups Projects
Commit 7c527e6f authored by Recolic K's avatar Recolic K
Browse files

update demo

parent 9bcf7e78
No related branches found
No related tags found
No related merge requests found
Pipeline #852 passed with stage
in 9 seconds
...@@ -112,7 +112,25 @@ namespace CIS { ...@@ -112,7 +112,25 @@ namespace CIS {
xamlCode.replace_once("__TEMPLATE_ARG_EntityDefPlaceholder", entityXaml); xamlCode.replace_once("__TEMPLATE_ARG_EntityDefPlaceholder", entityXaml);
return xamlCode; 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 { class Flow {
......
// This is a DEMO. You may use any C++17 syntax here. // This is a DEMO. You may use any C++17 syntax here.
// 先演示一下定义一个Activity和ManualOperation的正常语法。 // 先演示一下定义一个Activity和ManualOperation的基本语法。
// (ActivityName, ClassName_In_Our_Code , DependencyEntityName) // Activity(ActivityName, ClassName_In_Our_Code , DependencyEntityName)
Activity HaveASleep ("HaveASleep", "FleetAGC.Activities.DelayActivity", ""); Activity HaveASleep ("HaveASleep", "FleetAGC.Activities.DelayActivity", "");
HaveASleep.addInputSetting("Timespan", "60"); HaveASleep.addInputSetting("Timespan", "60");
// (DisplayName , Message , DependencyEntityName) // ManualOperation(DisplayName , Message , TeamId to alert , DependencyEntityName)
ManualOperation AlertSomeone ("AlertSomeone", "This is some message", ""); ManualOperation AlertSomeone ("AlertSomeone", "This is some message", "AzDNetDeployments", "");
// Noop(DisplayName , DependencyEntityName)
Noop DummyNode ("Just do nothing", "");
// 但是如果你要定义很多很多Activity,建议下面的方法偷懒。 // 但是如果你要定义很多很多Activity,建议下面的方法偷懒。
//////////////////////////////////////////////////////////////////////////////////////////////// ////////////////////////////////////////////////////////////////////////////////////////////////
{ // 偷懒方案1 { // 偷懒方案1
// 这里假设你想用FleetAGC.Activities.DelayActivity,并且想给他一个TimeSpan参数。 // 这里假设你想用ManualOperation。
#define AC(name, entityName) \ #define AC(teamid, entityName) auto teamid = ManualOperation("Alert" #teamid, "This is an alert to wake you up!", #teamid, #entityName);
auto name = Activity(#name, "FleetAGC.Activities.DelayActivity", entityName).addInputSetting("Timespan", "60"); // 这里也有一个带参数的DelayActivity的例子。
// #define AC(name, entityName) auto name = Activity(#name, "FleetAGC.Activities.DelayActivity", #entityName).addInputSetting("Timespan", "60");
// 使用刚刚定义的偷懒宏。 // 使用刚刚定义的偷懒宏。
AC(GridManager, "M365Poc.SPO.GridManager") AC(GridManagerTeam, M365Poc.SPO.GridManager)
AC(AuthAndProvision, "M365Poc.SPO.AuthProvisioning") AC(AuthAndProvisionTeam, M365Poc.SPO.AuthProvisioning)
AC(FarmsAndTennats, "") AC(FarmsAndTennats, )
AC(CSC , "") AC(CSC , )
AC(FastSearch , "") AC(FastSearch , )
AC(Microservices, "M365Poc.SPO.MicroServices") AC(Microservices, M365Poc.SPO.MicroServices)
AC(MonitorAndAlert, "M365Poc.SPO.MonitoringAlerting") AC(MonitorAndAlert, M365Poc.SPO.MonitoringAlerting)
AC(SPOTooling, "M365Poc.SPO.SPOTooling") AC(SPOTooling, M365Poc.SPO.SPOTooling)
AC(UXCDNFailover, "M365Poc.SPO.UXCDNFailover") AC(UXCDNFailover, M365Poc.SPO.UXCDNFailover)
AC(ODFBSyncClient, "M365Poc.SPO.ODFBSyncClient") AC(ODFBSyncClient, M365Poc.SPO.ODFBSyncClient)
// 把定义好的Activity组合一下,其中箭头表示串行,竖线表示并行。 // 把定义好的Activity组合一下,其中箭头表示串行,竖线表示并行。
auto block1 = GridManager >> FarmsAndTennats >> (CSC | FastSearch); auto block1 = GridManagerTeam >> FarmsAndTennats >> (CSC | FastSearch);
auto block2 = Microservices | MonitorAndAlert; auto block2 = Microservices | MonitorAndAlert;
auto completeFlow = block1 | AuthAndProvision | block2 >> SPOTooling | UXCDNFailover | ODFBSyncClient; auto completeFlow = block1 | AuthAndProvisionTeam | block2 >> SPOTooling | UXCDNFailover | ODFBSyncClient;
// 最后指定一下workflow的名字就可以了。 // 最后指定一下workflow的名字就可以了。
println(completeFlow.generateXaml("FleetAGC.Workflows.SPOBuildoutPOCWorkflow")); println(completeFlow.generateXaml("FleetAGC.Workflows.SPOBuildoutPOCWorkflow"));
...@@ -53,3 +55,4 @@ if constexpr(false) { // 偷懒方案2 ...@@ -53,3 +55,4 @@ if constexpr(false) { // 偷懒方案2
// 最后指定一下workflow的名字就可以了。 // 最后指定一下workflow的名字就可以了。
println(completeFlow.generateXaml("FleetAGC.Workflows.SPOBuildoutPOCWorkflow")); println(completeFlow.generateXaml("FleetAGC.Workflows.SPOBuildoutPOCWorkflow"));
} }
...@@ -16,19 +16,19 @@ ManualOperation AlertSomeone ("AlertSomeone", "This is some message", "AzDNetDep ...@@ -16,19 +16,19 @@ ManualOperation AlertSomeone ("AlertSomeone", "This is some message", "AzDNetDep
{ // 偷懒方案1 { // 偷懒方案1
// 这里假设你想用FleetAGC.Activities.DelayActivity,并且想给他一个TimeSpan参数。 // 这里假设你想用FleetAGC.Activities.DelayActivity,并且想给他一个TimeSpan参数。
#define AC(name, entityName) \ #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(GridManager, M365Poc.SPO.GridManager)
AC(AuthAndProvision, "M365Poc.SPO.AuthProvisioning") AC(AuthAndProvision, M365Poc.SPO.AuthProvisioning)
AC(FarmsAndTennats, "") AC(FarmsAndTennats, )
AC(CSC , "") AC(CSC , )
AC(FastSearch , "") AC(FastSearch , )
AC(Microservices, "M365Poc.SPO.MicroServices") AC(Microservices, M365Poc.SPO.MicroServices)
AC(MonitorAndAlert, "M365Poc.SPO.MonitoringAlerting") AC(MonitorAndAlert, M365Poc.SPO.MonitoringAlerting)
AC(SPOTooling, "M365Poc.SPO.SPOTooling") AC(SPOTooling, M365Poc.SPO.SPOTooling)
AC(UXCDNFailover, "M365Poc.SPO.UXCDNFailover") AC(UXCDNFailover, M365Poc.SPO.UXCDNFailover)
AC(ODFBSyncClient, "M365Poc.SPO.ODFBSyncClient") AC(ODFBSyncClient, M365Poc.SPO.ODFBSyncClient)
// 把定义好的Activity组合一下,其中箭头表示串行,竖线表示并行。 // 把定义好的Activity组合一下,其中箭头表示串行,竖线表示并行。
auto block1 = GridManager >> FarmsAndTennats >> (CSC | FastSearch); auto block1 = GridManager >> FarmsAndTennats >> (CSC | FastSearch);
......
...@@ -105,6 +105,10 @@ R"XAML( <mwcwa:ManualOperation TaskId="__TEMPLATE_ARG_TaskId" DisplayName="__ ...@@ -105,6 +105,10 @@ R"XAML( <mwcwa:ManualOperation TaskId="__TEMPLATE_ARG_TaskId" DisplayName="__
</mwcwa:ManualOperation> </mwcwa:ManualOperation>
)XAML"; )XAML";
constexpr auto NOOP_XAML =
R"XAML( <mwcwa:NoOpsActivity DisplayName="__TEMPLATE_ARG_DisplayName" __TEMPLATE_ARG_EntityDefPlaceholder/>
)XAML";
} }
} }
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment