Ejemplo n.º 1
0
        public static IIntelliFlowItem Create(Domain.IntelliFlowItem item, IDataContext context)
        {
            var fac = _itemFac[(Enums.IntelliFlowItemType)item.ItemTypeId];

            var newItem = fac.Create(item.ItemTypeId);

            IDataRepository <Domain.IntelliFlowItem> itemRepos = new EFDataRepository <Domain.IntelliFlowItem>(context);
            IDataRepository <Domain.Expression>      exprRepos = new EFDataRepository <Domain.Expression>(context);

            var childItems = itemRepos.Query(x => x.ParentItemId == (long)item.Id).ToArray();

            if (!childItems.IsNullOrEmpty())
            {
                var childItemList = new List <IIntelliFlowItem>();
                foreach (var child in childItems)
                {
                    var newChild = _Create(child, context, true);
                    childItemList.Add(newChild);
                }
                newItem.Children = new IntelliFlowIterator <IIntelliFlowItem>(childItemList.ToArray());
            }

            if (item.ParentItemId.HasValue)
            {
                var parent    = itemRepos.Get(item.ParentItemId.Value);
                var newParent = _Create(parent, context, false);
                newItem.Parent = newParent;
            }

            if (!item.Data.IsNullOrEmpty())
            {
                newItem.Input.Data = BinarySerializer.Deserialize((NEMILTEC.Shared.Enums.Data.DataType)item.DataTypeId, item.Data);
            }

            var itemExp = exprRepos.Query(x => x.ParentItemId == (long)item.Id).ToArray();

            if (!itemExp.IsNullOrEmpty())
            {
                var paramList = new List <IntelliFlowItemInputParameter>();
                foreach (var exp in itemExp)
                {
                    var param  = new IntelliFlowItemInputParameter();
                    var newExp = ExpressionFactory.Create(exp, context);
                    if (newExp is ValueExpression)
                    {
                        var valExp = newExp as ValueExpression;
                        param.Value = valExp.Value;
                    }
                    param.Expression = newExp;
                    paramList.Add(param);
                }

                newItem.Input.Parameters = paramList;
            }

            return(newItem);
        }
Ejemplo n.º 2
0
 public static object GetValue(this IntelliFlowItemInputParameter parameter, object data)
 {
     return(parameter.Expression != null?
            parameter.Expression.Evaluate(data) :
                parameter.Value);
 }