# ...
@workflow.defn(name="YourWorkflow")
class YourWorkflow:
    @workflow.run
    async def run(self, name: str) -> str:
        return await workflow.execute_activity(
            your_activity,
            YourParams("Hello", name),
            start_to_close_timeout=timedelta(seconds=10),
        )
```

### Define Workflow parameters {#workflow-parameters}

**How to define Workflow parameters using the Temporal Python SDK.**

Temporal Workflows may have any number of custom parameters. However, we strongly recommend that objects are used as
parameters, so that the object's individual fields may be altered without breaking the signature of the Workflow. All
Workflow Definition parameters must be serializable.

Workflow parameters are the method parameters of the singular method decorated with `@workflow.run`. These can be any
data type Temporal can convert, including [`dataclasses`](https://docs.python.org/3/library/dataclasses.html) when
properly type-annotated. Technically this can be multiple parameters, but Temporal strongly encourages a single
`dataclass` parameter containing all input fields.

  
    View the source code
  {' '}
  in the context of the rest of the application code.

```python
from dataclasses import dataclass