public virtual HistoryEvent CreateActivityInstanceMigrateEvt(MigratingActivityInstance actInstance) { // create event instance HistoricActivityInstanceEventEntity evt = LoadActivityInstanceEventEntity(actInstance.ResolveRepresentativeExecution()); // initialize event InitActivityInstanceEvent(evt, actInstance, HistoryEventTypes.ActivityInstanceMigrate); return(evt); }
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)); } }
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)); } }
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); }
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); }
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); }
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); }
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; //} }
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); }
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())); } }