From 70fec4db8e63d40af67ad1ecd6a28abaacabcc4f Mon Sep 17 00:00:00 2001 From: Bensong Liu <bensl@microsoft.com> Date: Tue, 20 Oct 2020 18:05:58 +0800 Subject: [PATCH] working on manual operation --- activity.hpp | 17 +++++++++++++---- xaml-template.hpp | 11 +++++++++++ 2 files changed, 24 insertions(+), 4 deletions(-) diff --git a/activity.hpp b/activity.hpp index 932fd7f..b2439fc 100644 --- a/activity.hpp +++ b/activity.hpp @@ -21,9 +21,14 @@ namespace CIS { class Flow; class Metadata; - class Activity { - public: + class ActivityBase { + private: friend Flow; + virtual rlib::string generateXaml() const = 0; + }; + + class Activity : private ActivityBase { + public: // All `Name` should not contain QuotationMark(") Activity(string displayName, string className, string entityName = "") : displayName(Utility::HtmlEscapeString(displayName)), className(className), entityName(entityName), taskId(Utility::GenUUID()) {} @@ -50,7 +55,7 @@ namespace CIS { auto inputSettingsString = ",\n"_rs.join(inputSettingStrings); return rlib::string(templates::ACTIVITY_DICT_TEMPLATE_UNESCAPED).replace_once("__TEMPLATE_ARG_DictLines", inputSettingsString); } - auto generateXaml() const { + virtual rlib::string generateXaml() const { rlib::string xamlCode; if(inputSettings.empty()) { @@ -75,9 +80,13 @@ namespace CIS { } }; + class ManualOperation : private ActivityBase { + + }; + class Flow { public: - Flow(const Activity &activity) { + Flow(const ActivityBase &activity) { xamlCode = activity.generateXaml(); } Flow(rlib::string xamlCode) : xamlCode(xamlCode) {} diff --git a/xaml-template.hpp b/xaml-template.hpp index 6c27599..9920e95 100644 --- a/xaml-template.hpp +++ b/xaml-template.hpp @@ -94,6 +94,17 @@ __TEMPLATE_ARG_XtraAssemblies </sco:Collection> )XAML"; constexpr auto STD_XAML_TAIL = "</Activity>"; + +constexpr auto MANUAL_OPERATION_XAML = +R"XAML( <mwcwa:ManualOperation DeprecatedTaskId="{x:Null}" TaskId="{x:Null}" DisplayName="__TEMPLATE_ARG_DisplayName" MonitoringSystems="icm" WaitUntilFinish="True"> + <mwcwa:ManualOperation.AdditionalContent> + <InArgument x:TypeArguments="x:String"> + <mca:CSharpValue x:TypeArguments="x:String">__TEMPLATE_ARG_CodeLines</mca:CSharpValue> + </InArgument> + </mwcwa:ManualOperation.AdditionalContent> + </mwcwa:ManualOperation> +)XAML"; + } } -- GitLab