diff --git a/docs/examples/go/background-checks/application-design-and-implementation.md b/docs/examples/go/background-checks/application-design-and-implementation.md index 568d788c..bd0f1363 100644 --- a/docs/examples/go/background-checks/application-design-and-implementation.md +++ b/docs/examples/go/background-checks/application-design-and-implementation.md @@ -93,16 +93,16 @@ However, in real life,the application could use as many Worker Processes (each w ## How do you ensure PII is encrypted in the Temporal Platform? -To ensure data is encrypted while in the Temporal Platform, you use a customized [Data Converter](https://docs.temporal.io/security/#custom-data-converter). +To ensure data is encrypted while in the Temporal Platform, you use a customized [Data Converter](https://docs.temporal.io/default-custom-data-converters#custom-data-converter). ## How do you know what the status of a Background Check is The status refers to the whether a Background Check is Open or Closed. -You can use the Temporal Platform's [Visibility APIs](https://docs.temporal.io/visibility/#advanced-visibility) to see the status of any oftheWorkflow Executions. +You can use the Temporal Platform's [Visibility APIs](https://docs.temporal.io/visibility#advanced-visibility) to see the status of any oftheWorkflow Executions. In this application you wrapped the `bgc-company list` command around these Visibility APIs. You also make sure to add custom Search Attributes totheBackground Check Workflows. -When you run `bgc-company list` you are using the Visibility APIs and passing a [List Filter](https://docs.temporal.io/visibility/#list-filter) that gives us back only the Background Check Workflow Executions. +When you run `bgc-company list` you are using the Visibility APIs and passing a [List Filter](https://docs.temporal.io/list-filter#list-filter) that gives us back only the Background Check Workflow Executions. ## How do you know what the state of a Background Check is? diff --git a/docs/examples/go/background-checks/index.md b/docs/examples/go/background-checks/index.md index 3006b999..c31b6d15 100644 --- a/docs/examples/go/background-checks/index.md +++ b/docs/examples/go/background-checks/index.md @@ -85,40 +85,40 @@ And the Temporal Platform has built-in Visibility APIs to view the status and ge This project introduces the following concepts: -- [Activity Definition](https://docs.temporal.io/activities/#activity-definition) -- [Activity Execution](https://docs.temporal.io/activities/#activity-execution) -- [Advanced Visibility](https://docs.temporal.io/visibility/#advanced-visibility) -- [Child Workflow Execution](https://docs.temporal.io/workflows/#child-workflow) -- [Custom Data Converter](https://docs.temporal.io/security/#custom-data-converter) -- [List Filters](https://docs.temporal.io/visibility/#list-filter) -- [Search Attributes](https://docs.temporal.io/visibility/#search-attribute) -- [Side Effect](https://docs.temporal.io/workflows/#side-effect) -- [Task Queue](https://docs.temporal.io/tasks/#task-queue) -- [Temporal Client](https://docs.temporal.io/temporal#temporal-client) +- [Activity Definition](https://docs.temporal.io/activity-definition#activity-definition) +- [Activity Execution](https://docs.temporal.io/activity-execution#activity-execution) +- [Advanced Visibility](https://docs.temporal.io/visibility#advanced-visibility) +- [Child Workflow Execution](https://docs.temporal.io/child-workflows) +- [Custom Data Converter](https://docs.temporal.io/default-custom-data-converters#custom-data-converter) +- [List Filters](https://docs.temporal.io/list-filter#list-filter) +- [Search Attributes](https://docs.temporal.io/search-attribute#search-attribute) +- [Side Effect](https://docs.temporal.io/workflow-execution/event#side-effect) +- [Task Queue](https://docs.temporal.io/task-queue#task-queue) +- [Temporal Client](https://docs.temporal.io/temporal-client) - [Temporal Web UI](https://docs.temporal.io/web-ui) -- [Worker](https://docs.temporal.io/workers/) -- [Workflow Definition](https://docs.temporal.io/workflows/#workflow-definition) -- [Workflow Execution](https://docs.temporal.io/workflows/#workflow-execution) -- [Workflow Id](https://docs.temporal.io/workflows/#workflow-id) -- [Workflow Id Reuse Policy](https://docs.temporal.io/workflows/#workflow-id-reuse-policy) -- [Workflow Type](https://docs.temporal.io/workflows/#workflow-type) +- [Worker](https://docs.temporal.io/workers#worker) +- [Workflow Definition](https://docs.temporal.io/workflow-definition#workflow-definition) +- [Workflow Execution](https://docs.temporal.io/workflow-execution#workflow-execution) +- [Workflow Id](https://docs.temporal.io/workflow-execution/workflowid-runid#workflow-id) +- [Workflow Id Reuse Policy](https://docs.temporal.io/workflow-execution/workflowid-runid#workflow-id-reuse-policy) +- [Workflow Type](https://docs.temporal.io/workflow-definition#workflow-type) ## What are the technical how-tos introduced in this application? The following development "how-tos" provide a foundation for the development patterns expressed in this project: -- [How to develop a Workflow Definition in Go](https://docs.temporal.io/dev-guide/go/foundations/#develop-workflows) -- [How to spawn a Workflow Execution in Go](https://docs.temporal.io/dev-guide/go/foundations/#start-workflow-execution) -- [How to set StartWorkflowOptions in Go](https://docs.temporal.io/dev-guide/go/foundations/#set-task-queue) -- [How to get the result of a Workflow Execution in Go](https://docs.temporal.io/dev-guide/go/foundations/#get-workflow-results) -- [How to send a Cancellation Request to a Workflow Execution in Go](https://docs.temporal.io/dev-guide/go/testing/#cancel-an-activity) -- [How to use Signals in Go](https://docs.temporal.io/dev-guide/go/features/#signals) -- [How to send a Query to a Workflow Execution in Go](https://docs.temporal.io/dev-guide/go/features/#send-query) -- [How to handle a Query in a Workflow in Go](https://docs.temporal.io/dev-guide/go/features/#handle-query) -- [How to spawn a Child Workflow Execution in Go](https://docs.temporal.io/dev-guide/go/features/#child-workflows) -- [How to spawn an Activity Execution in Go](https://docs.temporal.io/dev-guide/go/foundations/#activity-execution) -- [How to develop an Activity Definition in Go](https://docs.temporal.io/dev-guide/go/foundations/#activity-definition) -- [How to set ActivityOptions in Go](https://docs.temporal.io/dev-guide/go/foundations/#activity-parameters) -- [How to develop a Worker Program in Go](https://docs.temporal.io/dev-guide/go/foundations/#run-worker-processes) +- [How to develop a Workflow Definition in Go](https://docs.temporal.io/develop/go/workflows/basics#develop-workflows) +- [How to spawn a Workflow Execution in Go](https://docs.temporal.io/develop/go/client/temporal-client#start-workflow-execution) +- [How to set StartWorkflowOptions in Go](https://docs.temporal.io/develop/go/client/temporal-client#set-task-queue) +- [How to get the result of a Workflow Execution in Go](https://docs.temporal.io/develop/go/client/temporal-client#get-workflow-results) +- [How to send a Cancellation Request to a Workflow Execution in Go](https://docs.temporal.io/develop/go/workflows/cancellation#request-cancellation) +- [How to use Signals in Go](https://docs.temporal.io/develop/go/message-passing#signals) +- [How to send a Query to a Workflow Execution in Go](https://docs.temporal.io/develop/go/message-passing#send-query) +- [How to handle a Query in a Workflow in Go](https://docs.temporal.io/develop/go/message-passing#queries) +- [How to spawn a Child Workflow Execution in Go](https://docs.temporal.io/develop/go/workflows/child-workflows#child-workflows) +- [How to spawn an Activity Execution in Go](https://docs.temporal.io/develop/go/activities/execution#activity-execution) +- [How to develop an Activity Definition in Go](https://docs.temporal.io/develop/go/activities/basics#activity-definition) +- [How to set ActivityOptions in Go](https://docs.temporal.io/develop/go/activities/execution#activity-options-reference) +- [How to develop a Worker Program in Go](https://docs.temporal.io/develop/go/workers/run-worker-process#develop-worker) - [How to provide a custom Data Converter in Go](#) -- [How to execute a Side Effect in Go](https://docs.temporal.io/dev-guide/go/features/#side-effects) +- [How to execute a Side Effect in Go](https://docs.temporal.io/develop/go/workflows/side-effects) diff --git a/docs/examples/index.md b/docs/examples/index.md index 1a980b2c..75a14164 100644 --- a/docs/examples/index.md +++ b/docs/examples/index.md @@ -39,7 +39,7 @@ While not intended for production use, Example Applications can nonetheless be u See the [Codec Server documentation](https://docs.temporal.io/production-deployment/data-encryption) for more information. * **Codec Server with JWT validation** [[TypeScript]](https://github.com/temporal-sa/temporal-codec-server) The codec server uses JSON Web Tokens (JWT) to confirm the authenticity of JWTs issued by Temporal Cloud. -* **Codec CORS credentials** [[Go]](https://github.com/temporal-sa/codec-cors-credentials) An implementation of a Temporal [Codec Server](https://docs.temporal.io/dataconversion#codec-server) that supports Cross-Origin Resource Sharing (CORS), and specifically CORS requests with credentials. +* **Codec CORS credentials** [[Go]](https://github.com/temporal-sa/codec-cors-credentials) An implementation of a Temporal [Codec Server](https://docs.temporal.io/production-deployment/data-encryption#codec-server-setup) that supports Cross-Origin Resource Sharing (CORS), and specifically CORS requests with credentials. ## Samples diff --git a/docs/getting_started/dotnet/index.md b/docs/getting_started/dotnet/index.md index f9067e6c..e9be1e3c 100644 --- a/docs/getting_started/dotnet/index.md +++ b/docs/getting_started/dotnet/index.md @@ -44,7 +44,7 @@ Write a program from the ground up with tests. Once you're familiar with the basics, you may want to explore the documentation and code examples. -* [Temporal Application Developers Guide](https://docs.temporal.io/develop/dotnet/) +* [Temporal Application Developers Guide](https://docs.temporal.io/develop/dotnet) * [Temporal .NET SDK API documentation](https://dotnet.temporal.io/) * [Temporal .NET SDK code samples](https://github.com/temporalio/samples-dotnet) * [Temporal .NET SDK on GitHub](https://github.com/temporalio/sdk-dotnet) diff --git a/docs/getting_started/go/first_program_in_go/index.md b/docs/getting_started/go/first_program_in_go/index.md index 36e2a1dd..e7ee2169 100644 --- a/docs/getting_started/go/first_program_in_go/index.md +++ b/docs/getting_started/go/first_program_in_go/index.md @@ -44,7 +44,7 @@ Before starting this tutorial: ## ![](images/workflow.png) Application overview -The project in this tutorial mimics a "money transfer" application that has a single [Workflow function](https://docs.temporal.io/dev-guide/go/foundations/#develop-workflows) that orchestrates the execution of `Withdraw()` and `Deposit()` functions, representing a transfer of money from one account to another. Temporal calls these particular functions [Activity functions](https://docs.temporal.io/dev-guide/go/foundations/#activity-definition). +The project in this tutorial mimics a "money transfer" application that has a single [Workflow function](https://docs.temporal.io/develop/go/workflows/basics#develop-workflows) that orchestrates the execution of `Withdraw()` and `Deposit()` functions, representing a transfer of money from one account to another. Temporal calls these particular functions [Activity functions](https://docs.temporal.io/develop/go/activities/basics#activity-definition). To run the application, you do the following: @@ -363,7 +363,7 @@ This tutorial uses a separate program to start the Workflow, but you don't have ::: -You can make the call [synchronously or asynchronously](https://docs.temporal.io/go/workflows/#how-to-start-a-workflow). Here we do it synchronously by fetching the return value of the Workflow execution with `we.Get`. This call waits for the Workflow execution to complete before continuing. +You can make the call [synchronously or asynchronously](https://docs.temporal.io/develop/go/client/temporal-client#get-workflow-results). Here we do it synchronously by fetching the return value of the Workflow execution with `we.Get`. This call waits for the Workflow execution to complete before continuing. Now that you've seen how to use the SDK to start a Workflow Execution, try running the program yourself. diff --git a/docs/getting_started/go/hello_world_in_go/index.md b/docs/getting_started/go/hello_world_in_go/index.md index 3384b9f6..08aa8986 100644 --- a/docs/getting_started/go/hello_world_in_go/index.md +++ b/docs/getting_started/go/hello_world_in_go/index.md @@ -207,7 +207,7 @@ func (i *IPActivities) GetLocationInfo(ctx context.Context, ip string) (string, This Activity follows the same pattern as the `getIP` Activity. This time, the service returns JSON data rather than text, so you have to define a type to unmarshal the data. -While Activities can accept input arguments, it's a best practice to send a single argument rather than multiple arguments. In this case you only have a single String. If you have more than one argument, you should bundle them up in a serializable object. This is because later revisions to your Workflows and Activities that change the number of arguments sent to them can otherwise introduce the need for versioning. Review the [Activity parameters](https://docs.temporal.io/dev-guide/typescript/foundations/#activity-parameters) section of the Temporal documentation for more details. +While Activities can accept input arguments, it's a best practice to send a single argument rather than multiple arguments. In this case you only have a single String. If you have more than one argument, you should bundle them up in a serializable object. This is because later revisions to your Workflows and Activities that change the number of arguments sent to them can otherwise introduce the need for versioning. Review the [Activity parameters](https://docs.temporal.io/develop/go/activities/basics#activity-parameters) section of the Temporal documentation for more details. You've created your two Activities. Now you'll coordinate them using a Temporal Workflow. @@ -215,9 +215,9 @@ You've created your two Activities. Now you'll coordinate them using a Temporal Workflows are where you configure and organize the execution of Activities. You define a Workflow by writing a *Workflow Definition* using one of the Temporal SDKs. -In the Temporal Go SDK, a Workflow Definition is an [exported function](https://go.dev/tour/basics/3) with two additional requirements: it must accept `workflow.Context` as the first input parameter, and it must return `error`. Your Workflow function can optionally return another value, which you'll use to return the result of the Workflow Execution. Review the [Develop Workflows](https://docs.temporal.io/develop/go/core-application#develop-workflows) section of the Temporal documentation for more about Workflows in Go. +In the Temporal Go SDK, a Workflow Definition is an [exported function](https://go.dev/tour/basics/3) with two additional requirements: it must accept `workflow.Context` as the first input parameter, and it must return `error`. Your Workflow function can optionally return another value, which you'll use to return the result of the Workflow Execution. Review the [Develop Workflows](https://docs.temporal.io/develop/go/workflows/basics#develop-workflows) section of the Temporal documentation for more about Workflows in Go. -Temporal Workflows [must be deterministic](https://docs.temporal.io/workflows#deterministic-constraints) so that Temporal can replay your Workflow in the event of a crash. That's why you call Activities from your Workflow code. Activities don't have the same determinism constraints that Workflows have. +Temporal Workflows [must be deterministic](https://docs.temporal.io/workflow-definition#deterministic-constraints) so that Temporal can replay your Workflow in the event of a crash. That's why you call Activities from your Workflow code. Activities don't have the same determinism constraints that Workflows have. Create the file `workflows.go` in the root of your project: @@ -246,7 +246,7 @@ import ( With the imports and options in place, you can define the Workflow itself. -In the Temporal Go SDK, a Workflow Definition is an [exported function](https://go.dev/tour/basics/3) with two additional requirements: it must accept `workflow.Context` as the first input parameter, and it must return `error`. Your Workflow function can optionally return another value, which you'll use to return the result of the Workflow Execution. You can learn more in the [Workflow parameters](https://docs.temporal.io/dev-guide/go/foundations#workflow-parameters) section of the Temporal documentation. +In the Temporal Go SDK, a Workflow Definition is an [exported function](https://go.dev/tour/basics/3) with two additional requirements: it must accept `workflow.Context` as the first input parameter, and it must return `error`. Your Workflow function can optionally return another value, which you'll use to return the result of the Workflow Execution. You can learn more in the [Workflow parameters](https://docs.temporal.io/develop/go/workflows/basics#workflow-parameters) section of the Temporal documentation. Add the following code to define the `GetAddressFromIP` Workflow, which will call both Activities, using the value of the first as the input to the second: @@ -740,7 +740,7 @@ A Workflow ID is unique in a Namespace and identifies a Workflow Execution. Usin In this tutorial you're generating a UUID and appending it to a string that identifies the Workflow. ::: -You can [get the results](https://docs.temporal.io/dev-guide/go/foundations/#get-workflow-results) from your Workflow right away, or you can get the results at a later time. This implementation attempts to get the results immediately by calling `we.Get`, which blocks the program's execution until the Workflow Execution completes. +You can [get the results](https://docs.temporal.io/develop/go/client/temporal-client#get-workflow-results) from your Workflow right away, or you can get the results at a later time. This implementation attempts to get the results immediately by calling `we.Get`, which blocks the program's execution until the Workflow Execution completes. Now you can run your Workflow. First, ensure that your local Temporal Service is running, and that your Worker program is running also. diff --git a/docs/getting_started/go/index.md b/docs/getting_started/go/index.md index 2795ac5d..33042f29 100644 --- a/docs/getting_started/go/index.md +++ b/docs/getting_started/go/index.md @@ -53,7 +53,7 @@ In this course, you will go beyond the basics of Temporal application developmen Once you're familiar with the basics, you may want to explore the documentation and code examples. -* [Temporal Application Developers Guide](https://docs.temporal.io/dev-guide/go) +* [Temporal Application Developers Guide](https://docs.temporal.io/develop/go) * [Temporal Go SDK API documentation](https://go.temporal.io/) * [Temporal Go SDK code samples](https://github.com/temporalio/samples-go) * [Temporal Go SDK on GitHub](https://github.com/temporalio/sdk-go) diff --git a/docs/getting_started/java/hello_world_in_java/index.md b/docs/getting_started/java/hello_world_in_java/index.md index 65020c1c..1ce3b56d 100644 --- a/docs/getting_started/java/hello_world_in_java/index.md +++ b/docs/getting_started/java/hello_world_in_java/index.md @@ -244,7 +244,7 @@ Workflows are where you configure and organize the execution of Activities. You In the Temporal Java SDK, a Workflow Definition is made of two parts: -* A [Workflow Interface](https://docs.temporal.io/dev-guide/java/foundations#develop-workflows), which is an interface annotated with `@WorkflowInterface`. This interface contains a single method signature annotated with `@WorkflowMethod`. +* A [Workflow Interface](https://docs.temporal.io/develop/java/workflows/basics#develop-workflows), which is an interface annotated with `@WorkflowInterface`. This interface contains a single method signature annotated with `@WorkflowMethod`. * A class that implements the interface, providing the code that runs when the Workflow is executed Create `HelloWorldWorkflow.java` in the source code location of your project at `app/src/main/java/helloworldapp/` and add the following code to create a `HelloWorldWorkflow` interface that defines the expected functionality of your workflow: @@ -379,7 +379,7 @@ public class HelloWorldActivitiesImpl implements HelloWorldActivities { This class implements the single method from the interface named `composeGreeting` to compose a String that returns a standard "Hello World!" message using the passed in parameter. -Your [Activity Definition](https://docs.temporal.io/activities#activity-definition) can accept input parameters just like Workflow Definitions. Review the [Activity parameters](https://docs.temporal.io/dev-guide/java/foundations#activity-parameters) section of the Temporal documentation for more details, as there are some limitations you'll want to be aware of when running more complex applications. +Your [Activity Definition](https://docs.temporal.io/activity-definition#activity-definition) can accept input parameters just like Workflow Definitions. Review the [Activity parameters](https://docs.temporal.io/develop/java/activities/basics#activity-parameters) section of the Temporal documentation for more details, as there are some limitations you'll want to be aware of when running more complex applications. You've completed the logic for the application; you have a Workflow and an Activity defined. Before moving on to configuring your Worker, you'll write a unit test for your Workflow. @@ -679,7 +679,7 @@ public class InitiateHelloWorld { ``` -Like the Worker you created, this program uses stubs and a client to connect to the Temporal server. It then specifies a [Workflow ID](https://docs.temporal.io/dev-guide/java/foundations/#workflow-id) for the Workflow, as well as the Task Queue. The Worker you configured is looking for tasks on that Task Queue. +Like the Worker you created, this program uses stubs and a client to connect to the Temporal server. It then specifies a [Workflow ID](https://docs.temporal.io/develop/java/client/temporal-client#workflow-id) for the Workflow, as well as the Task Queue. The Worker you configured is looking for tasks on that Task Queue. :::tip Specify a Workflow ID @@ -694,7 +694,7 @@ Notice that an interface of `HelloWorldWorkflow` is used to create the Workflow ::: -You can [get the results](https://docs.temporal.io/dev-guide/java/foundations/#get-workflow-results) from your Workflow right away, or you can get the results at a later time. This implementation stores the results in the `greeting` variable after the `getGreeting()` method is called, which blocks the program's execution until the Workflow Execution completes. +You can [get the results](https://docs.temporal.io/develop/java/client/temporal-client#get-workflow-results) from your Workflow right away, or you can get the results at a later time. This implementation stores the results in the `greeting` variable after the `getGreeting()` method is called, which blocks the program's execution until the Workflow Execution completes. You have a Workflow, an Activity, a Worker, and a way to start a Workflow Execution. It's time to run the Workflow. diff --git a/docs/getting_started/java/index.md b/docs/getting_started/java/index.md index 33e2e1b2..36f284c6 100644 --- a/docs/getting_started/java/index.md +++ b/docs/getting_started/java/index.md @@ -53,7 +53,7 @@ In this course, you'll go beyond the basics of Temporal application development, Once you're familiar with the basics, you may want to explore the documentation and code examples. -* [Temporal Application Developers Guide](https://docs.temporal.io/dev-guide/java) +* [Temporal Application Developers Guide](https://docs.temporal.io/develop/java) * [Temporal Java SDK API documentation](https://www.javadoc.io/doc/io.temporal/temporal-sdk/latest/index.html) * [Temporal Java SDK code samples](https://github.com/temporalio/samples-java) * [Temporal Java SDK on GitHub](https://github.com/temporalio/sdk-java) diff --git a/docs/getting_started/php/index.md b/docs/getting_started/php/index.md index 6abf8306..a9554da9 100644 --- a/docs/getting_started/php/index.md +++ b/docs/getting_started/php/index.md @@ -23,7 +23,7 @@ Download and run a small application and explore how Temporal executes Workflows Once you're familiar with the basics, you may want to explore the documentation and code examples. -* [Temporal Application Developers Guide](https://docs.temporal.io/dev-guide/php) +* [Temporal Application Developers Guide](https://docs.temporal.io/develop/php) * [Temporal PHP SDK API documentation](https://php.temporal.io/) * [Temporal PHP SDK code samples](https://github.com/temporalio/samples-php) * [Temporal PHP SDK on GitHub](https://github.com/temporalio/sdk-php) diff --git a/docs/getting_started/python/first_program_in_python/index.md b/docs/getting_started/python/first_program_in_python/index.md index 25cd1fc4..56d8bdd5 100644 --- a/docs/getting_started/python/first_program_in_python/index.md +++ b/docs/getting_started/python/first_program_in_python/index.md @@ -205,7 +205,7 @@ Notice that the `PaymentDetails` includes a `reference_id` field. Some APIs let In the Temporal Python SDK, you define an Activity by decorating a method with **`@activity.defn`**. -[Activities](https://docs.temporal.io/application-development/foundations/?lang=python#develop-activities) are where you perform the business logic for your application. In the money transfer application, you have three Activity methods, `withdraw()`, `deposit()`, and `refund()`. The Workflow Definition calls the Activities `withdraw()` and `deposit()` to handle the money transfers. +[Activities](https://docs.temporal.io/develop/python/activities/basics) are where you perform the business logic for your application. In the money transfer application, you have three Activity methods, `withdraw()`, `deposit()`, and `refund()`. The Workflow Definition calls the Activities `withdraw()` and `deposit()` to handle the money transfers. First, the `withdraw()` Activity takes the details about the transfer and calls a service to process the withdrawal: @@ -277,7 +277,7 @@ Use Activities for your business logic, and use Workflows to coordinate the Acti Temporal makes your software durable and fault tolerant by default which allows you to code more reliable systems. -If an Activity fails, Temporal Workflows automatically retries the failed Activity by default. You can also customize how those retries happen through the [Retry Policy](https://docs.temporal.io/dev-guide/python/features#activity-retries). +If an Activity fails, Temporal Workflows automatically retries the failed Activity by default. You can also customize how those retries happen through the [Retry Policy](https://docs.temporal.io/develop/python/best-practices/error-handling#configure-custom-retry-policies). At the top of the `MoneyTransfer` Workflow Definition, you'll see a Retry Policy defined that looks like this: diff --git a/docs/getting_started/python/hello_world_in_python/index.md b/docs/getting_started/python/hello_world_in_python/index.md index b21a9b4e..557e5290 100644 --- a/docs/getting_started/python/hello_world_in_python/index.md +++ b/docs/getting_started/python/hello_world_in_python/index.md @@ -154,7 +154,7 @@ class SayHello: In this example, the `run` method is decorated with `@workflow.run`, so it's the method that the Workflow will invoke. -This method accepts a string value that will hold the name, and it returns a string. You can learn more in the [Workflow parameters](https://docs.temporal.io/dev-guide/python/foundations#workflow-parameters) section of the Temporal documentation. +This method accepts a string value that will hold the name, and it returns a string. You can learn more in the [Workflow parameters](https://docs.temporal.io/develop/python/workflows/basics#workflow-parameters) section of the Temporal documentation. :::tip @@ -200,7 +200,7 @@ async def say_hello(name: str) -> str: The logic within the `say_hello` function creates the string and returns the greeting. -Your [Activity Definition](https://docs.temporal.io/dev-guide/python/foundations#develop-activities) can accept input parameters just like Workflow Definitions. Review the [Activity parameters](https://docs.temporal.io/dev-guide/python/foundations#activity-parameters) section of the Temporal documentation for more details, as there are some limitations you'll want to be aware of when running more complex applications. +Your [Activity Definition](https://docs.temporal.io/develop/python/activities/basics#develop-activities) can accept input parameters just like Workflow Definitions. Review the [Activity parameters](https://docs.temporal.io/develop/python/activities/basics#activity-parameters) section of the Temporal documentation for more details, as there are some limitations you'll want to be aware of when running more complex applications. Like Workflow Definitions, if you have more than one parameter for an Activity, you should bundle the data into a data class rather than sending multiple input parameters. This will make future updates easier. @@ -421,7 +421,7 @@ if __name__ == "__main__": ``` -Like the Worker you created, this program uses `client.Connect` to connect to the Temporal server. It then executes the Workflow using `client.ExecuteWorkflow`, which requires the Workflow to run, the input parameters for the Workflow, a [Workflow ID](https://docs.temporal.io/dev-guide/python/foundations#workflow-id) for the Workflow, and the Task Queue to use. The Worker you configured is looking for tasks on that Task Queue. +Like the Worker you created, this program uses `client.Connect` to connect to the Temporal server. It then executes the Workflow using `client.ExecuteWorkflow`, which requires the Workflow to run, the input parameters for the Workflow, a [Workflow ID](https://docs.temporal.io/develop/python/client/temporal-client#workflow-id) for the Workflow, and the Task Queue to use. The Worker you configured is looking for tasks on that Task Queue. :::tip Specify a Workflow ID diff --git a/docs/getting_started/python/index.md b/docs/getting_started/python/index.md index d593405f..70231a3d 100644 --- a/docs/getting_started/python/index.md +++ b/docs/getting_started/python/index.md @@ -53,7 +53,7 @@ In this course, you'll go beyond the basics of Temporal application development, Once you're familiar with the basics, you may want to explore the documentation and code examples. -* [Temporal Application Developers Guide](https://docs.temporal.io/dev-guide/python) +* [Temporal Application Developers Guide](https://docs.temporal.io/develop/python) * [Temporal Python SDK API documentation](https://python.temporal.io/) * [Temporal Python SDK code samples](https://github.com/temporalio/samples-python) * [Temporal Python SDK on GitHub](https://github.com/temporalio/sdk-python) diff --git a/docs/getting_started/ruby/hello_world_in_ruby/index.md b/docs/getting_started/ruby/hello_world_in_ruby/index.md index 0d77e7c2..5b6d9018 100644 --- a/docs/getting_started/ruby/hello_world_in_ruby/index.md +++ b/docs/getting_started/ruby/hello_world_in_ruby/index.md @@ -201,7 +201,7 @@ end This Activity follows the same pattern as the `GetIPActivity` Activity. It's a method that calls a remote service. This time, the service returns JSON data rather than text. -While Activities can accept input arguments, it's a best practice to send a single argument rather than multiple arguments. In this case you only have a single String. If you have more than one argument, you should bundle them up in a serializable object. Review the [Activity parameters](https://docs.temporal.io/develop/ruby/core-application#develop-activity) section of the Temporal documentation for more details. +While Activities can accept input arguments, it's a best practice to send a single argument rather than multiple arguments. In this case you only have a single String. If you have more than one argument, you should bundle them up in a serializable object. Review the [Activity parameters](https://docs.temporal.io/develop/ruby/activities/basics#develop-activity) section of the Temporal documentation for more details. You've created your two Activities. Now you'll coordinate them using a Temporal Workflow. diff --git a/docs/getting_started/typescript/first_program_in_typescript/index.md b/docs/getting_started/typescript/first_program_in_typescript/index.md index 50bbdc74..f80d0e41 100644 --- a/docs/getting_started/typescript/first_program_in_typescript/index.md +++ b/docs/getting_started/typescript/first_program_in_typescript/index.md @@ -44,7 +44,7 @@ Before starting this tutorial: ## ![](images/workflow.png) Application overview -The project in this tutorial mimics a "money transfer" application that has a single [Workflow function](https://docs.temporal.io/dev-guide/typescript/foundations#develop-workflows) that orchestrates the execution of `withdraw` and `deposit` functions, representing a transfer of money from one account to another. Temporal calls these particular functions [Activity functions](https://docs.temporal.io/dev-guide/typescript/foundations#develop-activities). +The project in this tutorial mimics a "money transfer" application that has a single [Workflow function](https://docs.temporal.io/develop/typescript/workflows/basics#how-to-develop-a-workflow) that orchestrates the execution of `withdraw` and `deposit` functions, representing a transfer of money from one account to another. Temporal calls these particular functions [Activity functions](https://docs.temporal.io/develop/typescript/activities/basics#how-to-develop-an-activity). To run the application, you do the following: @@ -353,7 +353,7 @@ This tutorial uses a separate program to start the Workflow, but you don't have ::: -You can make the call [synchronously or asynchronously](https://docs.temporal.io/dev-guide/typescript/foundations#start-workflow-execution). Here we do it synchronously by fetching the return value of the Workflow execution with `await handle.result()`. This call waits for the Workflow execution to complete before continuing. +You can make the call [synchronously or asynchronously](https://docs.temporal.io/develop/typescript/client/temporal-client#get-workflow-results). Here we do it synchronously by fetching the return value of the Workflow execution with `await handle.result()`. This call waits for the Workflow execution to complete before continuing. Now that you've seen how to use the SDK to start a Workflow Execution, try running the program yourself. diff --git a/docs/getting_started/typescript/hello_world_in_typescript/index.md b/docs/getting_started/typescript/hello_world_in_typescript/index.md index faef51db..9c1a0cb2 100644 --- a/docs/getting_started/typescript/hello_world_in_typescript/index.md +++ b/docs/getting_started/typescript/hello_world_in_typescript/index.md @@ -234,13 +234,13 @@ export async function getLocationInfo(ip: string): Promise { This Activity follows the same pattern as the `getIP` Activity. It's an exported async function that uses `fetch` to call a remote service. This time, the service returns JSON data rather than text. -While Activities can accept input arguments, it's a best practice to send a single argument rather than multiple arguments. In this case you only have a single String. If you have more than one argument, you should bundle them up in a serializable object. Review the [Activity parameters](https://docs.temporal.io/dev-guide/typescript/foundations/#activity-parameters) section of the Temporal documentation for more details, as there are some limitations you'll want to be aware of in more complex applications. +While Activities can accept input arguments, it's a best practice to send a single argument rather than multiple arguments. In this case you only have a single String. If you have more than one argument, you should bundle them up in a serializable object. Review the [Activity parameters](https://docs.temporal.io/develop/typescript/activities/basics#activity-parameters) section of the Temporal documentation for more details, as there are some limitations you'll want to be aware of in more complex applications. You've created your two Activities. Now you'll coordinate them using a Temporal Workflow. ## Control application logic with a Workflow -Workflows are where you configure and organize the execution of Activities. You define a Workflow by writing a *Workflow Definition* using one of the Temporal SDKs. Review the [Develop Workflows](https://docs.temporal.io/develop/typescript/core-application#develop-workflows) section of the Temporal documentation for more about Workflows in TypeScript. +Workflows are where you configure and organize the execution of Activities. You define a Workflow by writing a *Workflow Definition* using one of the Temporal SDKs. Review the [Develop Workflows](https://docs.temporal.io/develop/typescript/workflows/basics#develop-workflows) section of the Temporal documentation for more about Workflows in TypeScript. Open the file `src/workflows.ts` and remove the code in the file since you'll add your own. Then add the following code to import the Activities and configure how the Workflow should handle failures with a [Retry Policy](https://docs.temporal.io/encyclopedia/retry-policies). diff --git a/docs/getting_started/typescript/index.md b/docs/getting_started/typescript/index.md index 01ee3b0e..f9bf3980 100644 --- a/docs/getting_started/typescript/index.md +++ b/docs/getting_started/typescript/index.md @@ -55,7 +55,7 @@ In this course, you will go beyond the basics of Temporal application developmen Once you're familiar with the basics, you may want to explore the documentation and code examples. -* [Temporal Application Developers Guide](https://docs.temporal.io/dev-guide/typescript) +* [Temporal Application Developers Guide](https://docs.temporal.io/develop/typescript) * [Temporal TypeScript SDK API documentation](https://typescript.temporal.io/) * [Temporal TypeScript SDK code samples](https://github.com/temporalio/samples-typescript) * [Temporal TypeScript SDK on GitHub](https://github.com/temporalio/sdk-typescript) diff --git a/docs/tutorials/ai/deep-research/01-setting-the-stage/index.md b/docs/tutorials/ai/deep-research/01-setting-the-stage/index.md index 2b1508a9..96204519 100644 --- a/docs/tutorials/ai/deep-research/01-setting-the-stage/index.md +++ b/docs/tutorials/ai/deep-research/01-setting-the-stage/index.md @@ -215,7 +215,7 @@ report = await Runner.run(writer, results.final_output) The OpenAI Agents SDK has a **built-in Temporal integration** via the [`OpenAIAgentsPlugin`](https://python.temporal.io/temporalio.contrib.openai_agents.OpenAIAgentsPlugin.html). -Without the plugin, `Runner.run()` calls the LLM directly—if it fails or your app crashes, the work is lost. With the plugin, each `Runner.run()` call is recorded in Temporal's [event history](https://docs.temporal.io/encyclopedia/event-history/). This means: +Without the plugin, `Runner.run()` calls the LLM directly—if it fails or your app crashes, the work is lost. With the plugin, each `Runner.run()` call is recorded in Temporal's [event history](https://docs.temporal.io/encyclopedia/event-history). This means: - **If an LLM call fails**, Temporal automatically retries it (with backoff you configure) - **If your Worker crashes mid-research**, Temporal knows which `Runner.run()` calls already completed and skips them on restart—you don't pay for the same LLM calls twice diff --git a/docs/tutorials/ai/deep-research/02-creating-the-workflow/index.md b/docs/tutorials/ai/deep-research/02-creating-the-workflow/index.md index e4594a25..16ed7ccb 100644 --- a/docs/tutorials/ai/deep-research/02-creating-the-workflow/index.md +++ b/docs/tutorials/ai/deep-research/02-creating-the-workflow/index.md @@ -623,7 +623,7 @@ Before adding the handlers that modify state, let's add a method to read state. 1. **As a Query handler** — Clients can call it directly to check the Workflow's current state 2. **As a helper** — The Update handlers (which we'll add next) call it to return status after modifying state -[Queries](https://docs.temporal.io/encyclopedia/workflow-message-passing#sending-queries) are read-only—they can inspect Workflow state but cannot modify it. The server's `/api/status` endpoint calls this Query to get the current state: What's the original query? Are there clarification questions? How many have been answered? +[Queries](https://docs.temporal.io/sending-messages#sending-queries) are read-only—they can inspect Workflow state but cannot modify it. The server's `/api/status` endpoint calls this Query to get the current state: What's the original query? Are there clarification questions? How many have been answered? ```python @workflow.query @@ -648,7 +648,7 @@ Before adding the handlers that modify state, let's add a method to read state. ### Add the Update Handlers -Now let's add the handlers that receive input and modify state. That's where [Updates](https://docs.temporal.io/encyclopedia/workflow-message-passing#sending-updates) come in. +Now let's add the handlers that receive input and modify state. That's where [Updates](https://docs.temporal.io/sending-messages#sending-updates) come in.
What is an Update? @@ -661,7 +661,7 @@ Temporal provides three ways to communicate with a running Workflow: | **[Signal](https://docs.temporal.io/develop/python/message-passing#send-signal-from-client)** | Client → Workflow | Yes | No | | **[Update](https://docs.temporal.io/sending-messages#sending-updates)** | Client → Workflow | Yes | Yes | -An [Update](https://docs.temporal.io/encyclopedia/workflow-message-passing#sending-updates) combines the best of both: it can modify Workflow state like a Signal, but also returns a response like a Query. This makes it perfect for our use case—the UI sends a research query and immediately gets back the status (including any clarification questions). +An [Update](https://docs.temporal.io/sending-messages#sending-updates) combines the best of both: it can modify Workflow state like a Signal, but also returns a response like a Query. This makes it perfect for our use case—the UI sends a research query and immediately gets back the status (including any clarification questions).
diff --git a/docs/tutorials/ai/durable-ai-agent/index.md b/docs/tutorials/ai/durable-ai-agent/index.md index f5c41957..4f648b26 100644 --- a/docs/tutorials/ai/durable-ai-agent/index.md +++ b/docs/tutorials/ai/durable-ai-agent/index.md @@ -77,7 +77,7 @@ Additionally, this tutorial assumes you have basic familiarity with: #### Programming Concepts -* Temporal fundamentals such as [Workflows](https://docs.temporal.io/develop/python/core-application#develop-workflows), [Activities](https://docs.temporal.io/develop/python/core-application#develop-activities), [Workers](https://docs.temporal.io/develop/python/core-application#run-a-dev-worker), [Signals](https://docs.temporal.io/develop/python/message-passing#signals), and [Queries](https://docs.temporal.io/develop/python/message-passing#queries) +* Temporal fundamentals such as [Workflows](https://docs.temporal.io/develop/python/workflows/basics), [Activities](https://docs.temporal.io/develop/python/activities/basics), [Workers](https://docs.temporal.io/develop/python/workers/run-worker-process#run-a-worker-process), [Signals](https://docs.temporal.io/develop/python/workflows/message-passing#signal-handlers), and [Queries](https://docs.temporal.io/develop/python/workflows/message-passing#query-handlers) * Python fundamentals such as functions, classes, [async/await syntax](https://docs.python.org/3/library/asyncio.html), and virtual environments * Command line interface and running commands in a terminal or command prompt * REST API concepts including HTTP requests and JSON responses @@ -4984,7 +4984,7 @@ if __name__ == "__main__": The code creates a `ThreadPoolExecutor` for the Worker to use as the `activity_executor`. Since an agent's tools can be either `async` or not, you must use one of the synchronous safe methods for Activity execution. -You can read more about this in [the Python SDK documentation](https://docs.temporal.io/develop/python/python-sdk-sync-vs-async). +You can read more about this in [the Python SDK documentation](https://docs.temporal.io/develop/python/best-practices/python-sdk-sync-vs-async). Next, the Worker object is created, passing in the `client`, the `task_queue`, the `activity_executor`, and then registering the individual Workflows and Activities the Worker can execute. diff --git a/docs/tutorials/go/audiobook/index.md b/docs/tutorials/go/audiobook/index.md index e659e798..b8ea86fc 100644 --- a/docs/tutorials/go/audiobook/index.md +++ b/docs/tutorials/go/audiobook/index.md @@ -438,7 +438,7 @@ A few more things about this code: - As a standalone application, this Worker has a `main` method. - The app starts by checking for an OpenAI bearer token and stores it as a static variable in the `app` package. -- Next, it builds a [Client](https://docs.temporal.io/develop/go/temporal-clients), a class that can communicate with the Temporal service. +- Next, it builds a [Client](https://docs.temporal.io/develop/go/client/temporal-client), a class that can communicate with the Temporal service. - It uses the client and the Task Queue to create a new Worker, which registers the Workflow and Activities it can manage. - Finally, it runs the Worker, which starts polling for Tasks. diff --git a/docs/tutorials/go/background-check/durable-execution.mdx b/docs/tutorials/go/background-check/durable-execution.mdx index 2007fb0f..604ba7a8 100644 --- a/docs/tutorials/go/background-check/durable-execution.mdx +++ b/docs/tutorials/go/background-check/durable-execution.mdx @@ -37,7 +37,7 @@ tags: - timer --- -When it comes to the Temporal Platform's ability to durably execute code, the SDK's ability to [Replay](https://docs.temporal.io/dev-guide/sdks#replays) a Workflow Execution is a major aspect of that. +When it comes to the Temporal Platform's ability to durably execute code, the SDK's ability to [Replay](https://docs.temporal.io/develop/go/best-practices/testing-suite#replay) a Workflow Execution is a major aspect of that. This chapter introduces the development patterns which enable that. :::tip Develop for a Durable Execution @@ -56,7 +56,7 @@ The information in this chapter is also available in the [Temporal 102 course](h ::: -This chapter builds on the [Construct a new Temporal Application project](https://docs.temporal.io/dev-guide/go/project-setup) chapter and relies on the Background Check use case and sample applications as a means to contextualize the information. +This chapter builds on the [Construct a new Temporal Application project](https://docs.temporal.io/develop/go/set-up-your-local-go) chapter and relies on the Background Check use case and sample applications as a means to contextualize the information. This chapter walks through the following sequence: @@ -455,7 +455,7 @@ You should expect to see the `TestReplayWorkflowHistoryFromFile` test fail. This is because the code we added creates new Events and alters the Event History sequence. To get this test to pass, we must get an updated Event History JSON file. -[Start a new Workflow](https://docs.temporal.io/dev-guide/go/project-setup#start-workflow) and after it is complete [download the Event History as a JSON object](#retrieve-event-history). +[Start a new Workflow](https://docs.temporal.io/develop/go/set-up-your-local-go#4-execute-the-workflow) and after it is complete [download the Event History as a JSON object](#retrieve-event-history). :::info Double check Task Queue names diff --git a/docs/tutorials/go/background-check/project-setup.mdx b/docs/tutorials/go/background-check/project-setup.mdx index d885f854..ddabdd06 100644 --- a/docs/tutorials/go/background-check/project-setup.mdx +++ b/docs/tutorials/go/background-check/project-setup.mdx @@ -787,7 +787,7 @@ temporal workflow start \ Unless otherwise specified, Activity Executions use the Workflow Execution's Task Queue name by default. - `--type`: This is the Workflow Type name. By default, this is the function name. - In the Go SDK, this name can be customized when [registering the Worklow with the Workflow](https://docs.temporal.io/dev-guide/go/foundations#customize-workflow-type). + In the Go SDK, this name can be customized when [registering the Worklow with the Workflow](https://docs.temporal.io/develop/go/workflows/basics#customize-workflow-type). - `--input`: This must be a valid JSON object that can be unmarshaled into the parameter(s) that the Workflow function accepts. Read more about how the Temporal Platform handles your application data in the [Data conversion](https://docs.temporal.io/dataconversion) guide. - `--namespace`: This is the Namespace that you want to run your Temporal Application in. diff --git a/docs/tutorials/go/index.md b/docs/tutorials/go/index.md index 2693516f..f3542641 100644 --- a/docs/tutorials/go/index.md +++ b/docs/tutorials/go/index.md @@ -10,7 +10,7 @@ image: /img/temporal-logo-twitter-card.png Go is an open source programming language that offers built-in concurrency and a robust standard library. It's popular for building microservices and command line tools. -Temporal's [Go SDK](https://docs.temporal.io/dev-guide/go/foundations#add-your-sdk) lets you use Go to build applications that take advantage of Temporal's features. +Temporal's [Go SDK](https://docs.temporal.io/develop/go#install-and-get-started) lets you use Go to build applications that take advantage of Temporal's features. These tutorials will walk you through building Temporal applications using Go. diff --git a/docs/tutorials/java/audiobook/index.md b/docs/tutorials/java/audiobook/index.md index 89bc7714..e3adcc92 100644 --- a/docs/tutorials/java/audiobook/index.md +++ b/docs/tutorials/java/audiobook/index.md @@ -829,7 +829,7 @@ A few more things about this code: - The app starts by checking for an OpenAI bearer token and stores it as a static member of the `TTSActivitiesImpl` class. - Next, it creates and runs a Worker by calling `runWorker`, relaying its arguments. This method centralizes Worker-specific code for clarity but your code could live in `main` if you needed it to. -- The `runWorker` method builds a [Client](https://docs.temporal.io/develop/java/temporal-clients), a class that can communicate with the Temporal service, and passes it to a Java `[WorkerFactory](https://docs.temporal.io/develop/java/core-application#run-a-dev-worker)`. +- The `runWorker` method builds a [Client](https://docs.temporal.io/develop/java/client/temporal-client), a class that can communicate with the Temporal service, and passes it to a Java `[WorkerFactory](https://docs.temporal.io/develop/java/workers/run-worker-process#run-a-dev-worker)`. The factory builds a Worker and the code runs the factory, bringing the Worker online and ready to start processing Tasks. Your complete project structure will now look like this: diff --git a/docs/tutorials/java/background-check/durable-execution.mdx b/docs/tutorials/java/background-check/durable-execution.mdx index 51b22e00..dbc4b0e4 100644 --- a/docs/tutorials/java/background-check/durable-execution.mdx +++ b/docs/tutorials/java/background-check/durable-execution.mdx @@ -56,7 +56,7 @@ The information in this chapter is also available in the [Temporal 102 course](h ::: -This chapter builds on the [Construct a new Temporal Application project](https://docs.temporal.io/dev-guide/java/project-setup) chapter and relies on the Background Check use case and sample applications as a means to contextualize the information. +This chapter builds on the [Construct a new Temporal Application project](https://docs.temporal.io/develop/java/set-up-your-local-java#create-a-project) chapter and relies on the Background Check use case and sample applications as a means to contextualize the information. This chapter walks through the following sequence: @@ -385,7 +385,7 @@ You should expect to see the `TestReplayWorkflowHistoryFromFile` test fail. This is because the code we added creates new Events and alters the Event History sequence. To get this test to pass, we must get an updated Event History JSON file. -[Start a new Workflow](https://docs.temporal.io/dev-guide/java/project-setup#start-workflow) and after it is complete [download the Event History as a JSON object](#retrieve-event-history). +[Start a new Workflow](https://docs.temporal.io/develop/java/set-up-your-local-java#6-execute-the-workflow) and after it is complete [download the Event History as a JSON object](#retrieve-event-history). :::info Double check Task Queue names diff --git a/docs/tutorials/java/index.md b/docs/tutorials/java/index.md index 8f74fc99..8fa6bee5 100644 --- a/docs/tutorials/java/index.md +++ b/docs/tutorials/java/index.md @@ -10,7 +10,7 @@ image: /img/temporal-logo-twitter-card.png Java is a high-level, object-oriented programming language known for its platform independence, robustness, and extensive ecosystem. -Temporal's [Java SDK](https://docs.temporal.io/dev-guide/java/foundations#add-your-sdk) lets you use Java to build applications that take advantage of Temporal's features. +Temporal's [Java SDK](https://docs.temporal.io/develop/java#install-and-get-started) lets you use Java to build applications that take advantage of Temporal's features. These tutorials will walk you through building Temporal applications using Java. diff --git a/docs/tutorials/php/build-a-recurring-billing-app/index.md b/docs/tutorials/php/build-a-recurring-billing-app/index.md index e2a1de1f..ac4104c8 100644 --- a/docs/tutorials/php/build-a-recurring-billing-app/index.md +++ b/docs/tutorials/php/build-a-recurring-billing-app/index.md @@ -219,7 +219,7 @@ So, let's continue and finally implement subscription workflow. :::info Why not use a Signal? -Another way to cancel the subscription is to send a [signal](https://docs.temporal.io/dev-guide/php/features#signals) to the workflow. For example, we +Another way to cancel the subscription is to send a [signal](https://docs.temporal.io/develop/php/message-passing#send-signal-from-client) to the workflow. For example, we can wait with condition: ```php @@ -242,7 +242,7 @@ At this moment we have a working trial period that can be cancelled. To finish o - send monthly charged email - process subscription cancellation -If we assume that the subscription period is 30 days, and it should last until it is manually cancelled, then we can use an infinite loop here (subject to [Event History Limits](https://docs.temporal.io/workflows/#event-history), but don't worry about that for a monthly workflow). +If we assume that the subscription period is 30 days, and it should last until it is manually cancelled, then we can use an infinite loop here (subject to [Event History Limits](https://docs.temporal.io/workflow-execution/event#event-history-limits), but don't worry about that for a monthly workflow). We "endlessly" wait for 30 days and charge monthly fee. Also, don't forget about the trial period at the beginning. diff --git a/docs/tutorials/php/index.md b/docs/tutorials/php/index.md index 20c8e009..51967876 100644 --- a/docs/tutorials/php/index.md +++ b/docs/tutorials/php/index.md @@ -8,7 +8,7 @@ image: /img/temporal-logo-twitter-card.png Temporal Python SDK -PHP is a popular programming language for back-end web development that powers WordPress, Drupal, and thousands of web applications world-wide. Temporal's [PHP SDK](https://docs.temporal.io/dev-guide/php) lets you use PHP to build applications that take advantage of Temporal's features. +PHP is a popular programming language for back-end web development that powers WordPress, Drupal, and thousands of web applications world-wide. Temporal's [PHP SDK](https://docs.temporal.io/develop/php) lets you use PHP to build applications that take advantage of Temporal's features. These tutorials will walk you through building Temporal Applications using PHP. diff --git a/docs/tutorials/python/background-check/durable-execution.mdx b/docs/tutorials/python/background-check/durable-execution.mdx index dec01612..211b8245 100644 --- a/docs/tutorials/python/background-check/durable-execution.mdx +++ b/docs/tutorials/python/background-check/durable-execution.mdx @@ -59,7 +59,7 @@ The information in this chapter is also available in the [Temporal 102 course](h ::: -This chapter builds on the [Construct a new Temporal Application project](https://docs.temporal.io/dev-guide/python/project-setup) chapter and relies on the Background Check use case and sample applications as a means to contextualize the information. +This chapter builds on the [Construct a new Temporal Application project](/tutorials/python/background-check/project-setup.mdx) chapter and relies on the Background Check use case and sample applications as a means to contextualize the information. This chapter walks through the following sequence: @@ -209,7 +209,7 @@ Developers are encouraged to use the SDK’s APIs when possible and avoid potent - Use `workflow.now()` instead of `datetime.now()` or `workflow.time()` instead `time.time()` for current time. - Leverage the custom `asyncio` event loop in Workflows; use `asyncio.sleep()` as needed. -Read more about [How the Python Sandbox works](https://docs.temporal.io/encyclopedia/python-sdk-sandbox) for details. +Read more about [How the Python Sandbox works](https://docs.temporal.io/develop/python/best-practices/python-sdk-sandbox#how-it-works) for details. Other common ways to introduce non-deterministic issues into a Workflow: @@ -337,7 +337,7 @@ You should expect to see the `TestReplayWorkflowHistoryFromFile` test fail. This is because the code we added creates new Events and alters the Event History sequence. To get this test to pass, we must get an updated Event History JSON file. -[Start a new Workflow](https://docs.temporal.io/dev-guide/python/project-setup#start-workflow) and after it is complete [download the Event History as a JSON object](#retrieve-event-history). +[Start a new Workflow](/tutorials/python/background-check/project-setup.mdx#start-workflow) and after it is complete [download the Event History as a JSON object](#retrieve-event-history). :::info Double check Task Queue names diff --git a/docs/tutorials/python/index.md b/docs/tutorials/python/index.md index 841cff28..59ae1d48 100644 --- a/docs/tutorials/python/index.md +++ b/docs/tutorials/python/index.md @@ -10,7 +10,7 @@ image: /img/temporal-logo-twitter-card.png Python is a programming language that lets you work quickly and integrate systems more effectively. It's popular for building and scripting applications. -Temporal's [Python SDK](https://docs.temporal.io/dev-guide/python/foundations#add-your-sdk) lets you use Python to build applications that take advantage of Temporal's features. +Temporal's [Python SDK](https://docs.temporal.io/develop/python#install-and-get-started) lets you use Python to build applications that take advantage of Temporal's features. These tutorials will walk you through building Temporal applications using Python. diff --git a/docs/tutorials/typescript/background-check/durable-execution.mdx b/docs/tutorials/typescript/background-check/durable-execution.mdx index f1c6e915..187dd4d6 100644 --- a/docs/tutorials/typescript/background-check/durable-execution.mdx +++ b/docs/tutorials/typescript/background-check/durable-execution.mdx @@ -63,7 +63,7 @@ This chapter walks through the following sequence: ## Retrieve a Workflow Execution's Event History {#retrieve-event-history} -There are a few ways to view and download a Workflow Execution's [Event History](https://docs.temporal.io/workflows#event-history). +There are a few ways to view and download a Workflow Execution's [Event History](https://docs.temporal.io/encyclopedia/event-history). We recommend starting off by using either the Temporal CLI or the Web UI to access it. ### Using the Temporal CLI @@ -204,8 +204,8 @@ The Replay test executes the same steps as the SDK and verifies compatibility. Workflow code becomes non-deterministic primarily through two main avenues: -1. **[Intrinsic non-deterministic logic](https://docs.temporal.io/dev-guide/go/durable-execution#intrinsic-non-deterministic-logic):** This occurs when Workflow state or branching logic within the Workflow gets determined by factors beyond the SDK's control. -2. **[Non-deterministic code changes](https://docs.temporal.io/dev-guide/go/durable-execution#durability-through-replays):** When you change your Workflow code and deploy those changes while there are still active Workflow Executions relying on older code versions. +1. **[Intrinsic non-deterministic logic](https://docs.temporal.io/workflow-definition#intrinsic-nondeterministic-logic):** This occurs when Workflow state or branching logic within the Workflow gets determined by factors beyond the SDK's control. +2. **[Non-deterministic code changes](https://docs.temporal.io/workflow-definition#non-deterministic-change):** When you change your Workflow code and deploy those changes while there are still active Workflow Executions relying on older code versions. ## Intrinsic non-deterministic logic {#intrinsic-non-deterministic-logic} @@ -473,7 +473,7 @@ Result: ``` The preceding output shows eleven Events in the Event History ordered in a particular sequence. -All Events are created by the Temporal Server in response to either a request coming from a Temporal Client, or a [Command](https://docs.temporal.io/workflows#command) coming from the Worker. +All Events are created by the Temporal Server in response to either a request coming from a Temporal Client, or a [Command](https://docs.temporal.io/workflows) coming from the Worker. Let's take a closer look: diff --git a/docs/tutorials/typescript/build-choose-your-own-adventure-bot/index.md b/docs/tutorials/typescript/build-choose-your-own-adventure-bot/index.md index a661eedb..af90d59e 100644 --- a/docs/tutorials/typescript/build-choose-your-own-adventure-bot/index.md +++ b/docs/tutorials/typescript/build-choose-your-own-adventure-bot/index.md @@ -21,7 +21,7 @@ import { OutdatedNotice } from '@site/src/components' In this tutorial, we'll integrate all the knowledge gained from Core and Logging APIs in an end-to-end, complete demo application - which happens to be a Choose Your Own Adventure game that you can play on Discord or Slack! -This project will integrate and give context to your understanding of [Temporal SDK APIs](https://docs.temporal.io/dev-guide/typescript/foundations//#develop-workflows): logging with Sinks, Activity dependency injection, Timer and Promise.race design patterns, Signals (and HTTP Servers for them), Polling patterns, and `continueAsNew` for indefinitely long running Workflows. +This project will integrate and give context to your understanding of [Temporal SDK APIs](https://docs.temporal.io/develop/typescript/workflows/basics#develop-workflows): logging with Sinks, Activity dependency injection, Timer and Promise.race design patterns, Signals (and HTTP Servers for them), Polling patterns, and `continueAsNew` for indefinitely long running Workflows. :::tip Skip ahead diff --git a/docs/tutorials/typescript/build-one-click-order-app-nextjs/index.md b/docs/tutorials/typescript/build-one-click-order-app-nextjs/index.md index fd6101a3..56da279a 100644 --- a/docs/tutorials/typescript/build-one-click-order-app-nextjs/index.md +++ b/docs/tutorials/typescript/build-one-click-order-app-nextjs/index.md @@ -212,7 +212,7 @@ export async function oneClickBuy(id: string): Promise { This Workflow calls the `purchase` Activity and then uses `await sleep()` to create an artificial delay in the Workflow. A more complex Workflow would call more Activities. [Workflows must be deterministic](https://docs.temporal.io/workflows#deterministic-constraints), so you perform non-deterministic work in Activities. -The TypeScript SDK bundles Workflow code and runs it inside a [deterministic sandbox](https://docs.temporal.io/develop/typescript/core-application#workflow-logic-requirements). This sandbox can help detect if you're using nondeterministic code. +The TypeScript SDK bundles Workflow code and runs it inside a [deterministic sandbox](https://docs.temporal.io/develop/typescript/workflows/basics#workflow-logic-requirements). This sandbox can help detect if you're using nondeterministic code. This is why you must separate Workflow code from Activity code, and why you have to use the `proxyActivities` function to load your Activity functions instead of directly importing them. The Activities will be nondeterministic, so you can't run in the same sandbox as the Workflow code. With your Workflows and Activities in place, you can now write a [Worker Program](https://docs.temporal.io/workers#worker-program). @@ -639,7 +639,7 @@ At this point, you have a working full stack example of a Temporal Workflow runn From here you can add more Activities to the Workflow, or use this project as the basis for a different kind of application that needs long-running processes. As you build out more features, you may find you need to change the state of an in-progress Workflow, or retrieve information from that Workflow. -You can use [Signals](https://docs.temporal.io/develop/typescript#signals) to send asynchronous data to running Workflows, and you can use [Queries](https://docs.temporal.io/develop/typescript#queries) to check the state of a Workflow. You can map Signals and Queries to new Next.js API routes using the Temporal Client. +You can use [Signals](https://docs.temporal.io/develop/typescript/workflows/message-passing#signals) to send asynchronous data to running Workflows, and you can use [Queries](https://docs.temporal.io/develop/typescript/workflows/message-passing#queries) to check the state of a Workflow. You can map Signals and Queries to new Next.js API routes using the Temporal Client. For a more detailed example, look at the Next.js E-Commerce One-Click example in the [samples-TypeScript repository](https://github.com/temporalio/samples-typescript/tree/main/nextjs-ecommerce-oneclick). @@ -647,8 +647,8 @@ You can deploy your Next.js app, including Next.js API Routes with Temporal Clie As you move into production with your app, you'll find the following documentation topics helpful: -- [Securing your data](https://docs.temporal.io/develop/typescript/data-encryption) -- [Testing your Workflows](https://docs.temporal.io/develop/typescript/testing-suite) -- [Versioning your Workflows](https://docs.temporal.io/develop/typescript/versioning) -- [Observability](https://docs.temporal.io/develop/typescript/observability) +- [Securing your data](https://docs.temporal.io/develop/typescript/converters-and-encryption#encryption) +- [Testing your Workflows](https://docs.temporal.io/develop/typescript/best-practices/testing-suite) +- [Versioning your Workflows](https://docs.temporal.io/develop/typescript/workflows/versioning) +- [Observability](https://docs.temporal.io/develop/typescript/platform/observability) - [Production Deployment](https://docs.temporal.io/production-deployment) diff --git a/docs/tutorials/typescript/index.md b/docs/tutorials/typescript/index.md index 3d148042..0f3ab346 100644 --- a/docs/tutorials/typescript/index.md +++ b/docs/tutorials/typescript/index.md @@ -8,7 +8,7 @@ image: /img/temporal-logo-twitter-card.png ![Temporal TypeScript SDK](/img/sdk_banners/banner_typescript.png) -TypeScript is a strongly typed programming language that builds on JavaScript. Temporal's [TypeScript SDK](https://docs.temporal.io/dev-guide/typescript/foundations//#add-your-sdk) lets you use TypeScript to build Node.js applications that take advantage of Temporal's features. +TypeScript is a strongly typed programming language that builds on JavaScript. Temporal's [TypeScript SDK](https://docs.temporal.io/develop/typescript#install-and-get-started) lets you use TypeScript to build Node.js applications that take advantage of Temporal's features. These tutorials will walk you through building Temporal applications using TypeScript. diff --git a/docs/tutorials/typescript/recurring-billing-system/index.md b/docs/tutorials/typescript/recurring-billing-system/index.md index a7968137..7782a2e3 100644 --- a/docs/tutorials/typescript/recurring-billing-system/index.md +++ b/docs/tutorials/typescript/recurring-billing-system/index.md @@ -307,7 +307,7 @@ const { }); ``` -Using `proxyActivities`, imported from the Temporal TypeScript SDK, you can create a proxy object that allows users to call the Activity from within the Workflow as if it's a local function. For example, when you call the `sendWelcomeEmail` Activity now, you aren't calling the Activity directly. You are calling the proxy, which takes care of executing the Activity, managing automatic retries and other configurations you have made with the Activity. This abstraction allows the developer to focus on business logic without having to worry about the intricacies of distributed computing such as retries. You used `startToCloseTimeout` here to indicate the maximum time it should take for an Activity to execute, including retries. There are [other retry configurations](https://docs.temporal.io/develop/typescript/failure-detection#activity-timeouts) that you can add to your proxy object. +Using `proxyActivities`, imported from the Temporal TypeScript SDK, you can create a proxy object that allows users to call the Activity from within the Workflow as if it's a local function. For example, when you call the `sendWelcomeEmail` Activity now, you aren't calling the Activity directly. You are calling the proxy, which takes care of executing the Activity, managing automatic retries and other configurations you have made with the Activity. This abstraction allows the developer to focus on business logic without having to worry about the intricacies of distributed computing such as retries. You used `startToCloseTimeout` here to indicate the maximum time it should take for an Activity to execute, including retries. There are [other retry configurations](https://docs.temporal.io/develop/typescript/activities/timeouts#activity-retries) that you can add to your proxy object. Now that you have configured retries with your Activities, you can move onto writing the `subscriptionWorkflow`. The `subscriptionWorkflow` needs to include the following steps: @@ -434,7 +434,7 @@ You should now see your Worker program running. However, note that if you change npm run start.watch ``` -However, while the Worker runs, it won't have any tasks to perform because you haven't started a Workflow yet. This is where the [Temporal Client](https://docs.temporal.io/evaluate/development-production-features/temporal-client) will come in. Recall that a Temporal Client is a part available in each Temporal SDK that provides a set of APIs to communicate with a Temporal Service. You can use a Temporal Client in your application to perform various operations such as: +However, while the Worker runs, it won't have any tasks to perform because you haven't started a Workflow yet. This is where the [Temporal Client](https://docs.temporal.io/develop/typescript/client/temporal-client) will come in. Recall that a Temporal Client is a part available in each Temporal SDK that provides a set of APIs to communicate with a Temporal Service. You can use a Temporal Client in your application to perform various operations such as: - Start a subscription trial. - List ongoing subscription trials. - Query the state of a customer's subscription details.