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