internal static async Task NotifyAppAboutEvents(IAltinnApp altinnApp, Instance instance, List <InstanceEvent> events) { foreach (InstanceEvent processEvent in events) { if (Enum.TryParse <InstanceEventType>(processEvent.EventType, true, out InstanceEventType eventType)) { switch (eventType) { case InstanceEventType.process_StartEvent: break;; case InstanceEventType.process_StartTask: await altinnApp.OnStartProcessTask(processEvent.ProcessInfo?.CurrentTask?.ElementId, instance); break; case InstanceEventType.process_EndTask: await altinnApp.OnEndProcessTask(processEvent.ProcessInfo?.CurrentTask?.ElementId, instance); break; case InstanceEventType.process_EndEvent: await altinnApp.OnEndProcess(processEvent.ProcessInfo?.EndEvent, instance); break; } } } }
internal static async Task NotifyAppAboutEvents(IAltinnApp altinnApp, Instance instance, List <InstanceEvent> events) { foreach (InstanceEvent processEvent in events) { switch (processEvent.EventType) { case "process:StartEvent": await altinnApp.OnStartProcess(processEvent.ProcessInfo?.StartEvent, instance); break; case "process:StartTask": await altinnApp.OnStartProcessTask(processEvent.ProcessInfo?.CurrentTask?.ElementId, instance); break; case "process:EndTask": await altinnApp.OnEndProcessTask(processEvent.ProcessInfo?.CurrentTask?.ElementId, instance); break; case "process:EndEvent": await altinnApp.OnEndProcess(processEvent.ProcessInfo?.EndEvent, instance); break; } } }
/// <summary> /// Calls Altinn app to get start event and goto next task /// </summary> /// <param name="instance">instance can be updated by app</param> /// <returns></returns> private async Task <Instance> StartProcessAndGotoNextTask(Instance instance) { string startEvent = await _altinnApp.OnInstantiateGetStartEvent(instance); if (startEvent != null) { UserContext userContext = _userHelper.GetUserContext(HttpContext).Result; ProcessResult result = await _processService.ProcessStartAndGotoNextTask(instance, startEvent, userContext); if (result != null) { instance = result.Instance; foreach (InstanceEvent instanceEvent in result.Events) { if (instanceEvent.EventType.Equals("process:StartTask")) { // make sure app can run event on start task. await _altinnApp.OnStartProcessTask(instanceEvent.ProcessInfo.CurrentTask.ElementId, instance); } } // make sure we save the instance after app has handled events return(await _instanceService.UpdateInstance(instance)); } } return(null); }
private void NotifyAppAboutEvents(Instance instance, List <InstanceEvent> events) { foreach (InstanceEvent processEvent in events) { switch (processEvent.EventType) { case "process:StartEvent": _altinnApp.OnStartProcess(processEvent.ProcessInfo?.StartEvent, instance); break; case "process:StartTask": _altinnApp.OnStartProcessTask(processEvent.ProcessInfo?.CurrentTask?.ElementId, instance); break; case "process:EndTask": _altinnApp.OnEndProcessTask(processEvent.ProcessInfo?.CurrentTask?.ElementId, instance); break; case "process:EndEvent": _altinnApp.OnEndProcess(processEvent.ProcessInfo?.EndEvent, instance); break; } } }