You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
The Go SDK for Serverless Workflow provides the [specification types](https://github.com/serverlessworkflow/specification/blob/v1.0.0-alpha5/schema/workflow.yaml) defined by the Serverless Workflow DSL in Go, making it easy to parse, validate, and interact with workflows.
3
+
The Go SDK for Serverless Workflow provides strongly-typed structures for the [Serverless Workflow specification](https://github.com/serverlessworkflow/specification/blob/v1.0.0/schema/workflow.yaml). It simplifies parsing, validating, and interacting with workflows in Go. Starting from version `v3.1.0`, the SDK also includes a partial reference implementation, allowing users to execute workflows directly within their Go applications.
4
4
5
5
---
6
6
@@ -10,8 +10,11 @@ The Go SDK for Serverless Workflow provides the [specification types](https://gi
fmt.Printf("Workflow completed with output: %v\n", output)
114
+
}
115
+
```
120
116
121
-
Support for building workflows programmatically is planned for future releases. Stay tuned for updates in upcoming versions.
117
+
### Implementation Roadmap
118
+
119
+
The table below lists the current state of this implementation. This table is a roadmap for the project based on the [DSL Reference doc](https://github.com/serverlessworkflow/specification/blob/v1.0.0/dsl-reference.md).
120
+
121
+
| Feature | State |
122
+
| ----------- | --------------- |
123
+
| Workflow Document | ✅ |
124
+
| Workflow Use | 🟡 |
125
+
| Workflow Schedule | ❌ |
126
+
| Task Call | ❌ |
127
+
| Task Do | ✅ |
128
+
| Task Emit | ❌ |
129
+
| Task For | ❌ |
130
+
| Task Fork | ❌ |
131
+
| Task Listen | ❌ |
132
+
| Task Raise | ✅ |
133
+
| Task Run | ❌ |
134
+
| Task Set | ✅ |
135
+
| Task Switch | ❌ |
136
+
| Task Try | ❌ |
137
+
| Task Wait | ❌ |
138
+
| Lifecycle Events | 🟡 |
139
+
| External Resource | ❌ |
140
+
| Authentication | ❌ |
141
+
| Catalog | ❌ |
142
+
| Extension | ❌ |
143
+
| Error | ✅ |
144
+
| Event Consumption Strategies | ❌ |
145
+
| Retry | ❌ |
146
+
| Input | ✅ |
147
+
| Output | ✅ |
148
+
| Export | ✅ |
149
+
| Timeout | ❌ |
150
+
| Duration | ❌ |
151
+
| Endpoint | ✅ |
152
+
| HTTP Response | ❌ |
153
+
| HTTP Request | ❌ |
154
+
| URI Template | ✅ |
155
+
| Container Lifetime | ❌ |
156
+
| Process Result | ❌ |
157
+
| AsyncAPI Server | ❌ |
158
+
| AsyncAPI Outbound Message | ❌ |
159
+
| AsyncAPI Subscription | ❌ |
160
+
| Workflow Definition Reference | ❌ |
161
+
| Subscription Iterator | ❌ |
162
+
163
+
We love contributions! Our aim is to have a complete implementation to serve as a reference or to become a project on its own to favor the CNCF Ecosystem.
164
+
165
+
If you are willing to help, please [file a sub-task](https://github.com/serverlessworkflow/sdk-go/issues/221) in this EPIC describing what you are planning to work on first.
122
166
123
167
---
124
168
125
169
## Slack Community
126
170
127
-
Join the conversation and connect with other contributors on the [CNCF Slack](https://communityinviter.com/apps/cloud-native/cncf). Find us in the `#serverless-workflow-sdk` channel and say hello! 🙋
171
+
Join our community on the CNCF Slack to collaborate, ask questions, and contribute:
Find us in the `#serverless-workflow-sdk` channel.
128
176
129
177
---
130
178
131
179
## Contributing
132
180
133
-
We welcome contributions to improve this SDK. Please refer to the sections below for guidance on maintaining project standards.
181
+
Your contributions are very welcome!
134
182
135
183
### Code Style
136
184
137
-
-Use `goimports` for import organization.
138
-
-Lint your code with:
185
+
-Format imports with `goimports`.
186
+
-Run static analysis using:
139
187
140
-
```bash
188
+
```shell
141
189
make lint
142
190
```
143
191
144
-
To automatically fix lint issues, use:
192
+
Automatically fix lint issues:
145
193
146
-
```bash
194
+
```shell
147
195
make lint params=--fix
148
196
```
149
197
150
-
Example lint error:
151
-
152
-
```bash
153
-
$ make lint
154
-
make addheaders
155
-
make fmt
156
-
./hack/go-lint.sh
157
-
util/floatstr/floatstr_test.go:19: File is not `goimports`-ed (goimports)
158
-
"k8s.io/apimachinery/pkg/util/yaml"
159
-
make: *** [lint] Error 1
160
-
```
161
-
162
198
### EditorConfig
163
199
164
-
For IntelliJ users, an example `.editorconfig`file is available [here](contrib/intellij.editorconfig). See the [Jetbrains documentation](https://www.jetbrains.com/help/idea/editorconfig.html) for usage details.
200
+
A sample `.editorconfig`for IntelliJ or GoLand users can be found [here](contrib/intellij.editorconfig).
165
201
166
202
### Known Issues
167
203
168
-
#### MacOS Issue:
169
-
170
-
On MacOS, you might encounter the following error:
204
+
-**MacOS Issue**: If you encounter `goimports: can't extract issues from gofmt diff output`, resolve it with:
171
205
172
-
```
173
-
goimports: can't extract issues from gofmt diff output
206
+
```shell
207
+
brew install diffutils
174
208
```
175
209
176
-
To resolve this, install `diffutils`:
210
+
---
177
211
178
-
```bash
179
-
brew install diffutils
180
-
```
212
+
Contributions are greatly appreciated! Check [this EPIC](https://github.com/serverlessworkflow/sdk-go/issues/221) and contribute to completing more features.
0 commit comments