diff --git a/ChangeLog.md b/ChangeLog.md
index f5a0133..4a443f1 100644
--- a/ChangeLog.md
+++ b/ChangeLog.md
@@ -8,6 +8,14 @@ All notable changes to MIMWAL project will be documented in this file. The "Unre
------------
+### Version 2.16.0320.0
+
+#### Changed
+
+* The `[//Request/RequestParameter]` lookup for a SystemEvent request will resolve to request parameters in the parent request.
+
+------------
+
### Version 2.16.0315.0
#### Added
diff --git a/src/VersionInfo.cs b/src/VersionInfo.cs
index 827c613..17762b1 100644
--- a/src/VersionInfo.cs
+++ b/src/VersionInfo.cs
@@ -22,7 +22,7 @@ internal static class VersionInfo
/// Build Number (MMDD)
/// Revision (if any on the same day)
///
- internal const string Version = "2.16.0315.0";
+ internal const string Version = "2.16.0320.0";
///
/// File Version information for the assembly consists of the following four values:
@@ -31,6 +31,6 @@ internal static class VersionInfo
/// Build Number (MMDD)
/// Revision (if any on the same day)
///
- internal const string FileVersion = "2.16.0315.0";
+ internal const string FileVersion = "2.16.0320.0";
}
}
\ No newline at end of file
diff --git a/src/WorkflowActivityLibrary/Common/ExpressionFunction.cs b/src/WorkflowActivityLibrary/Common/ExpressionFunction.cs
index 75cb312..a5fa1ea 100644
--- a/src/WorkflowActivityLibrary/Common/ExpressionFunction.cs
+++ b/src/WorkflowActivityLibrary/Common/ExpressionFunction.cs
@@ -344,7 +344,7 @@ public object Run()
/// Type of the object to be deserialized
/// Serialized representation of the specified type
/// The Object being deserialized.
- private static T DeserializeObject(string xml)
+ internal static T DeserializeObject(string xml)
where T : class
{
T t;
diff --git a/src/WorkflowActivityLibrary/ComponentActivities/ResolveLookups.cs b/src/WorkflowActivityLibrary/ComponentActivities/ResolveLookups.cs
index 2fc9df4..c73ddc9 100644
--- a/src/WorkflowActivityLibrary/ComponentActivities/ResolveLookups.cs
+++ b/src/WorkflowActivityLibrary/ComponentActivities/ResolveLookups.cs
@@ -760,7 +760,7 @@ private void ForEachRead_ChildInitialized(object sender, ReplicatorChildEventArg
this.ReadResources = this.resources[this.resourceKey];
this.ReadAttributes = this.reads[this.resourceKey].ToArray();
- Logger.Instance.WriteVerbose(EventIdentifier.ResolveLookupsForEachReadChildInitialized, "ResourceKey: '{0}'. Read Attributes: '{1}'.", e.InstanceData, string.Join(",", this.ReadAttributes));
+ Logger.Instance.WriteVerbose(EventIdentifier.ResolveLookupsForEachReadChildInitialized, "ResourceKey: '{0}'. Read Attributes: '{1}'.", e.InstanceData, string.Join(",", this.ReadAttributes));
}
}
finally
@@ -813,7 +813,34 @@ private void ForEachResource_ChildCompleted(object sender, ReplicatorChildEventA
foreach (string attribute in this.reads[this.resourceKey].Where(attribute => read.Resource[attribute] != null))
{
- this.Publish(string.Format(CultureInfo.InvariantCulture, "{0}/{1}", this.resourceKey, attribute), read.Resource[attribute]);
+ // If the request is SystemEvent, RequestParameter of Request is published from the parent request.
+ if (this.resourceKey.Equals(LookupParameter.Request.ToString()) && this.Request.CurrentRequest.Operation == OperationType.SystemEvent && attribute == "RequestParameter")
+ {
+ RequestType parentRequest = this.ReadParentRequest.Resource as RequestType;
+
+ if (parentRequest != null)
+ {
+ IList parentRequestParameters = parentRequest.RequestParameters;
+ List requestParameters = new List();
+ if (parentRequestParameters.Count != 0)
+ {
+ foreach (string s in parentRequestParameters)
+ {
+ RequestParameter parentRequestParameter = ExpressionFunction.DeserializeObject(s);
+ if (parentRequestParameter.Target == this.Request.CurrentRequest.Target)
+ {
+ requestParameters.Add(s);
+ }
+ }
+
+ this.Publish(string.Format(CultureInfo.InvariantCulture, "{0}/{1}", LookupParameter.Request.ToString(), attribute), requestParameters);
+ }
+ }
+ }
+ else
+ {
+ this.Publish(string.Format(CultureInfo.InvariantCulture, "{0}/{1}", this.resourceKey, attribute), read.Resource[attribute]);
+ }
}
}
finally