public static void RegisterActivity(IAmazonSimpleWorkflow swfClient, string domainName, string name, string tasklistName) { // Register activities if it is not already registered var listActivityRequest = new ListActivityTypesRequest() { Domain = domainName, Name = name, RegistrationStatus = RegistrationStatus.REGISTERED }; if (swfClient.ListActivityTypes(listActivityRequest).ActivityTypeInfos.TypeInfos.FirstOrDefault( x => x.ActivityType.Version == "2.0") == null) { RegisterActivityTypeRequest request = new RegisterActivityTypeRequest() { Name = name, Domain = domainName, Description = "Hello World Activities", Version = "2.0", DefaultTaskList = new TaskList() { Name = tasklistName }, //Worker poll based on this DefaultTaskScheduleToCloseTimeout = "300", DefaultTaskScheduleToStartTimeout = "150", DefaultTaskStartToCloseTimeout = "450", DefaultTaskHeartbeatTimeout = "NONE", }; swfClient.RegisterActivityType(request); Console.WriteLine("Setup: Created Activity Name - " + request.Name); } }
/// <summary> /// Registers activity type for a specific version. /// </summary> /// <param name="domainName">Domain where the activity type should be registered.</param> /// <param name="client">Interface for accessing Amazon Simple Workflow Service.</param> void IRegistrable.Register(string domainName, IAmazonSimpleWorkflow client) { var listActivityRequest = new ListActivityTypesRequest { Domain = domainName, Name = Options.Name, RegistrationStatus = RegistrationStatus.REGISTERED }; if ( client.ListActivityTypesAsync(listActivityRequest).Result .ActivityTypeInfos.TypeInfos.FirstOrDefault(x => x.ActivityType.Version == Options.Version) == null) { Logger.Trace("New Activity Type."); RegisterActivityTypeRequest request = new RegisterActivityTypeRequest { Name = Options.Name, Domain = domainName, Description = Options.Description, Version = Options.Version, DefaultTaskList = TaskList, //Worker poll based on this DefaultTaskScheduleToCloseTimeout = Options.ScheduleToCloseTimeout.ToStringOrNone(), DefaultTaskScheduleToStartTimeout = Options.ScheduleToStartTimeout.ToStringOrNone(), DefaultTaskStartToCloseTimeout = Options.StartToCloseTimeout.ToStringOrNone(), DefaultTaskHeartbeatTimeout = Options.HeartbeatTimeout.ToStringOrNone() }; client.RegisterActivityTypeAsync(request).Wait(); } Logger.Trace("Activity. Name: {0}, Version: {1}", Options.Name, Options.Version); }
public void RegisterActivity(string name, string taskListName) { var listActivityRequest = new ListActivityTypesRequest() { Domain = domainName, Name = name, RegistrationStatus = RegistrationStatus.REGISTERED }; var results = swfClient.ListActivityTypesAsync(listActivityRequest).Result; if (results.ActivityTypeInfos.TypeInfos.FirstOrDefault(x => x.ActivityType.Name == name) == null) { RegisterActivityTypeRequest request = new RegisterActivityTypeRequest() { Name = name, Domain = domainName, Description = "Custom Description Here", Version = "1.0", DefaultTaskList = new TaskList() { Name = taskListName }, //Worker poll based on this DefaultTaskScheduleToStartTimeout = "150", DefaultTaskStartToCloseTimeout = "450", DefaultTaskHeartbeatTimeout = "NONE", DefaultTaskScheduleToCloseTimeout = "350" }; swfClient.RegisterActivityTypeAsync(request); Console.WriteLine("Created Activity: " + request.Name); } }
public static void SetupWorkflowTypes(TestContext testContext) { var registerDomainRequest = new RegisterDomainRequest() { Name = DOMAIN, Description = "A Description", WorkflowExecutionRetentionPeriodInDays = "5" }; Client.RegisterDomain(registerDomainRequest); var registerWorkflowRequest = new RegisterWorkflowTypeRequest() { Name = WORKFLOW_TYPE.Name, Domain = DOMAIN, Description = "Another Description", Version = WORKFLOW_TYPE.Version, DefaultTaskList = TASKLIST, DefaultExecutionStartToCloseTimeout = FIVE_HOUR_DURATION, DefaultTaskStartToCloseTimeout = FOUR_HOUR_DURATION }; Client.RegisterWorkflowType(registerWorkflowRequest); var registerActivityRequest = new RegisterActivityTypeRequest() { Name = ACTIVITY_TYPE.Name, Domain = DOMAIN, Description = "My Description Activity", Version = ACTIVITY_TYPE.Version, DefaultTaskList = TASKLIST, DefaultTaskHeartbeatTimeout = ONE_HOUR_DURATION, DefaultTaskScheduleToCloseTimeout = TWO_HOUR_DURATION, DefaultTaskScheduleToStartTimeout = THREE_HOUR_DURATION, DefaultTaskStartToCloseTimeout = FOUR_HOUR_DURATION }; var registerActivityResponse = Client.RegisterActivityType(registerActivityRequest); }
static void RegisterActivity(string name, string tasklistName) { // Register activities if it is not already registered var listActivityRequest = new ListActivityTypesRequest() { Domain = domainName, Name = name, RegistrationStatus = RegistrationStatus.REGISTERED }; if (SwfClient.ListActivityTypes(listActivityRequest).ActivityTypeInfos.TypeInfos.FirstOrDefault( x => x.ActivityType.Version == "2.0") == null) { var request = new RegisterActivityTypeRequest() { Name = name, Domain = domainName, Description = "Swf Demo Activities", Version = "2.0", DefaultTaskList = new TaskList() { Name = tasklistName }, //Worker poll based on this DefaultTaskScheduleToCloseTimeout = "300", DefaultTaskScheduleToStartTimeout = "150", DefaultTaskStartToCloseTimeout = "450", DefaultTaskHeartbeatTimeout = "NONE", }; try { } catch (TypeAlreadyExistsException tex) { SwfClient.RegisterActivityType(request); } Console.WriteLine($"INITIATOR: Created Activity Name - {request.Name}"); } }
private async Task CreateActivity() { //Get the list of activities for the specified domain ListActivityTypesRequest listActivityRequest = new ListActivityTypesRequest() { Domain = this.SwfConfiguration.DomainName, Name = this.SwfConfiguration.ActivityName, RegistrationStatus = RegistrationStatus.REGISTERED }; ListActivityTypesResponse listActivityTypesResponse = await this.SwfClient.ListActivityTypesAsync(listActivityRequest); //Check if our activity exists if (listActivityTypesResponse.ActivityTypeInfos.TypeInfos.Count > 0) { return; } //If doesn't exist -> create RegisterActivityTypeRequest registerActivityTypeRequest = new RegisterActivityTypeRequest() { Domain = this.SwfConfiguration.DomainName, Name = this.SwfConfiguration.ActivityName, Description = this.SwfConfiguration.ActivityDescription, Version = this.SwfConfiguration.ActivityVersion, DefaultTaskList = new TaskList() { Name = this.SwfConfiguration.ActivityTasksList }, DefaultTaskScheduleToCloseTimeout = this.SwfConfiguration.ScheduleToCloseTimeout, DefaultTaskScheduleToStartTimeout = this.SwfConfiguration.ScheduleToStartTimeout, DefaultTaskStartToCloseTimeout = this.SwfConfiguration.StartToCloseTimeout, DefaultTaskHeartbeatTimeout = this.SwfConfiguration.HeartbeatTimeout, }; await this.SwfClient.RegisterActivityTypeAsync(registerActivityTypeRequest); }
public void CRUDTest() { var domainName = "sdk-dotnet-crud-" + DateTime.Now.Ticks; var regRequest = new RegisterDomainRequest() { Name = domainName, Description = "A Description", WorkflowExecutionRetentionPeriodInDays = "3" }; var regResponse = Client.RegisterDomain(regRequest); try { Sleep(); // Sleep for the eventual consistency Assert.IsNotNull(regResponse.ResponseMetadata.RequestId); var descRequest = new DescribeDomainRequest() { Name = domainName }; var descResponse = Client.DescribeDomain(descRequest); Assert.AreEqual(domainName, descResponse.DomainDetail.DomainInfo.Name); Assert.AreEqual("A Description", descResponse.DomainDetail.DomainInfo.Description); Assert.AreEqual("3", descResponse.DomainDetail.Configuration.WorkflowExecutionRetentionPeriodInDays); Assert.IsNotNull(descResponse.DomainDetail.DomainInfo.Status); DomainInfo info = null; for (int i = 0; i < MaxRetries; i++) { Sleep(); // Sleep for the eventual consistency var listDomainResponse = Client.ListDomains( new ListDomainsRequest() { RegistrationStatus = descResponse.DomainDetail.DomainInfo.Status }); Assert.IsTrue(listDomainResponse.DomainInfos.Infos.Count > 0); info = listDomainResponse.DomainInfos.Infos.FirstOrDefault(x => string.Equals(x.Name, domainName)); if (info != null) { break; } } Assert.IsNotNull(info); Assert.IsNotNull(info.Status); var activityDescription = "My Description Activity" + DateTime.Now.Ticks; var regActivityRequest = new RegisterActivityTypeRequest() { Name = "My Activity", Domain = domainName, Description = activityDescription, Version = "1.0", DefaultTaskList = new TaskList() { Name = "ImportantTasks" }, DefaultTaskHeartbeatTimeout = ONE_HOUR_DURATION, DefaultTaskScheduleToCloseTimeout = TWO_HOUR_DURATION, DefaultTaskScheduleToStartTimeout = THREE_HOUR_DURATION, DefaultTaskStartToCloseTimeout = FOUR_HOUR_DURATION }; var regActivityResponse = Client.RegisterActivityType(regActivityRequest); Assert.IsNotNull(regActivityResponse.ResponseMetadata.RequestId); try { Sleep(); // Sleep for the eventual consistency var descActivityTypeRequest = new DescribeActivityTypeRequest() { Domain = domainName, ActivityType = new ActivityType() { Name = "My Activity", Version = "1.0" } }; var descActivityTypeResponse = Client.DescribeActivityType(descActivityTypeRequest); Assert.AreEqual(ONE_HOUR_DURATION, descActivityTypeResponse.ActivityTypeDetail.Configuration.DefaultTaskHeartbeatTimeout); Assert.AreEqual(TWO_HOUR_DURATION, descActivityTypeResponse.ActivityTypeDetail.Configuration.DefaultTaskScheduleToCloseTimeout); Assert.AreEqual(THREE_HOUR_DURATION, descActivityTypeResponse.ActivityTypeDetail.Configuration.DefaultTaskScheduleToStartTimeout); Assert.AreEqual(FOUR_HOUR_DURATION, descActivityTypeResponse.ActivityTypeDetail.Configuration.DefaultTaskStartToCloseTimeout); ListActivityTypesResponse listActivityResponse = null; for (int i = 0; i < MaxRetries; i++) { Sleep(); // Sleep for the eventual consistency listActivityResponse = Client.ListActivityTypes( new ListActivityTypesRequest() { Domain = domainName, RegistrationStatus = descActivityTypeResponse.ActivityTypeDetail.TypeInfo.Status }); if (listActivityResponse.ActivityTypeInfos.TypeInfos.Count > 0) { break; } } Assert.IsNotNull(listActivityResponse); Assert.IsTrue(listActivityResponse.ActivityTypeInfos.TypeInfos.Count > 0); var acInfo = listActivityResponse.ActivityTypeInfos.TypeInfos.FirstOrDefault(x => x.Description == activityDescription); Assert.IsNotNull(acInfo); } finally { var depActivityRequest = new DeprecateActivityTypeRequest() { Domain = domainName, ActivityType = new ActivityType() { Name = "My Activity", Version = "1.0" } }; var depActivityTypeResponse = Client.DeprecateActivityType(depActivityRequest); } var workflowDescription = "My Workflow Description" + DateTime.Now.Ticks; var regWorkflowRequest = new RegisterWorkflowTypeRequest() { Name = "My Workflow", Domain = domainName, Description = workflowDescription, Version = "1.0", DefaultTaskList = new TaskList() { Name = "ImportantTasks" }, DefaultExecutionStartToCloseTimeout = THREE_HOUR_DURATION, DefaultTaskStartToCloseTimeout = FOUR_HOUR_DURATION }; var regWorkflowResponse = Client.RegisterWorkflowType(regWorkflowRequest); try { Sleep(); // Sleep for the eventual consistency var descWorkFlowRequest = new DescribeWorkflowTypeRequest() { Domain = domainName, WorkflowType = new WorkflowType() { Name = "My Workflow", Version = "1.0" } }; var descWorkflowResponse = Client.DescribeWorkflowType(descWorkFlowRequest); Assert.AreEqual("My Workflow", descWorkflowResponse.WorkflowTypeDetail.TypeInfo.WorkflowType.Name); Assert.AreEqual("1.0", descWorkflowResponse.WorkflowTypeDetail.TypeInfo.WorkflowType.Version); Assert.AreEqual(THREE_HOUR_DURATION, descWorkflowResponse.WorkflowTypeDetail.Configuration.DefaultExecutionStartToCloseTimeout); Assert.AreEqual(FOUR_HOUR_DURATION, descWorkflowResponse.WorkflowTypeDetail.Configuration.DefaultTaskStartToCloseTimeout); Assert.AreEqual("ImportantTasks", descWorkflowResponse.WorkflowTypeDetail.Configuration.DefaultTaskList.Name); ListWorkflowTypesResponse listWorkflowResponse = null; for (int retries = 0; retries < 5; retries++) { Thread.Sleep(1000 * retries); listWorkflowResponse = Client.ListWorkflowTypes( new ListWorkflowTypesRequest() { Domain = domainName, RegistrationStatus = descWorkflowResponse.WorkflowTypeDetail.TypeInfo.Status }); if (listWorkflowResponse.WorkflowTypeInfos.TypeInfos.Count > 0) { break; } } Assert.IsTrue(listWorkflowResponse.WorkflowTypeInfos.TypeInfos.Count > 0); var wfInfo = listWorkflowResponse.WorkflowTypeInfos.TypeInfos.FirstOrDefault(x => x.Description == workflowDescription); Assert.IsNotNull(wfInfo); } finally { var depWorkflowRequest = new DeprecateWorkflowTypeRequest() { Domain = domainName, WorkflowType = new WorkflowType() { Name = "My Workflow", Version = "1.0" } }; var depWorkflowTypeResponse = Client.DeprecateWorkflowType(depWorkflowRequest); Assert.IsNotNull(depWorkflowTypeResponse.ResponseMetadata.RequestId); } } finally { var depRequest = new DeprecateDomainRequest() { Name = domainName }; var depResponse = Client.DeprecateDomain(depRequest); Assert.IsNotNull(depResponse.ResponseMetadata.RequestId); } }