Beispiel #1
0
        /// <summary>
        /// 获取规则步骤数据操作类
        /// </summary>
        /// <param name="stepTypeCode">步骤类型唯一编码</param>
        /// <param name="repository"></param>
        /// <param name="taskId"></param>
        /// <param name="step"></param>
        /// <returns></returns>
        public static IRuleStepData GetRuleStepData(string stepTypeCode, IRepository repository, DmeTask task, DmeRuleStep step)
        {
            if (!Register.RuleStepPluginsMap.ContainsKey(stepTypeCode))
            {
                LOG.Warn($"没有找到步骤类型为[{stepTypeCode}]的插件信息");
                return(null);
            }
            RuleStepPluginRegisterDTO ruleStepPluginRegisterDTO = Register.RuleStepPluginsMap[stepTypeCode];
            String        baseDir      = AppDomain.CurrentDomain.BaseDirectory;
            string        assemblyPath = Path.Combine(baseDir, ruleStepPluginRegisterDTO.Assembly);
            Assembly      assembly     = Assembly.LoadFile(assemblyPath);
            IRuleStepData ruleStepData = (IRuleStepData)assembly.CreateInstance(ruleStepPluginRegisterDTO.ClassId, true, BindingFlags.CreateInstance, null
                                                                                , new object[] { repository, task, step }, null, null);

            return(ruleStepData);
        }
Beispiel #2
0
        /// <summary>
        /// 处理步骤属性信息
        /// </summary>
        /// <param name="db"></param>
        /// <param name="model"></param>
        /// <param name="version"></param>
        /// <param name="subStepAdd"></param>
        /// <param name="step"></param>
        private void HandleAttributes(SqlSugarClient db, DmeModel model, DmeModelVersion version, RuleStepAddDTO subStepAdd, DmeRuleStep step)
        {
            IList <AttributeReqDTO> properties = subStepAdd.Attributes;

            if (properties?.Count == 0)
            {
                LOG.Warn("没有可处理的步骤属性信息");
                return;
            }
            if (Register.RuleStepPluginsMap.ContainsKey(subStepAdd.StepType.Code))
            {
                RuleStepPluginRegisterDTO ruleStepPluginRegisterDTO = Register.RuleStepPluginsMap[subStepAdd.StepType.Code];
                String        baseDir      = AppDomain.CurrentDomain.BaseDirectory;
                string        assemblyPath = Path.Combine(baseDir, ruleStepPluginRegisterDTO.Assembly);
                Assembly      assembly     = Assembly.LoadFile(assemblyPath);
                IRuleStepData ruleStepData = (IRuleStepData)assembly.CreateInstance(ruleStepPluginRegisterDTO.ClassId, true, BindingFlags.CreateInstance, null
                                                                                    , new object[] { Repository, null, step }, null, null);
                if (null == ruleStepData)
                {
                    LOG.Warn($"无法创建步骤实体[{ruleStepPluginRegisterDTO.ClassId}]");
                    return;
                }
                IDictionary <string, Property> attributes = new Dictionary <string, Property>();
                // DmeRuleStepAttribute dmeRuleStepAttribute = null;
                foreach (var p in properties)
                {
                    EnumValueMetaType enumValueMetaType = new EnumValueMetaType();
                    if (string.IsNullOrEmpty(p.DataTypeCode))
                    {
                        enumValueMetaType = EnumValueMetaType.TYPE_UNKNOWN;
                    }
                    else
                    {
                        enumValueMetaType = EnumUtil.GetEnumObjByName <EnumValueMetaType>(p.DataTypeCode);
                    }
                    attributes[p.Name] = new Property(p.Name, p.Name, enumValueMetaType, p.Value,
                                                      null, null, null, 1, 0, 1, p.DataSourceCode, p.IsNeedPrecursor, p.Type);
                }
                ruleStepData.SaveAttributes(attributes);
            }
        }