public static void RunWorkflow() { string workflowName = "HelloWorld Workflow"; // Setup DomainRegistration.RegisterDomain(swfClient, domainName); RegisterActivites(domainName); WorkflowRegistration.RegisterWorkflow(swfClient, workflowName, domainName); InitiateWorkers(); InitiateDeciders(); //Start the workflow Task.Run(() => StartWorkflow(workflowName)); Console.Read(); DeprecateDomainRequest request = new DeprecateDomainRequest() { Name = domainName }; var response = swfClient.DeprecateDomain(request); Console.WriteLine(response.ResponseMetadata.ToString()); Console.Read(); }
public static void Cleanup() { var deprecateWorkflowRequest = new DeprecateWorkflowTypeRequest() { Domain = DOMAIN, WorkflowType = WORKFLOW_TYPE }; var deprecateWorkflowTypeResponse = Client.DeprecateWorkflowType(deprecateWorkflowRequest); Assert.IsNotNull(deprecateWorkflowTypeResponse.ResponseMetadata.RequestId); var deprecateDomainRequest = new DeprecateDomainRequest() { Name = DOMAIN }; var deprecateDomainResponse = Client.DeprecateDomain(deprecateDomainRequest); Assert.IsNotNull(deprecateDomainResponse.ResponseMetadata.RequestId); BaseClean(); }
public void StartAndTerminateWorkflowExecution() { string domainName = "sdk-dotnet-start-" + DateTime.Now.Ticks; var regRequest = new RegisterDomainRequest() { Name = domainName, Description = "A Description", WorkflowExecutionRetentionPeriodInDays = "4" }; Client.RegisterDomain(regRequest); try { var regWorkflowRequest = new RegisterWorkflowTypeRequest() { Name = "Start and Terminate Workflow", Domain = domainName, Description = "Another Description", Version = "1.0", DefaultExecutionStartToCloseTimeout = FIVE_HOUR_DURATION, DefaultTaskStartToCloseTimeout = FOUR_HOUR_DURATION }; var regWorkflowResponse = Client.RegisterWorkflowType(regWorkflowRequest); try { Sleep(); // Sleep for the eventual consistency var workflowId = DateTime.Now.Ticks.ToString(); var startRequest = new StartWorkflowExecutionRequest() { Domain = domainName, WorkflowId = workflowId, ChildPolicy = "TERMINATE", TaskList = new TaskList() { Name = "ImportantTasks" }, WorkflowType = new WorkflowType() { Name = regWorkflowRequest.Name, Version = regWorkflowRequest.Version } }; var startResponse = Client.StartWorkflowExecution(startRequest); Assert.IsNotNull(startResponse.Run.RunId); Thread.Sleep(10 * 1000); var countWorkRequest = new CountOpenWorkflowExecutionsRequest() { Domain = domainName, StartTimeFilter = new ExecutionTimeFilter() { OldestDate = DateTime.Now.AddDays(-4), LatestDate = DateTime.Now.AddDays(1) }, ExecutionFilter = new WorkflowExecutionFilter() { WorkflowId = workflowId } }; var countWorkResponse = Client.CountOpenWorkflowExecutions(countWorkRequest); Assert.AreEqual(1, countWorkResponse.WorkflowExecutionCount.Count); var listWorkRequest = new ListOpenWorkflowExecutionsRequest() { Domain = domainName, StartTimeFilter = new ExecutionTimeFilter() { OldestDate = DateTime.Now.AddDays(-4), LatestDate = DateTime.Now.AddDays(1) }, ExecutionFilter = new WorkflowExecutionFilter() { WorkflowId = workflowId } }; var listWorkResponse = Client.ListOpenWorkflowExecutions(listWorkRequest); Assert.AreEqual(1, listWorkResponse.WorkflowExecutionInfos.ExecutionInfos.Count); var info = listWorkResponse.WorkflowExecutionInfos.ExecutionInfos[0]; Assert.AreEqual(regWorkflowRequest.Name, info.WorkflowType.Name); Assert.AreEqual(regWorkflowRequest.Version, info.WorkflowType.Version); Assert.AreEqual(startResponse.Run.RunId, info.Execution.RunId); Assert.AreEqual(startRequest.WorkflowId, info.Execution.WorkflowId); var descRequest = new DescribeWorkflowExecutionRequest() { Domain = domainName, Execution = new WorkflowExecution() { RunId = startResponse.Run.RunId, WorkflowId = startRequest.WorkflowId } }; var descResponse = Client.DescribeWorkflowExecution(descRequest); Assert.IsNotNull(descResponse.WorkflowExecutionDetail); Assert.AreEqual(startRequest.TaskList.Name, descResponse.WorkflowExecutionDetail.ExecutionConfiguration.TaskList.Name); var termRequest = new TerminateWorkflowExecutionRequest() { Domain = domainName, ChildPolicy = "TERMINATE", WorkflowId = workflowId }; var termResponse = Client.TerminateWorkflowExecution(termRequest); Assert.IsNotNull(termResponse.ResponseMetadata.RequestId); } finally { Client.DeprecateWorkflowType(new DeprecateWorkflowTypeRequest() { Domain = domainName, WorkflowType = new WorkflowType() { Name = "Start and Terminate Workflow", Version = "1.0" } }); } } finally { var depRequest = new DeprecateDomainRequest() { Name = domainName }; Client.DeprecateDomain(depRequest); } }
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); } }