コード例 #1
0
        public virtual HistoryEvent CreateActivityInstanceMigrateEvt(MigratingActivityInstance actInstance)
        {
            // create event instance
            HistoricActivityInstanceEventEntity evt = LoadActivityInstanceEventEntity(actInstance.ResolveRepresentativeExecution());

            // initialize event
            InitActivityInstanceEvent(evt, actInstance, HistoryEventTypes.ActivityInstanceMigrate);

            return(evt);
        }
コード例 #2
0
        protected internal override HistoricActivityInstanceEventEntity LoadActivityInstanceEventEntity(
            ExecutionEntity execution)
        {
            var activityInstanceId = execution.ActivityInstanceId;

            HistoricActivityInstanceEventEntity cachedEntity = FindInCache <HistoricActivityInstanceEventEntity>(typeof(HistoricActivityInstanceEventEntity), activityInstanceId);

            if (cachedEntity != null)
            {
                return(cachedEntity);
            }
            else
            {
                return(NewActivityInstanceEventEntity(execution));
            }
        }
コード例 #3
0
        protected internal override HistoricActivityInstanceEventEntity loadActivityInstanceEventEntity(ExecutionEntity execution)
        {
//JAVA TO C# CONVERTER WARNING: The original Java variable was marked 'final':
//ORIGINAL LINE: final String activityInstanceId = execution.getActivityInstanceId();
            string activityInstanceId = execution.ActivityInstanceId;

            HistoricActivityInstanceEventEntity cachedEntity = findInCache(typeof(HistoricActivityInstanceEventEntity), activityInstanceId);

            if (cachedEntity != null)
            {
                return(cachedEntity);
            }
            else
            {
                return(newActivityInstanceEventEntity(execution));
            }
        }
コード例 #4
0
        protected internal virtual void InitActivityInstanceEvent(HistoricActivityInstanceEventEntity evt, MigratingActivityInstance migratingActivityInstance, IHistoryEventType eventType)
        {
            IPvmScope eventSource        = migratingActivityInstance.TargetScope;
            string    activityInstanceId = migratingActivityInstance.ActivityInstanceId;

            MigratingActivityInstance parentInstance = (MigratingActivityInstance)migratingActivityInstance.Parent;
            string parentActivityInstanceId          = null;

            if (parentInstance != null)
            {
                parentActivityInstanceId = parentInstance.ActivityInstanceId;
            }

            ExecutionEntity execution = migratingActivityInstance.ResolveRepresentativeExecution();

            InitActivityInstanceEvent(evt, execution, eventSource, activityInstanceId, parentActivityInstanceId, eventType);
        }
コード例 #5
0
        public virtual HistoryEvent CreateActivityInstanceUpdateEvt(IDelegateExecution execution, IDelegateTask task)
        {
            ExecutionEntity executionEntity = (ExecutionEntity)execution;

            // create event instance
            HistoricActivityInstanceEventEntity evt = LoadActivityInstanceEventEntity(executionEntity);

            // initialize event
            InitActivityInstanceEvent(evt, executionEntity, HistoryEventTypes.ActivityInstanceUpdate);

            // update ITask assignment
            if (task != null)
            {
                evt.TaskId       = task.Id;
                evt.TaskAssignee = task.Assignee;
            }

            return(evt);
        }
コード例 #6
0
        public virtual HistoryEvent CreateActivityInstanceStartEvt(IDelegateExecution execution)
        {
            //JAVA TO C# CONVERTER WARNING: The original Java variable was marked 'final':
            //ORIGINAL LINE: final org.camunda.bpm.persistence.entity.ExecutionEntity executionEntity = (org.camunda.bpm.persistence.entity.ExecutionEntity) execution;
            ExecutionEntity executionEntity = (ExecutionEntity)execution;

            // create event instance
            HistoricActivityInstanceEventEntity evt = NewActivityInstanceEventEntity(executionEntity);

            // initialize event
            InitActivityInstanceEvent(evt, executionEntity, HistoryEventTypes.ActivityInstanceStart);

            // initialize sequence counter
            InitSequenceCounter(executionEntity, evt);

            evt.StartTime = ClockUtil.CurrentTime;

            return(evt);
        }
コード例 #7
0
        public virtual HistoryEvent CreateActivityInstanceEndEvt(IDelegateExecution execution)
        {
            //JAVA TO C# CONVERTER WARNING: The original Java variable was marked 'final':
            //ORIGINAL LINE: final org.camunda.bpm.persistence.entity.ExecutionEntity executionEntity = (org.camunda.bpm.persistence.entity.ExecutionEntity) execution;
            ExecutionEntity executionEntity = (ExecutionEntity)execution;

            // create event instance
            HistoricActivityInstanceEventEntity evt = LoadActivityInstanceEventEntity(executionEntity);

            evt.ActivityInstanceState = executionEntity.ActivityInstanceState;

            // initialize event
            InitActivityInstanceEvent(evt, (ExecutionEntity)execution, HistoryEventTypes.ActivityInstanceEnd);

            evt.EndTime = ClockUtil.CurrentTime;
            if (evt.StartTime != null)
            {
                evt.DurationInMillis = ((DateTime)evt.EndTime).Ticks - ((DateTime)evt.StartTime).Ticks;
            }

            return(evt);
        }
コード例 #8
0
        protected internal virtual void InitActivityInstanceEvent(HistoricActivityInstanceEventEntity evt, ExecutionEntity execution, IPvmScope eventSource, string activityInstanceId, string parentActivityInstanceId, IHistoryEventType eventType)
        {
            evt.Id                       = activityInstanceId;
            evt.EventType                = eventType.EventName;
            evt.ActivityInstanceId       = activityInstanceId;
            evt.ParentActivityInstanceId = parentActivityInstanceId;
            evt.ProcessDefinitionId      = execution.ProcessDefinitionId;
            evt.ProcessInstanceId        = execution.ProcessInstanceId;
            evt.ExecutionId              = execution.Id;
            evt.TenantId                 = execution.TenantId;

            ProcessDefinitionEntity definition = execution.GetProcessDefinition();

            if (definition != null)
            {
                evt.ProcessDefinitionKey = definition.Key;
            }

            evt.ActivityId   = eventSource.Id;
            evt.ActivityName = (string)eventSource.GetProperty("name");
            evt.ActivityType = (string)eventSource.GetProperty("type");

            // update sub process reference
            ExecutionEntity subProcessInstance = execution.GetSubProcessInstance();

            if (subProcessInstance != null)
            {
                evt.CalledProcessInstanceId = subProcessInstance.Id;
            }

            // update sub case reference
            //CaseExecutionEntity subCaseInstance = execution.GetSubCaseInstance();
            //if (subCaseInstance != null)
            //{
            //    evt.CalledCaseInstanceId = subCaseInstance.Id;
            //}
        }
コード例 #9
0
        protected internal virtual void InitActivityInstanceEvent(HistoricActivityInstanceEventEntity evt, ExecutionEntity execution, IHistoryEventType eventType)
        {
            IPvmScope eventSource = execution.Activity;

            if (eventSource == null)
            {
                eventSource = (IPvmScope)execution.EventSource;
            }
            string activityInstanceId = execution.ActivityInstanceId;

            string          parentActivityInstanceId = null;
            ExecutionEntity parentExecution          = (ExecutionEntity)execution.Parent;

            if (parentExecution != null && CompensationBehavior.IsCompensationThrowing(parentExecution) && execution.Activity != null)
            {
                parentActivityInstanceId = CompensationBehavior.GetParentActivityInstanceId(execution);
            }
            else
            {
                parentActivityInstanceId = execution.ParentActivityInstanceId;
            }

            InitActivityInstanceEvent(evt, execution, eventSource, activityInstanceId, parentActivityInstanceId, eventType);
        }
コード例 #10
0
 private void Update(HistoryEvent historyEvent)
 {
     if (historyEvent is HistoricProcessInstanceEventEntity)
     {
         HistoricProcessInstanceEventEntity data = historyEvent as HistoricProcessInstanceEventEntity;
         //TODO 不在EF上下文,再次更新会异常
         log.LogDebug("Entity当前状态", Context.CommandContext.GetEntityStateInEF <HistoricProcessInstanceEventEntity>(data).ToString());
         if (Context.CommandContext.GetEntityStateInEF <HistoricProcessInstanceEventEntity>(data) != EntityState.Detached)
         {
             //TODO dbEntityManager.merge(historyEvent)
             //Context.CommandContext.GetDbEntityManager<HistoricProcessInstanceEventEntity>().Update(data);
             Context.CommandContext.HistoricProcessInstanceManager.Update(data);
         }
         else//不在当前上下文,已经被设置过
         {
             PropertyUpdateHelper.UpDate(Context.CommandContext.HistoricProcessInstanceManager.Get(data.Id), data);
             //PropertyUpdateHelper.UpDate<HistoricProcessInstanceEventEntity>(Context.CommandContext.GetDbEntityManager<HistoricProcessInstanceEventEntity>().Get(data.Id), data);
         }
     }
     else if
     (historyEvent is HistoricActivityInstanceEventEntity)
     {
         HistoricActivityInstanceEventEntity data = historyEvent as HistoricActivityInstanceEventEntity;
         log.LogDebug("Entity当前状态", Context.CommandContext.GetEntityStateInEF <HistoricActivityInstanceEventEntity>(data).ToString() + " " + data.Id + " " + data.ActivityInstanceState);
         if (Context.CommandContext.GetEntityStateInEF <HistoricActivityInstanceEventEntity>(data) != EntityState.Detached)
         {
             //Context.CommandContext.GetDbEntityManager<HistoricActivityInstanceEventEntity>().Update(data);
             Context.CommandContext.HistoricActivityInstanceManager.Update(data);
         }
         else
         {
             //log.LogDebug("EF更新缓存", typeof(HistoricActivityInstanceEventEntity) + " " + data.Id+" state:"+data.ActivityInstanceState);
             // Todo: Context.CommandContext.GetDbEntityManager<TEntity>()方法有问题
             //var cache = Context.CommandContext.HistoricActivityInstanceManager.Get(data.Id);
             PropertyUpdateHelper.UpDate(Context.CommandContext.HistoricActivityInstanceManager.Get(data.Id), data);
             //log.LogDebug("测试001", Context.CommandContext.GetDbEntityManager<HistoricActivityInstanceEventEntity>().Get(data.Id).ActivityInstanceState.ToString());
         }
     }
     else if (historyEvent is Event.HistoricTaskInstanceEventEntity)
     {
         Event.HistoricTaskInstanceEventEntity data = historyEvent as Event.HistoricTaskInstanceEventEntity;
         if (Context.CommandContext.GetEntityStateInEF <Event.HistoricTaskInstanceEventEntity>(data) != EntityState.Detached)
         {
             //Context.CommandContext.GetDbEntityManager<Event.HistoricTaskInstanceEventEntity>().Update(data);
             Context.CommandContext.HistoricTaskInstanceManager.Update(data);
         }
         else
         {
             //PropertyUpdateHelper.UpDate<Event.HistoricTaskInstanceEventEntity>(Context.CommandContext.GetDbEntityManager<Event.HistoricTaskInstanceEventEntity>().Get(data.Id), data);
             PropertyUpdateHelper.UpDate(Context.CommandContext.HistoricTaskInstanceManager.Get(data.Id), data);
         }
     }
     else if (historyEvent is HistoricIncidentEntity)
     {
         HistoricIncidentEntity data = (HistoricIncidentEntity)historyEvent;
         if (Context.CommandContext.GetEntityStateInEF <HistoricIncidentEntity>(data) != EntityState.Detached)
         {
             //Context.CommandContext.GetDbEntityManager<HistoricIncidentEntity>().Update(data);
             Context.CommandContext.HistoricIncidentManager.Update(data);
         }
         else
         {
             //PropertyUpdateHelper.UpDate<HistoricIncidentEntity>(Context.CommandContext.GetDbEntityManager<HistoricIncidentEntity>().Get(data.Id), data);
             PropertyUpdateHelper.UpDate(Context.CommandContext.HistoricIncidentManager.Get(data.Id), data);
         }
     }
     else
     {
         throw new NotImplementedException(string.Format("historyEvent类型:{0} 更新未实现", historyEvent.GetType().ToString()));
     }
 }