Example #1
0
 private async void pushmsg(MfTask mt)
 {
     if (Connection.State.Equals(Microsoft.AspNet.SignalR.Client.ConnectionState.Disconnected))
     {
         try
         {
             //string ServerURI = string.Format("http://{0}/", Webserver);
             //WritelogStatic("CreateHubProxy-" + ServerURI);
             //Connection = new HubConnection(ServerURI);
             //HubProxy = Connection.CreateHubProxy("CscecPushHub");
             await Connection.Start();
         }
         catch (HttpRequestException hex)
         {
             WritelogStatic(
                 "pushmsg.HttpRequestException" +
                 hex.Message);
             return;
         }
         catch (Exception ex)
         {
             WritelogStatic("pushmsg." + ex.Message);
             return;
         }
     }
     try
     {
         await HubProxy.Invoke("PushMsg", mt);
     }
     catch (Exception ex)
     {
         WritelogStatic("HubProxy.Invoke(PushMsg, mt);." + ex.Message);
     }
 }
Example #2
0
File: hub.cs Project: weijx-xa/test
 public void PushMsg(MfTask mt)
 {
     Log.Info(string.Format("msg {0},总用户列表用户数 {1},本次通知用户数{2}", mt.Name, _scList.Count, mt.UserNameLists.Count));
     foreach (string userName in mt.UserNameLists)
     {
         foreach (SignalrClient signalrClient in _scList)
         {
             if (signalrClient.UserName == userName)
             {
                 Log.Info(string.Format("befor send {0},user , {1},{2}", mt.Name, userName, signalrClient.ConnectId));
                 Clients.Client(signalrClient.ConnectId).NewMsg(mt);
                 //  break;
             }
         }
     }
 }
Example #3
0
        private void Logonenotice(Vault vault, MfTask mt, string server)
        {
            var watch = new Stopwatch();

            watch.Start();
            try
            {
                foreach (string userId in mt.UserIds)
                {
                    mt.UserNameLists.Add(vault.UserOperations.GetUserAccount(int.Parse(userId)).LoginName);
                }
            }
            catch (Exception ex)
            {
                Writelog(string.Format("Logonenotice,mt.UserNameLists.Add(vault.UserOperations.GetUserAccount(int.Parse(userId)).LoginName);{0},{1},{2}", vault.Name, server, ex.Message));
            }
            pushmsg(mt);
            //var jsonSerializer = new JavaScriptSerializer();
            //var paras = jsonSerializer.Serialize(mt);
            //var url = string.Format("http://{0}/api/notices?request={1}", server, paras);
            //var response1 = string.Empty;
            //try
            //{
            //    var handler = new HttpClientHandler() { AutomaticDecompression = DecompressionMethods.GZip };

            //    using (var http = new HttpClient(handler))
            //    {
            //        //await异步等待回应
            //        var tmp = new Dictionary<string, string> { { "info", "selri" } };
            //        var request = new FormUrlEncodedContent(tmp);
            //        var response = await http.PostAsync(url, request);
            //        response.EnsureSuccessStatusCode();
            //        watch.Stop();
            //        response1 = await response.Content.ReadAsStringAsync();
            //    }
            //}
            //catch (Exception ex)
            //{
            //    Writelog(string.Format("logtask error:url={0},paras={1},{2}", url, paras, ex.Message));
            //}
            watch.Stop();
            Writelog(string.Format("in Logonetask,userid={0},id={1},Name={2},Type={3},ElapsedMilliseconds={4},vault={5},userids.count={6},.", mt.UserId, mt.Id, mt.Name, mt.Type,
                                   watch.ElapsedMilliseconds, mt.VaultGuid, mt.UserIds.Count));
        }
Example #4
0
        public void LogNewNotice(Vault vault, ObjVer objver, string server = "")
        {
            var watch = new Stopwatch();

            watch.Start();

            var pvs   = vault.ObjectPropertyOperations.GetProperties(objver);
            var otask = new MfTask
            {
                Version          = objver.Version,
                ClientName       = vault.Name,
                LastModifiedTime = pvs.SearchForProperty((int)MFBuiltInPropertyDef.MFBuiltInPropertyDefLastModified)
                                   .GetValueAsLocalizedText(),
                Type      = objver.Type,
                VaultGuid = vault.GetGUID(),
                Id        = objver.ID,
                Name      = pvs.SearchForProperty((int)MFBuiltInPropertyDef.MFBuiltInPropertyDefNameOrTitle).
                            Value.GetValueAsLocalizedText(),
                Time = pvs.SearchForProperty((int)MFBuiltInPropertyDef.MFBuiltInPropertyDefCreated).Value.GetValueAsLocalizedText(),

                Url = vault.ObjectOperations.GetMFilesURLForObject(objver.ObjID, objver.Version, true)
            };

            switch (objver.Type)
            {
            case (int)MFBuiltInObjectType.MFBuiltInObjectTypeDocument:
                otask.NotificationType = NotificationTypeEnum.NewDoc;
                break;

            case (int)MFBuiltInObjectType.MFBuiltInObjectTypeAssignment:
                otask.NotificationType = NotificationTypeEnum.NewTask;
                break;

            default:
                otask.NotificationType = NotificationTypeEnum.NewOtherObj;
                break;
            }

            Lognotices(vault, objver, otask, server.Trim());
            watch.Stop();
            Writelog(string.Format("LogNewNotice record,ElapsedMilliseconds={0},objver.type={1},id={2},version={4}, vault.Name={5},server={6}", watch.ElapsedMilliseconds, objver.Type, objver.ID, objver.ObjID, objver.Version, vault.Name, server));
        }
Example #5
0
        private bool DealTaskDone(MfTask otask, Vault vault, ObjVer objver, string server)
        {
            try
            {
                if (objver.Version < 2)
                {
                    return(false);
                }

                var pvs = vault.ObjectPropertyOperations.GetProperties(objver);
                var taskdoneuserlist = pvs.SearchForProperty((int)MFBuiltInPropertyDef.MFBuiltInPropertyDefCompletedBy);
                if (PropertyIsNull(taskdoneuserlist))
                {
                    return(false);
                }

                var lastobjver = new ObjVer();
                lastobjver.SetIDs(objver.Type, objver.ID, objver.Version - 1);
                var pvslast = vault.ObjectPropertyOperations.GetProperties(lastobjver);
                var taskdoneuserlistlast =
                    pvslast.SearchForProperty((int)MFBuiltInPropertyDef.MFBuiltInPropertyDefCompletedBy);
                //Writelog(
                //    string.Format(
                //        "in dealTaskDone,debug,MFBuiltInPropertyDefCompletedBy={0},taskdoneuserlist={1},taskdoneuserlistlast={2}",
                //        (int) MFBuiltInPropertyDef.MFBuiltInPropertyDefCompletedBy, taskdoneuserlist.Value.DisplayValue,
                //        taskdoneuserlistlast.Value.DisplayValue));
                if (PropertyIsNull(taskdoneuserlistlast) || taskdoneuserlist.Value.DisplayValue != taskdoneuserlistlast.Value.DisplayValue)
                {
                    var monitor = pvs.SearchForProperty((int)MFBuiltInPropertyDef.MFBuiltInPropertyDefMonitoredBy);
                    otask.UserIds.Add(monitor.TypedValue.GetValueAsLookup().Item.ToString(CultureInfo.InvariantCulture));
                    otask.NotificationType = NotificationTypeEnum.TaskDone;
                    Logonenotice(vault, otask, server);
                    return(true);
                }
            }
            catch (Exception ex)
            {
                Writelog(string.Format("dealtaskdone error : objver.ID={0},type={1},version={2},message={3}", objver.ID, objver.Type, objver.Version, ex.Message));
            }
            return(false);
        }
Example #6
0
        public void LogDelNotice(Vault vault, ObjVer objver, string server = "")
        {
            var pvs   = vault.ObjectPropertyOperations.GetProperties(objver);
            var otask = new MfTask
            {
                Version          = objver.Version,
                ClientName       = vault.Name,
                LastModifiedTime = pvs.SearchForProperty((int)MFBuiltInPropertyDef.MFBuiltInPropertyDefLastModified)
                                   .GetValueAsLocalizedText(),
                Type      = objver.Type,
                VaultGuid = vault.GetGUID(),
                Id        = objver.ID,
                Name      = pvs.SearchForProperty((int)
                                                  MFBuiltInPropertyDef.
                                                  MFBuiltInPropertyDefNameOrTitle).
                            Value.GetValueAsLocalizedText(),
                Time = pvs.SearchForProperty((int)
                                             MFBuiltInPropertyDef.
                                             MFBuiltInPropertyDefCreated).
                       Value.GetValueAsLocalizedText(),

                Url = vault.ObjectOperations.GetMFilesURLForObject(objver.ObjID, objver.Version, true)
            };

            switch (objver.Type)
            {
            case (int)MFBuiltInObjectType.MFBuiltInObjectTypeDocument:
                otask.NotificationType = NotificationTypeEnum.DelDoc;
                break;

            case (int)MFBuiltInObjectType.MFBuiltInObjectTypeAssignment:
                otask.NotificationType = NotificationTypeEnum.Other;
                break;

            default:
                otask.NotificationType = NotificationTypeEnum.DelOtherObj;
                break;
            }
            Lognotices(vault, objver, otask, server.Trim());
        }
Example #7
0
        public ObjectVersion CreateNotice(Vault mfVault, MfTask notice)
        {
            var oPropValues = new PropertyValues();

            if (!string.IsNullOrEmpty(notice.Content))
            {
                var oPropContent = new PropertyValue {
                    PropertyDef = 41
                };
                oPropContent.TypedValue.SetValue(MFDataType.MFDatatypeMultiLineText, notice.Content);
                oPropValues.Add(-1, oPropContent);
            }
            if (notice.AssignTo > 0)
            {
                var assignTos = new List <int> {
                    notice.AssignTo
                };
                var oPropAssignTo = new PropertyValue {
                    PropertyDef = 44
                };
                oPropAssignTo.TypedValue.SetValue(MFDataType.MFDatatypeMultiSelectLookup, assignTos.ToArray());
                oPropValues.Add(-1, oPropAssignTo);
            }
            foreach (MfProperty p in notice.OtherProps)
            {
                var type       = GetPropDefType(mfVault, p.PropDef);
                var oPropValue = new PropertyValue
                {
                    PropertyDef = p.PropDef
                };

                if (type == MFDataType.MFDatatypeLookup)
                {
                    int val;
                    if (int.TryParse(p.Value, out val))
                    {
                        oPropValue.TypedValue.SetValue(MFDataType.MFDatatypeLookup, val);
                        oPropValues.Add(-1, oPropValue);
                    }
                }
                else if (type == MFDataType.MFDatatypeMultiSelectLookup)
                {
                    if (!string.IsNullOrEmpty(p.Value))
                    {
                        var ids  = new List <int>();
                        var vArr = p.Value.Split(new[] { '_' });
                        foreach (string s in vArr)
                        {
                            int val;
                            if (int.TryParse(s, out val))
                            {
                                ids.Add(val);
                            }
                        }
                        if (ids.Count > 0)
                        {
                            oPropValue.TypedValue.SetValue(MFDataType.MFDatatypeMultiSelectLookup, ids.ToArray());
                            oPropValues.Add(-1, oPropValue);
                        }
                    }
                }
                else if (type == MFDataType.MFDatatypeText)
                {
                    oPropValue.TypedValue.SetValue(MFDataType.MFDatatypeText, p.Value);
                    oPropValues.Add(-1, oPropValue);
                }
                else if (type == MFDataType.MFDatatypeMultiLineText)
                {
                    oPropValue.TypedValue.SetValue(MFDataType.MFDatatypeMultiLineText, p.Value);
                    oPropValues.Add(-1, oPropValue);
                }
            }
            //if (notice.OtherPropDef > 0 && notice.OtherPropValue > 0)
            //{
            //    var type = GetPropDefType(mfVault, notice.OtherPropDef);
            //    var oPropValue = new PropertyValue
            //                     {
            //                         PropertyDef = notice.OtherPropDef
            //                     };
            //    if (type == MFDataType.MFDatatypeLookup)
            //    {
            //        oPropValue.TypedValue.SetValue(MFDataType.MFDatatypeLookup, notice.OtherPropValue);
            //        oPropValues.Add(-1, oPropValue);
            //    }
            //    else if (type == MFDataType.MFDatatypeMultiSelectLookup)
            //    {
            //        var ids = new List<int> { notice.OtherPropValue };
            //        oPropValue.TypedValue.SetValue(MFDataType.MFDatatypeMultiSelectLookup, ids.ToArray());
            //        oPropValues.Add(-1, oPropValue);
            //    }
            //}

            return(CreateMfObj(mfVault, notice.ObjType, notice.ObjClass, notice.Title, oPropValues));
        }
Example #8
0
        private void Lognotices(Vault vault, ObjVer objver, MfTask otask, string server)
        {
            //   Writelog(string.Format("in Lognotices,objver.type={0},id={1},vaultname={2}", objver.Type, objver.ID, vault.Name));
            var userIds = new Lookups();

            try
            {
                userIds = vault.ObjectPropertyOperations.GetProperty(objver, (int)MFBuiltInPropertyDef.
                                                                     MFBuiltInPropertyDefAssignedTo)
                          .Value.GetValueAsLookups();
            }
            #region no propertydefassignedto
            catch (Exception ex)
            {
                //  Writelog(string.Format("in Lognotices,big catch,type={0},id={1},vaultname={2},exception={3}", objver.Type, objver.ID, vault.Name,ex.Message ));
                try
                {
                    var perms = vault.ObjectOperations.GetObjectPermissions(objver);
                    var aceks = perms.CustomACL
                                                       ? perms.AccessControlList.CustomComponent.AccessControlEntries.
                                GetKeysWithPseudoUserDefinitions()
                                                       : perms.NamedACL.AccessControlList.CustomComponent.
                                AccessControlEntries.GetKeysWithPseudoUserDefinitions();
                    var aclc = perms.CustomACL ? perms.AccessControlList.CustomComponent
                                                      : perms.NamedACL.AccessControlList.CustomComponent;
                    Writelog(string.Format("perms:Count={0},CustomACL={1},Type={2},ID={3}", aceks.Count, perms.CustomACL, objver.Type, objver.ID));
                    foreach (AccessControlEntryKey acek in aceks)
                    {
                        Writelog(string.Format("perms:IsGroup={0},IsPseudoUser={1},PseudoUserID={2},UserOrGroupID={3}", acek.IsGroup, acek.IsPseudoUser, acek.PseudoUserID, acek.UserOrGroupID));
                        if (acek.UserOrGroupID == 1)
                        {
                            continue;                         //m-files api 获取结果不正确,暂时回避内部所有用户
                        }
                        #region deal with group
                        if (acek.IsGroup)
                        {
                            if (acek.IsPseudoUser)
                            {
                                foreach (UserOrUserGroupID uoug in acek.GetResolvedPseudoUserOrGroupIDs())
                                {
                                    #region deal with MFUserOrUserGroupTypeUserAccount
                                    if (uoug.UserOrGroupType == MFUserOrUserGroupType.MFUserOrUserGroupTypeUserAccount)
                                    {
                                        try
                                        {
                                            Writelog(string.Format("in Lognotices,big catch,first little try111,type={0},id={1},UserOrGroupID={2}", objver.Type, objver.ID, uoug.UserOrGroupID));
                                            //var perm = aclc.GetACEByUserOrGroupID(uoug.UserOrGroupID, false);
                                            //Writelog(string.Format("in Lognotices,big catch,first little try222,type={0},id={1},vaultname={2}", objver.Type, objver.ID, vault.Name));
                                            //var url =
                                            //    string.Format(
                                            //        "user1,AttachObjectsPermission={0},DeletePermission={1},ChangePermissionsPermission={2},EditPermission={3},ReadPermission={4},UserOrGroupID={5},CustomACL={6},ID={7}",
                                            //        perm.AttachObjectsPermission, perm.DeletePermission,
                                            //        perm.ChangePermissionsPermission, perm.EditPermission, perm.ReadPermission, uoug.UserOrGroupID, perms.CustomACL, objver.ID);
                                            //Writelog(string.Format("url:{0}", url)); //{"Id":1,"Name":"小白"}
                                            //if (Checkperm(perm)) continue;
                                            var lu = new Lookup {
                                                Item = uoug.UserOrGroupID
                                            };
                                            if (userIds.GetLookupIndexByItem(lu.Item) < 0)
                                            {
                                                userIds.Add(-1, lu);
                                            }
                                        }
                                        catch (Exception ex1)
                                        {
                                            Writelog(string.Format("in Lognotices,big catch,first little catch,type={0},id={1},vaultname={2},exception={3}", objver.Type, objver.ID, vault.Name, ex1.Message));
                                        }
                                    }
                                    #endregion deal with MFUserOrUserGroupTypeUserAccount
                                    #region deal with MFUserOrUserGroupTypeUserGroup
                                    else if (uoug.UserOrGroupType == MFUserOrUserGroupType.MFUserOrUserGroupTypeUserGroup)
                                    {
                                        try
                                        {
                                            Writelog(string.Format("in Lognotices,big catch,second little try 111,type={0},id={1},UserOrGroupID={2},acek.UserOrGroupID={3}", objver.Type, objver.ID, uoug.UserOrGroupID, acek.UserOrGroupID));
                                            //var perm = aclc.GetACEByUserOrGroupID(uoug.UserOrGroupID, true);
                                            //Writelog(string.Format("in Lognotices,big catch,second little try 222,type={0},id={1},vaultname={2}", objver.Type, objver.ID, vault.Name));
                                            //var url =
                                            //   string.Format(
                                            //        "group1,AttachObjectsPermission={0},DeletePermission={1},ChangePermissionsPermission={2},EditPermission={3},ReadPermission={4},UserOrGroupID={5},CustomACL={6},ID={7}",
                                            //        perm.AttachObjectsPermission, perm.DeletePermission,
                                            //        perm.ChangePermissionsPermission, perm.EditPermission, perm.ReadPermission, uoug.UserOrGroupID, perms.CustomACL, objver.ID);
                                            //Writelog(string.Format("url:{0}", url)); //{"Id":1,"Name":"小白"}
                                            //if (Checkperm(perm)) continue;
                                            var retul = GetUsers(vault, uoug.UserOrGroupID);
                                            foreach (var lu in retul)
                                            {
                                                if (userIds.GetLookupIndexByItem(lu.Item) < 0)
                                                {
                                                    userIds.Add(-1, lu);
                                                }
                                            }
                                        }
                                        catch (Exception ex2)
                                        {
                                            Writelog(string.Format("in Lognotices,big catch,2nd little catch,type={0},id={1},vaultname={2},exception={3}", objver.Type, objver.ID, vault.Name, ex2.Message));
                                        }
                                    }
                                    #endregion deal MFUserOrUserGroupTypeUserGroup
                                    //    Writelog(
                                    //string.Format(
                                    //    "in LogCheckInNotice,catch'catch,UserOrGroupID={0},IsPseudoUser={1},Type={2},ID={3},UserOrGroupID={4},UserOrGroupType={5}",
                                    //    acek.UserOrGroupID,
                                    //    acek.IsPseudoUser, objver.Type, objver.ID, uoug.UserOrGroupID, uoug.UserOrGroupType));
                                }
                                continue;
                            }
                            IEnumerable <Lookup> ul = new List <Lookup>();
                            try
                            {
                                var perm = aclc.GetACEByUserOrGroupID(acek.UserOrGroupID, true);
                                var url  =
                                    string.Format(
                                        "group2,AttachObjectsPermission={0},DeletePermission={1},ChangePermissionsPermission={2},EditPermission={3},ReadPermission={4},UserOrGroupID={5},CustomACL={6},ID={7}",
                                        perm.AttachObjectsPermission, perm.DeletePermission,
                                        perm.ChangePermissionsPermission, perm.EditPermission, perm.ReadPermission, acek.UserOrGroupID, perms.CustomACL, objver.ID);
                                Writelog(string.Format("url:{0}", url));
                                if (Checkperm(perm))
                                {
                                    continue;
                                }
                                ul = GetUsers(vault, acek.UserOrGroupID);
                                //  ul = GetUsers(vault, uoug.UserOrGroupID);
                            }
                            catch (Exception exson)
                            {
                                Writelog(
                                    string.Format(
                                        "in Lognotices,catch'catch,UserOrGroupID={0},IsPseudoUser={1},Type={2},ID={3},Message={4}",
                                        acek.UserOrGroupID,
                                        acek.IsPseudoUser, objver.Type, objver.ID, exson.Message));
                            }
                            try
                            {
                                foreach (var lu in ul)
                                {
                                    if (userIds.GetLookupIndexByItem(lu.Item) < 0)
                                    {
                                        userIds.Add(-1, lu);
                                    }
                                }
                            }
                            catch (Exception ex3)
                            {
                                Writelog(string.Format("in Lognotices,big catch,third little catch,type={0},id={1},vaultname={2},exception={3}", objver.Type, objver.ID, vault.Name, ex3.Message));
                            }
                        }
                        #endregion deal with group
                        else
                        {
                            try
                            {
                                var perm = aclc.GetACEByUserOrGroupID(acek.UserOrGroupID, false);
                                var url  = string.Format(
                                    "user2,AttachObjectsPermission={0},DeletePermission={1},ChangePermissionsPermission={2},EditPermission={3},ReadPermission={4},UserOrGroupID={5},CustomACL={6},ID={7}",
                                    perm.AttachObjectsPermission, perm.DeletePermission,
                                    perm.ChangePermissionsPermission, perm.EditPermission, perm.ReadPermission, acek.UserOrGroupID, perms.CustomACL, objver.ID);
                                Writelog(string.Format("url:{0}", url)); //{"Id":1,"Name":"小白"}
                                if (Checkperm(perm))
                                {
                                    continue;
                                }
                                var lu = new Lookup {
                                    Item = acek.UserOrGroupID
                                };
                                if (userIds.GetLookupIndexByItem(lu.Item) < 0)
                                {
                                    userIds.Add(-1, lu);
                                }
                            }
                            catch (Exception ex4)
                            {
                                Writelog(string.Format("in Lognotices,big catch,4th little catch,type={0},id={1},vaultname={2},exception={3}", objver.Type, objver.ID, vault.Name, ex4.Message));
                            }
                        }
                    }
                }
                catch (Exception exx)
                {
                    Writelog(string.Format("in Lognotices,in big catch,another catch,type={0},id={1},vaultname={2},exception={3}", objver.Type, objver.ID, vault.Name, exx.Message));
                }
                //   Writelog(string.Format("in Lognotices,end big catch,type={0},id={1},vaultname={2}", objver.Type, objver.ID, vault.Name));
            }
            #endregion no propertydefassignedto
            try
            {
                foreach (Lookup a in userIds)
                {
                    otask.UserIds.Add(a.Item.ToString(CultureInfo.InvariantCulture));
                }
                //Writelog(string.Format("Users Info,type={0},id={1},vaultname={2},counts={3},users={4}",
                //    objver.Type, objver.ID, vault.Name, userIds.Count, userIds.ToString()));

                Logonenotice(vault, otask, server);
            }
            catch (Exception ex)
            {
                Writelog(string.Format("in Lognotices,Logonetask,type={0},id={1},{2}", objver.Type, objver.ID, ex.Message));
            }
            // Writelog(string.Format("in Lognotices,the end,type={0},id={1},vaultname={2}", objver.Type, objver.ID, vault.Name));
        }
Example #9
0
        public void LogCheckInNotice(Vault vault, ObjVer objver, string server = "")
        {
            var watch = new Stopwatch();

            watch.Start();
            var pvs     = vault.ObjectPropertyOperations.GetProperties(objver);
            var objname = pvs.SearchForProperty((int)
                                                MFBuiltInPropertyDef.
                                                MFBuiltInPropertyDefNameOrTitle).
                          Value.GetValueAsLocalizedText();
            var time = pvs.SearchForProperty((int)
                                             MFBuiltInPropertyDef.
                                             MFBuiltInPropertyDefCreated).
                       Value.GetValueAsLocalizedText();
            var creator = pvs.SearchForProperty((int)
                                                MFBuiltInPropertyDef.
                                                MFBuiltInPropertyDefCreatedBy).
                          Value.GetValueAsLocalizedText();
            var classid =
                pvs.SearchForProperty((int)MFBuiltInPropertyDef.MFBuiltInPropertyDefClass).GetValueAsLocalizedText();

            Writelog(string.Format("CheckIn Log info,类别={0},对象类型={1},对象id={2},version={4},名称={3}, vault.Name={5},creator={6}",
                                   classid, objver.Type, objver.ID, objname, objver.Version, vault.Name, creator));
            var otask = new MfTask
            {
                Version          = objver.Version,
                ClientName       = vault.Name,
                LastModifiedTime = pvs.SearchForProperty((int)MFBuiltInPropertyDef.MFBuiltInPropertyDefLastModified)
                                   .GetValueAsLocalizedText(),
                Type      = objver.Type,
                VaultGuid = vault.GetGUID(),
                Id        = objver.ID,
                Name      = objname,
                Time      = time,
                Url       = vault.ObjectOperations.GetMFilesURLForObject(objver.ObjID, objver.Version, true)
            };

            switch (objver.Type)
            {
            case (int)MFBuiltInObjectType.MFBuiltInObjectTypeDocument:
                otask.NotificationType = NotificationTypeEnum.UpdateDoc;
                break;

            case (int)MFBuiltInObjectType.MFBuiltInObjectTypeAssignment:
                if (DealTaskDone(otask, vault, objver, server.Trim()))
                {
                    watch.Stop();
                    Writelog(string.Format("CheckIn Log End--TaskDone,Com耗时={0}毫秒,对象类型={1},对象id={2},version={4}, vault.Name={5},server={6}",
                                           watch.ElapsedMilliseconds, objver.Type, objver.ID, objver.ObjID, objver.Version, vault.Name, server));
                    return;
                }

                otask.NotificationType = NotificationTypeEnum.UpdateTask;
                break;

            default:
                otask.NotificationType = NotificationTypeEnum.UpdateOtherObj;
                break;
            }
            if (objver.Type != (int)MFBuiltInObjectType.MFBuiltInObjectTypeAssignment)
            {
                var pvs1 = vault.ObjectPropertyOperations.GetProperties(objver);
                foreach (PropertyValue pv in pvs1)
                {
                    // Writelog(string.Format("in LogCheckInNotice,debug,type={0},id={1},{2}", objver.Type, objver.ID, pv.PropertyDef));
                    if (pv.PropertyDef == (int)MFBuiltInPropertyDef.MFBuiltInPropertyDefAssignedTo)
                    {
                        otask.NotificationType = NotificationTypeEnum.WorkFlowAssigned;
                        break;
                    }
                }
            }
            Lognotices(vault, objver, otask, server.Trim());
            watch.Stop();
            Writelog(string.Format("CheckIn Log End,Com耗时={0}毫秒,对象类型={1},对象id={2},version={4}, vault.Name={5},server={6}",
                                   watch.ElapsedMilliseconds, objver.Type, objver.ID, objver.ObjID, objver.Version, vault.Name, server));
        }
Example #10
0
        private IEnumerable <MfTask> GetTaskApprove(Vault vault, int?mfuserid, string tasktitle)
        {
            var forworklist = new List <MfTask>();

            try
            {
                var ClassNotification =
                    vault.GetMetadataStructureItemIDByAlias(MFMetadataStructureItem.MFMetadataStructureItemClass,
                                                            MfilesAliasConfig.ClassNotification);
                //      var ClassTaskApprove =
                //vault.GetMetadataStructureItemIDByAlias(MFMetadataStructureItem.MFMetadataStructureItemClass,
                //    MfilesAliasConfig.ClassTaskApprove);
                var scs = new SearchConditions();
                {
                    var sc = new SearchCondition();
                    sc.ConditionType = MFConditionType.MFConditionTypeEqual;
                    sc.Expression.SetStatusValueExpression(MFStatusType.MFStatusTypeObjectTypeID);

                    sc.TypedValue.SetValueToLookup(new Lookup
                    {
                        Item = (int)MFBuiltInObjectType.MFBuiltInObjectTypeAssignment
                    });
                    scs.Add(-1, sc);
                }
                {
                    var sc = new SearchCondition();
                    sc.ConditionType = MFConditionType.MFConditionTypeNotEqual;
                    sc.Expression.DataPropertyValuePropertyDef = (int)MFBuiltInPropertyDef.MFBuiltInPropertyDefClass;
                    sc.TypedValue.SetValueToLookup(new Lookup {
                        Item = ClassNotification
                    });
                    scs.Add(-1, sc);
                }
                {
                    var sc = new SearchCondition();
                    sc.ConditionType = MFConditionType.MFConditionTypeEqual;
                    sc.Expression.DataPropertyValuePropertyDef = (int)MFBuiltInPropertyDef.MFBuiltInPropertyDefAssignedTo;
                    sc.TypedValue.SetValueToLookup(new Lookup {
                        Item = (int)mfuserid
                    });
                    scs.Add(-1, sc);
                }
                var ovs = vault.ObjectSearchOperations.SearchForObjectsByConditionsEx(scs,
                                                                                      MFSearchFlags.MFSearchFlagNone, false, 0, 0).ObjectVersions;
                //    Log.Info(string.Format("mfuserid:{0},tasks:{1},ClassTaskApprove:{2}", mfuserid, ovs.Count, ClassTaskApprove));

                foreach (ObjectVersion objectVersion in ovs)
                {
                    var pvs  = vault.ObjectPropertyOperations.GetProperties(objectVersion.ObjVer);
                    var link = vault.ObjectOperations.GetMFilesURLForObject(objectVersion.ObjVer.ObjID,
                                                                            objectVersion.ObjVer.Version, true);
                    var taskname = pvs.SearchForProperty(0).GetValueAsLocalizedText();

                    var relations = vault.ObjectOperations.GetRelationships(objectVersion.ObjVer,
                                                                            MFRelationshipsMode.MFRelationshipsModeAll);
                    var creator = string.Empty;
                    foreach (ObjectVersion relation in relations)
                    {
                        //   var objpvs = vault.ObjectPropertyOperations.GetProperties(relation.ObjVer);
                        //     var name = objpvs.SearchForProperty(0).GetValueAsLocalizedText();
                        //   creator = objpvs.SearchForProperty((int) MFBuiltInPropertyDef.MFBuiltInPropertyDefCreatedBy).GetValueAsLocalizedText();
                        creator = vault.ObjectPropertyOperations.GetProperty(relation.ObjVer, (int)MFBuiltInPropertyDef.MFBuiltInPropertyDefCreatedBy).GetValueAsLocalizedText();
                        break;
                        //   Log.Info(string.Format("{4},relation: {0},{1},{2},{3},{5}", name, relation.ObjVer.Type, relation.ObjVer.ID, relation.ObjVer.Version, taskname, creator));
                    }
                    var taskOrNoticeOfVault = new MfTask
                    {
                        Url              = link,
                        Name             = taskname,
                        ClientName       = vault.Name,
                        LastModifiedTime = pvs.SearchForProperty((int)MFBuiltInPropertyDef.MFBuiltInPropertyDefLastModified)
                                           .GetValueAsLocalizedText(),
                        Createby = creator,
                        Time     = pvs.SearchForProperty((int)MFBuiltInPropertyDef.MFBuiltInPropertyDefCreated).GetValueAsLocalizedText()
                    };
                    forworklist.Add(taskOrNoticeOfVault);
                }
            }
            catch (Exception ex)
            {
                Log.Info(string.Format("GetTaskApprove {0},{1} error:{2}", vault.Name, mfuserid, ex.Message));
            }
            return(forworklist);
        }
Example #11
0
        private IEnumerable <MfTask> GetTaskWorkflow(Vault vault, int?mfuserid, string tasktitle)
        {
            var forworklist = new List <MfTask>();

            try
            {//工作流任务
                var scs = new SearchConditions();
                {
                    var sc = new SearchCondition();
                    sc.ConditionType = MFConditionType.MFConditionTypeNotEqual;
                    sc.Expression.SetStatusValueExpression(MFStatusType.MFStatusTypeObjectTypeID);

                    sc.TypedValue.SetValueToLookup(new Lookup
                    {
                        Item = (int)MFBuiltInObjectType.MFBuiltInObjectTypeAssignment
                    });
                    scs.Add(-1, sc);
                }
                {
                    var sc = new SearchCondition();
                    sc.ConditionType = MFConditionType.MFConditionTypeEqual;
                    sc.Expression.DataPropertyValuePropertyDef = (int)MFBuiltInPropertyDef.MFBuiltInPropertyDefAssignedTo;
                    sc.TypedValue.SetValueToLookup(new Lookup {
                        Item = (int)mfuserid
                    });
                    scs.Add(-1, sc);
                }
                var ovs = vault.ObjectSearchOperations.SearchForObjectsByConditionsEx(scs,
                                                                                      MFSearchFlags.MFSearchFlagNone, false, 0, 0).ObjectVersions;
                Log.Info(string.Format("mfuserid:{0},工作流普通任务 tasks:{1}", mfuserid, ovs.Count));
                foreach (ObjectVersion objectVersion in ovs)
                {
                    var pvs = vault.ObjectPropertyOperations.GetProperties(objectVersion.ObjVer);
                    //       Log.Info(string.Format("mfuserid:{0},工作流普通任务 tasks:{1}", mfuserid, "aaa"));
                    var link = vault.ObjectOperations.GetMFilesURLForObject(objectVersion.ObjVer.ObjID,
                                                                            objectVersion.ObjVer.Version, true);
                    //    Log.Info(string.Format("mfuserid:{0},工作流普通任务 tasks:{1}", mfuserid, "bbb"));
                    var Name = pvs.SearchForProperty(0).GetValueAsLocalizedText();
                    //    Log.Info(string.Format("mfuserid:{0},工作流普通任务 tasks:{1}", mfuserid, "ccc"));
                    var Assigner =
                        pvs.SearchForProperty((int)MFBuiltInPropertyDef.MFBuiltInPropertyDefCreatedBy)
                        .GetValueAsLocalizedText();
                    //     Log.Info(string.Format("mfuserid:{0},工作流普通任务 tasks:{1}", mfuserid, "ddd"));
                    var Content = string.Empty;
                    try
                    {
                        Content = pvs.SearchForProperty((int)MFBuiltInPropertyDef.MFBuiltInPropertyDefAssignmentDescription)
                                  .GetValueAsLocalizedText();
                    }
                    catch (Exception) { }
                    //     Log.Info(string.Format("mfuserid:{0},工作流普通任务 tasks:{1}", mfuserid, "eee"));
                    var Date =
                        pvs.SearchForProperty((int)MFBuiltInPropertyDef.MFBuiltInPropertyDefCreated)
                        .GetValueAsLocalizedText();
                    //      Log.Info(string.Format("mfuserid:{0},工作流普通任务 tasks:{1}", mfuserid, "fff"));
                    var tonn = new MfTask
                    {
                        Url              = link,
                        Name             = Name,
                        Createby         = Assigner,
                        ClientName       = vault.Name,
                        LastModifiedTime = pvs.SearchForProperty((int)MFBuiltInPropertyDef.MFBuiltInPropertyDefLastModified)
                                           .GetValueAsLocalizedText(),
                        Desc = Content,
                        Time = Date
                    };
                    forworklist.Add(tonn);
                }
            }
            catch (Exception ex)
            {
                Log.Info("GetTaskWorkflow error:" + ex.Message);
            }
            return(forworklist);
        }