Example #1
0
        /// <summary>
        /// 如果在当前流程中找不到参数。根据probeMode参数决定是否查找父流程
        /// </summary>
        /// <typeparam name="T"></typeparam>
        /// <param name="paramName"></param>
        /// <param name="probeMode"></param>
        /// <param name="defaultValue"></param>
        /// <returns></returns>
        public T GetValueRecursively <T>(string paramName, WfProbeApplicationRuntimeParameterMode probeMode, T defaultValue)
        {
            object result = null;

            if (InnerGetValueRecursively <T>(this, ProcessInstance, probeMode, paramName, out result) == false)
            {
                result = defaultValue;
            }

            return((T)result);
        }
Example #2
0
        private static bool InnerGetValueRecursively <T>(WfApplicationRuntimeParameters parameters, IWfProcess process, WfProbeApplicationRuntimeParameterMode probeMode, string paramName, out object result)
        {
            paramName.CheckStringIsNullOrEmpty("paramName");

            result = null;
            bool existed = false;

            if (parameters.Contains(paramName))
            {
                object dataInARP = parameters[paramName];

                if (dataInARP is T)
                {
                    result = (T)dataInARP;
                }
                else
                {
                    result = DataConverter.ChangeType(parameters[paramName], typeof(T));
                }

                existed = true;
            }
            else
            {
                if (process != null)
                {
                    bool probParent = false;

                    switch (probeMode)
                    {
                    case WfProbeApplicationRuntimeParameterMode.Auto:
                        probParent = process.Descriptor.Properties.GetValue("ProbeParentProcessParams", false);
                        break;

                    case WfProbeApplicationRuntimeParameterMode.NotRecursively:
                        probParent = false;
                        break;

                    case WfProbeApplicationRuntimeParameterMode.Recursively:
                        probParent = true;
                        break;
                    }

                    if (probParent && process.HasParentProcess)
                    {
                        existed = InnerGetValueRecursively <T>(process.EntryInfo.OwnerActivity.Process.ApplicationRuntimeParameters, process.EntryInfo.OwnerActivity.Process, probeMode, paramName, out result);
                    }
                }
            }

            return(existed);
        }
Example #3
0
 public static WfClientProbeApplicationRuntimeParameterMode ToClientProbeApplicationRuntimeParameterMode(this WfProbeApplicationRuntimeParameterMode probeMode)
 {
     return((WfClientProbeApplicationRuntimeParameterMode)probeMode);
 }