private void ActivityResponseReceived(ActivityDO activityDo, ActivityResponse responseType) { var template = _activityTemplate.GetByKey(activityDo.ActivityTemplateId); var factDO = new FactDO() { PrimaryCategory = "Container", SecondaryCategory = "Activity", Activity = "Process Execution", Status = responseType.ToString(), ObjectId = activityDo.Id.ToString(), Fr8UserId = _security.GetCurrentUser(), CreatedByID = _security.GetCurrentUser(), Data = string.Join(Environment.NewLine, "Activity Name: " + template?.Name) }; SaveAndLogFact(factDO); }
private ActivityTemplateSummaryDTO GetActivityTemplate(ActivityDO ad) { if (ad.ActivityTemplate != null) { return(Mapper.Map <ActivityTemplateSummaryDTO>(ad.ActivityTemplate)); } if (ad.ActivityTemplateId == Guid.Empty) { return(null); } return(Mapper.Map <ActivityTemplateSummaryDTO>(_activityTemplate.GetByKey(ad.ActivityTemplateId))); }
/// <summary> /// Prepare AuthToken for ActionDTO request message. /// </summary> public void PrepareAuthToken(IUnitOfWork uow, ActivityDTO activityDTO) { // Fetch Action. var activity = uow.PlanRepository.GetById <ActivityDO>(activityDTO.Id); if (activity == null) { throw new ApplicationException("Could not find Action."); } if (activity.ActivityTemplateId == null) { throw new ApplicationException("Activity without a template should not exist"); } var activityTemplate = _activityTemplate.GetByKey(activity.ActivityTemplateId); // Try to find AuthToken if terminal requires authentication. if (activityTemplate.NeedsAuthentication && activityTemplate.Terminal.AuthenticationType != AuthenticationType.None) { AuthorizationTokenDO authToken; TryAssignAuthToken(uow, activity.Fr8AccountId, activityTemplate.TerminalId, activity, out authToken); // If AuthToken is not empty, fill AuthToken property for ActionDTO. if (authToken != null && !string.IsNullOrEmpty(authToken.Token)) { activityDTO.AuthToken = new AuthorizationTokenDTO { Id = authToken.Id.ToString(), ExternalAccountId = authToken.ExternalAccountId, ExternalAccountName = string.IsNullOrEmpty(authToken.ExternalAccountName) ? authToken.ExternalAccountId : authToken.ExternalAccountName, ExternalDomainId = authToken.ExternalDomainId, ExternalDomainName = string.IsNullOrEmpty(authToken.ExternalDomainName) ? authToken.ExternalDomainId : authToken.ExternalDomainName, UserId = authToken.UserID, Token = authToken.Token, ExpiresAt = authToken.ExpiresAt, AdditionalAttributes = authToken.AdditionalAttributes }; } else { throw new InvalidTokenRuntimeException(activityDTO); } if (String.IsNullOrEmpty(authToken.Token)) { throw new InvalidTokenRuntimeException(activityDTO); } } if (activityDTO.AuthToken == null) { if (activity.Fr8AccountId != null) { activityDTO.AuthToken = new AuthorizationTokenDTO { UserId = activity.Fr8AccountId, }; } } }
public async Task <PayloadDTO> Run(IUnitOfWork uow, ActivityDO curActivityDO, ActivityExecutionMode curActionExecutionMode, ContainerDO curContainerDO) { if (curActivityDO == null) { throw new ArgumentNullException(nameof(curActivityDO)); } //FR-2642 Logic to skip execution of activities with "SkipAtRunTime" Tag var template = _activityTemplate.GetByKey(curActivityDO.ActivityTemplateId); if (template.Tags != null && template.Tags.Contains("SkipAtRunTime", StringComparison.InvariantCultureIgnoreCase)) { return(null); } EventManager.ActionStarted(curActivityDO, curContainerDO); // Explicitly extract authorization token to make AuthTokenDTO pass to activities. curActivityDO.AuthorizationToken = uow.AuthorizationTokenRepository.FindTokenById(curActivityDO.AuthorizationTokenId); try { IEnumerable <KeyValuePair <string, string> > parameters = null; if (curActionExecutionMode != ActivityExecutionMode.InitialRun) { parameters = new List <KeyValuePair <string, string> >() { new KeyValuePair <string, string>("scope", "childActivities") }; } if (curActionExecutionMode != ActivityExecutionMode.ReturnFromChildren) { EventManager.ActivityRunRequested(curActivityDO, curContainerDO); } var activtiyClone = (ActivityDO)curActivityDO.Clone(); using (var storage = _crateManager.UpdateStorage(() => activtiyClone.CrateStorage)) { var configurationControls = storage.CrateContentsOfType <StandardConfigurationControlsCM>().FirstOrDefault(); if (configurationControls != null) { var payloadStorage = _crateManager.GetStorage(curContainerDO.CrateStorage); _upstreamDataExtractionService.ExtactAndAssignValues(configurationControls, payloadStorage); } } var payloadDTO = await CallTerminalActivityAsync <PayloadDTO>(uow, "run", parameters, activtiyClone, curContainerDO.Id); EventManager.ActivityResponseReceived(curActivityDO, ActivityResponse.RequestSuspend); return(payloadDTO); } catch (Exception e) { ReportActivityInvocationError(curActivityDO, e.Message, curContainerDO.Id.ToString(), curActivityDO.Id.ToString(), EventManager.TerminalRunFailed); throw; } }