Beispiel #1
0
        /// <summary>
        /// 给设计节点添加签出信息,如果已签出的模型节点则用本地存储替换原模型
        /// </summary>
        internal void BindCheckoutInfo(DesignNode node, bool isNewNode)
        {
            //if (node.NodeType == DesignNodeType.FolderNode || !node.AllowCheckout)
            //    throw new ArgumentException("不允许绑定签出信息: " + node.NodeType.ToString());

            //先判断是否新增的
            if (isNewNode)
            {
                node.CheckoutInfo = new CheckoutInfo(node.NodeType, node.CheckoutInfoTargetID, node.Version,
                                                     DesignHub.Session.Name, DesignHub.Session.LeafOrgUnitID);
                return;
            }

            //非新增的比对服务端的签出列表
            string key = CheckoutInfo.MakeKey(node.NodeType, node.CheckoutInfoTargetID);

            if (_checkouts.TryGetValue(key, out CheckoutInfo checkout))
            {
                node.CheckoutInfo = checkout;
                if (node.IsCheckoutByMe) //如果是被当前用户签出的模型
                {
                    if (node is ModelNode modelNode)
                    {
                        //从本地缓存加载
                        var stagedModel = Staged.FindModel(modelNode.Model.Id);
                        if (stagedModel != null)
                        {
                            modelNode.Model = stagedModel;
                        }
                    }
                }
            }
        }
Beispiel #2
0
 /// <summary>
 /// 用于签出节点成功后添加签出信息列表
 /// </summary>
 internal void AddCheckoutInfos(List <CheckoutInfo> infos)
 {
     for (int i = 0; i < infos.Count; i++)
     {
         string key = CheckoutInfo.MakeKey(infos[i].NodeType, infos[i].TargetID);
         if (!_checkouts.ContainsKey(key))
         {
             _checkouts.Add(key, infos[i]);
         }
     }
 }