protected override void Execute(NativeActivityContext context) { #region . Fill Header . var eventHeader = new EventHeader { EventKindCode = EventKindCode.Get(context), OperationCode = BillOperationCode.Get(context), ProcessCode = BPProcessCode.Get(context) }; var startDate = StartDate.Get(context); eventHeader.StartTime = startDate.HasValue ? startDate.Value : DateTime.Now; eventHeader.EndTime = EndDate.Get(context); eventHeader.MandantID = MandantId.Get <decimal?>(context); // авто-заполняемые поля eventHeader.Instance = context.WorkflowInstanceId.ToString(); #endregion . Fill Header . #region . Fill Params for Details . var evDetail = new EventDetail(); foreach (var parameter in Parameters) { var value = parameter.Value.Get(context); // пустые значение незачем передавать if (value == null) { continue; } if (evDetail.ContainsProperty(parameter.Key)) { evDetail.SetProperty(parameter.Key, value); } } #endregion . Fill Params for Details . var eventHeaderMgr = IoC.Instance.Resolve <IEventHeaderManager>(); var uw = BeginTransactionActivity.GetUnitOfWork(context); if (uw != null) { eventHeaderMgr.SetUnitOfWork(uw); } eventHeaderMgr.RegEvent(ref eventHeader, evDetail); context.SetValue(Result, eventHeader); }
/// <summary> /// Поиск работы для сущности по коду операции. /// </summary> /// <param name="entity">имя сущности</param> /// <param name="key">код экземпляра сущности</param> /// <param name="operation">код операции</param> /// <param name="mode">режим получения объекта</param> /// <returns>работа</returns> public static Work GetWorkByEntity(string entity, object key, BillOperationCode operation, GetModeEnum mode = GetModeEnum.Full) { var filter = string.Format( "workid in (select max(w2e.workid_r) from wmswork2entity w2e inner join wmswork w on w.workid = w2e.workid_r where w2e.work2entityentity = '{0}' and w2e.work2entitykey = '{1}' and w.operationcode_r = '{2}')", entity, key, operation); using (var mgr = IoC.Instance.Resolve <IBaseManager <Work> >()) { var works = mgr.GetFiltered(filter, mode).ToArray(); if (works.Length > 0) { return(works[0]); } } return(null); }