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)
102
+
}
103
+
```
120
104
121
-
Support for building workflows programmatically is planned for future releases. Stay tuned for updates in upcoming versions.
105
+
### Implementation Roadmap
106
+
107
+
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).
108
+
109
+
| Feature | State |
110
+
| ----------- | --------------- |
111
+
| Workflow Document | ✅ |
112
+
| Workflow Use | 🟡 |
113
+
| Workflow Schedule | ❌ |
114
+
| Task Call | ❌ |
115
+
| Task Do | ✅ |
116
+
| Task Emit | ❌ |
117
+
| Task For | ❌ |
118
+
| Task Fork | ❌ |
119
+
| Task Listen | ❌ |
120
+
| Task Raise | ✅ |
121
+
| Task Run | ❌ |
122
+
| Task Set | ✅ |
123
+
| Task Switch | ❌ |
124
+
| Task Try | ❌ |
125
+
| Task Wait | ❌ |
126
+
| Lifecycle Events | 🟡 |
127
+
| External Resource | ❌ |
128
+
| Authentication | ❌ |
129
+
| Catalog | ❌ |
130
+
| Extension | ❌ |
131
+
| Error | ✅ |
132
+
| Event Consumption Strategies | ❌ |
133
+
| Retry | ❌ |
134
+
| Input | ✅ |
135
+
| Output | ✅ |
136
+
| Export | ✅ |
137
+
| Timeout | ❌ |
138
+
| Duration | ❌ |
139
+
| Endpoint | ✅ |
140
+
| HTTP Response | ❌ |
141
+
| HTTP Request | ❌ |
142
+
| URI Template | ✅ |
143
+
| Container Lifetime | ❌ |
144
+
| Process Result | ❌ |
145
+
| AsyncAPI Server | ❌ |
146
+
| AsyncAPI Outbound Message | ❌ |
147
+
| AsyncAPI Subscription | ❌ |
148
+
| Workflow Definition Reference | ❌ |
149
+
| Subscription Iterator | ❌ |
150
+
151
+
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.
152
+
153
+
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
154
123
155
---
124
156
125
157
## Slack Community
126
158
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! 🙋
159
+
Join our community on the CNCF Slack to collaborate, ask questions, and contribute:
Find us in the `#serverless-workflow-sdk` channel.
128
164
129
165
---
130
166
131
167
## Contributing
132
168
133
-
We welcome contributions to improve this SDK. Please refer to the sections below for guidance on maintaining project standards.
169
+
Your contributions are very welcome!
134
170
135
171
### Code Style
136
172
137
-
-Use `goimports` for import organization.
138
-
-Lint your code with:
173
+
-Format imports with `goimports`.
174
+
-Run static analysis using:
139
175
140
-
```bash
176
+
```shell
141
177
make lint
142
178
```
143
179
144
-
To automatically fix lint issues, use:
180
+
Automatically fix lint issues:
145
181
146
-
```bash
182
+
```shell
147
183
make lint params=--fix
148
184
```
149
185
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
186
### EditorConfig
163
187
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.
188
+
A sample `.editorconfig`for IntelliJ or GoLand users can be found [here](contrib/intellij.editorconfig).
165
189
166
190
### Known Issues
167
191
168
-
#### MacOS Issue:
169
-
170
-
On MacOS, you might encounter the following error:
192
+
-**MacOS Issue**: If you encounter `goimports: can't extract issues from gofmt diff output`, resolve it with:
171
193
172
-
```
173
-
goimports: can't extract issues from gofmt diff output
194
+
```shell
195
+
brew install diffutils
174
196
```
175
197
176
-
To resolve this, install `diffutils`:
198
+
---
177
199
178
-
```bash
179
-
brew install diffutils
180
-
```
200
+
Contributions are greatly appreciated! Check [this EPIC](https://github.com/serverlessworkflow/sdk-go/issues/221) and contribute to completing more features.
0 commit comments