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); } }
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; } } } }
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)); }
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)); }
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); }
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()); }
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)); }
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)); }
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)); }
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); }
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); }