示例#1
0
        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);
        }