Skip to content
This repository has been archived by the owner on Dec 13, 2023. It is now read-only.

Documentation Site Update #2989

Merged
merged 27 commits into from
May 17, 2022
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
27 commits
Select commit Hold shift + click to select a range
0270ccd
added versioning page and new codelab
Mar 8, 2022
0da61c1
added star count to homepage, added examples to dowhile and jqtransform
Mar 11, 2022
c4c0f56
updaded beginner tutorial to remove decision task, update images
Mar 14, 2022
1470ede
added rosetta requirement for apple silicon computers
Mar 14, 2022
e18b3af
small beginner change
Mar 14, 2022
19af712
added docs and codelab
Mar 22, 2022
4bad8ca
typo and broken image in subworkflow
Mar 23, 2022
f860213
added page on Dag
Mar 24, 2022
fa6ed64
added page on Dag
Mar 24, 2022
4792ced
removed playground references
Apr 1, 2022
bb1b954
dynamic fork docs improvement
Apr 5, 2022
eba3443
workflow failure improvement
Apr 6, 2022
95b7f9a
Cleanup styles. Fix scrolling in task sidebar. Issue #2877
peterlau Apr 11, 2022
d6e035a
Workflow Workbench
peterlau Apr 11, 2022
82ded15
Fix validation error handling in workflow editor
peterlau Apr 11, 2022
1f27876
wip
peterlau Apr 12, 2022
f135a22
Merge branch 'main' into docs2
dougsillars Apr 13, 2022
f6f71de
Refreshed Documentation Site
peterlau Apr 21, 2022
ea9f4db
Merge main
peterlau Apr 21, 2022
17cbeba
Merge branch 'main' into peterl/docs
peterlau Apr 21, 2022
bcbe162
Add compare panels. Do not use directory urls
peterlau Apr 26, 2022
a372d00
Merge branch 'main' of github.com:Netflix/conductor into peterl/docs
peterlau May 2, 2022
5968cfb
jq docs fix
dougsillars May 2, 2022
7eac226
Merge branch 'docs2' of github.com:dougsillars/conductor into docs2
dougsillars May 2, 2022
8d7a75e
Merge branch 'main' of github.com:Netflix/conductor into peterl/docs
peterlau May 10, 2022
26d7eca
Merge branch 'docs2' of https://github.com/dougsillars/conductor into…
peterlau May 10, 2022
761e5be
Clean up docs. Fix broken links and link to (or delete) inaccessible …
peterlau May 16, 2022
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
50 changes: 1 addition & 49 deletions CODE_OF_CONDUCT.md
Original file line number Diff line number Diff line change
@@ -1,49 +1 @@
# Contributor Covenant Code of Conduct

## Our Pledge

In the interest of fostering an open and welcoming environment, we as contributors and maintainers pledge to making participation in our project and our community a harassment-free experience for everyone, regardless of age, body size, disability, ethnicity, sex characteristics, gender identity and expression, level of experience education, socio-economic status, nationality, personal appearance, race, religion, or sexual identity and orientation.

## Our Standards

Examples of behavior that contributes to creating a positive environment
include:

* Using welcoming and inclusive language
* Being respectful of differing viewpoints and experiences
* Gracefully accepting constructive criticism
* Focusing on what is best for the community
* Showing empathy towards other community members

Examples of unacceptable behavior by participants include:

* The use of sexualized language or imagery and unwelcome sexual attention or advances
* Trolling, insulting/derogatory comments, and personal or political attacks
* Public or private harassment
* Publishing others' private information, such as a physical or electronic address, without explicit permission
* Other conduct which could reasonably be considered inappropriate in a professional setting

## Our Responsibilities

Project maintainers are responsible for clarifying the standards of acceptable behavior and are expected to take appropriate and fair corrective action in response to any instances of unacceptable behavior.

Project maintainers have the right and responsibility to remove, edit, or reject comments, commits, code, wiki edits, issues, and other contributions that are not aligned to this Code of Conduct, or to ban temporarily or permanently any contributor for other behaviors that they deem inappropriate, threatening, offensive, or harmful.

## Scope

This Code of Conduct applies both within project spaces and in public spaces when an individual is representing the project or its community. Examples of representing a project or community include using an official project e-mail address, posting via an official social media account, or acting as an appointed representative at an online or offline event. Representation of a project may be further defined and clarified by project maintainers.

## Enforcement

Instances of abusive, harassing, or otherwise unacceptable behavior may be reported by contacting the project team at netflixoss@netflix.com. All complaints will be reviewed and investigated and will result in a response that is deemed necessary and appropriate to the circumstances. The project team is obligated to maintain confidentiality with regard to the reporter of an incident. Further details of specific enforcement policies may be posted separately.

Project maintainers who do not follow or enforce the Code of Conduct in good faith may face temporary or permanent repercussions as determined by other members of the project's leadership.

## Attribution

This Code of Conduct is adapted from the [Contributor Covenant][homepage], version 1.4, available at https://www.contributor-covenant.org/version/1/4/code-of-conduct.html

[homepage]: https://www.contributor-covenant.org

For answers to common questions about this code of conduct, see
https://www.contributor-covenant.org/faq
[Code of Conduct](docs/docs/resources/code-of-conduct.md)
73 changes: 1 addition & 72 deletions CONTRIBUTING.md
Original file line number Diff line number Diff line change
@@ -1,72 +1 @@
Thanks for your interest in Conductor!
This guide helps to find the most efficient way to contribute, ask questions, and report issues.

Code of conduct
-----

Please review our [code of conduct](CODE_OF_CONDUCT.md).

I have a question!
-----

We have a dedicated [discussion forum](https://github.com/Netflix/conductor/discussions) for asking "how to" questions and to discuss ideas. The discussion forum is a great place to start if you're considering creating a feature request or work on a Pull Request.
*Please do not create issues to ask questions.*

I want to contribute!
------

We welcome Pull Requests and already had many outstanding community contributions!
Creating and reviewing Pull Requests take considerable time. This section helps you set up for a smooth Pull Request experience.

The stable branch is [main](https://github.com/Netflix/conductor/tree/main).

Please create pull requests for your contributions against [main](https://github.com/Netflix/conductor/tree/main) only.

It's a great idea to discuss the new feature you're considering on the [discussion forum](https://github.com/Netflix/conductor/discussions) before writing any code. There are often different ways you can implement a feature. Getting some discussion about different options helps shape the best solution. When starting directly with a Pull Request, there is the risk of having to make considerable changes. Sometimes that is the best approach, though! Showing an idea with code can be very helpful; be aware that it might be throw-away work. Some of our best Pull Requests came out of multiple competing implementations, which helped shape it to perfection.

Also, consider that not every feature is a good fit for Conductor. A few things to consider are:

* Is it increasing complexity for the user, or might it be confusing?
* Does it, in any way, break backward compatibility (this is seldom acceptable)
* Does it require new dependencies (this is rarely acceptable for core modules)
* Should the feature be opt-in or enabled by default. For integration with a new Queuing recipe or persistence module, a separate module which can be optionally enabled is the right choice.
* Should the feature be implemented in the main Conductor repository, or would it be better to set up a separate repository? Especially for integration with other systems, a separate repository is often the right choice because the life-cycle of it will be different.

Of course, for more minor bug fixes and improvements, the process can be more light-weight.

We'll try to be responsive to Pull Requests. Do keep in mind that because of the inherently distributed nature of open source projects, responses to a PR might take some time because of time zones, weekends, and other things we may be working on.

I want to report an issue
-----

If you found a bug, it is much appreciated if you create an issue. Please include clear instructions on how to reproduce the issue, or even better, include a test case on a branch. Make sure to come up with a descriptive title for the issue because this helps while organizing issues.

I have a great idea for a new feature
----
Many features in Conductor have come from ideas from the community. If you think something is missing or certain use cases could be supported better, let us know! You can do so by opening a discussion on the [discussion forum](https://github.com/Netflix/conductor/discussions). Provide as much relevant context to why and when the feature would be helpful. Providing context is especially important for "Support XYZ" issues since we might not be familiar with what "XYZ" is and why it's useful. If you have an idea of how to implement the feature, include that as well.

Once we have decided on a direction, it's time to summarize the idea by creating a new issue.

## Code Style
We use [spotless](https://github.com/diffplug/spotless) to enforce consistent code style for the project, so make sure to run `gradlew spotlessApply` to fix any violations after code changes.

## License

By contributing your code, you agree to license your contribution under the terms of the APLv2: https://github.com/Netflix/conductor/blob/master/LICENSE

All files are released with the Apache 2.0 license, and the following license header will be automatically added to your new file if none present:

```
/**
* Copyright $YEAR Netflix, Inc.
*
* Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with
* the License. You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on
* an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the
* specific language governing permissions and limitations under the License.
*/
```
[Code of Conduct](docs/docs/resources/contributing.md)
75 changes: 1 addition & 74 deletions RELATED.md
Original file line number Diff line number Diff line change
@@ -1,74 +1 @@
# Community projects related to Conductor

## Client SDKs

Further, all of the (non-Java) SDKs have a new GitHub home: the Conductor SDK repository is your new source for Conductor SDKs:

* [Golang](https://github.com/conductor-sdk/conductor-go)
* [Python](https://github.com/conductor-sdk/conductor-python)
* [C#](https://github.com/conductor-sdk/conductor-csharp)
* [Clojure](https://github.com/conductor-sdk/conductor-clojure)

All contributions on the above client sdks can be made on [Conductor SDK](https://github.com/conductor-sdk) repository.

## Microservices operations

* https://github.com/flaviostutz/schellar - Schellar is a scheduler tool for instantiating Conductor workflows from time to time, mostly like a cron job, but with transport of input/output variables between calls.

* https://github.com/flaviostutz/backtor - Backtor is a backup scheduler tool that uses Conductor workers to handle backup operations and decide when to expire backups (ex.: keep backup 3 days, 2 weeks, 2 months, 1 semester)

* https://github.com/cquon/conductor-tools - Conductor CLI for launching workflows, polling tasks, listing running tasks etc


## Conductor deployment

* https://github.com/flaviostutz/conductor-server - Docker container for running Conductor with Prometheus metrics plugin installed and some tweaks to ease provisioning of workflows from json files embedded to the container

* https://github.com/flaviostutz/conductor-ui - Docker container for running Conductor UI so that you can easily scale UI independently

* https://github.com/flaviostutz/elasticblast - "Elasticsearch to Bleve" bridge tailored for running Conductor on top of Bleve indexer. The footprint of Elasticsearch may cost too much for small deployments on Cloud environment.

* https://github.com/mohelsaka/conductor-prometheus-metrics - Conductor plugin for exposing Prometheus metrics over path '/metrics'

## OAuth2.0 Security Configuration
Forked Repository - [Conductor (Secure)](https://github.com/maheshyaddanapudi/conductor/tree/oauth2)

[OAuth2.0 Role Based Security!](https://github.com/maheshyaddanapudi/conductor/blob/oauth2/SECURITY.md) - Spring Security with easy configuration to secure the Conductor server APIs.

Docker image published to [Docker Hub](https://hub.docker.com/repository/docker/conductorboot/server)

## Conductor Worker utilities

* https://github.com/ggrcha/conductor-go-client - Conductor Golang client for writing Workers in Golang

* https://github.com/courosh12/conductor-dotnet-client - Conductor DOTNET client for writing Workers in DOTNET
* https://github.com/TwoUnderscorez/serilog-sinks-conductor-task-log - Serilog sink for sending worker log events to Netflix Conductor

* https://github.com/davidwadden/conductor-workers - Various ready made Conductor workers for common operations on some platforms (ex.: Jira, Github, Concourse)

## Conductor Web UI

* https://github.com/maheshyaddanapudi/conductor-ng-ui - Angular based - Conductor Workflow Management UI

## Conductor Persistence

### Mongo Persistence

* https://github.com/maheshyaddanapudi/conductor/tree/mongo_persistence - With option to use Mongo Database as persistence unit.
* Mongo Persistence / Option to use Mongo Database as persistence unit.
* Docker Compose example with MongoDB Container.

### Oracle Persistence

* https://github.com/maheshyaddanapudi/conductor/tree/oracle_persistence - With option to use Oracle Database as persistence unit.
* Oracle Persistence / Option to use Oracle Database as persistence unit : version > 12.2 - Tested well with 19C
* Docker Compose example with Oracle Container.

## Schedule Conductor Workflow
* https://github.com/jas34/scheduledwf - It solves the following problem statements:
* At times there are use cases in which we need to run some tasks/jobs only at a scheduled time.
* In microservice architecture maintaining schedulers in various microservices is a pain.
* We should have a central dedicate service that can do scheduling for us and provide a trigger to a microservices at expected time.
* It offers an additional module `io.github.jas34.scheduledwf.config.ScheduledWfServerModule` built on the existing core
of conductor and does not require deployment of any additional service.
For more details refer: [Schedule Conductor Workflows](https://jas34.github.io/scheduledwf) and [Capability In Conductor To Schedule Workflows](https://github.com/Netflix/conductor/discussions/2256)
[Related Projects](docs/docs/resources/related.md)
7 changes: 7 additions & 0 deletions docs/custom_theme/main.html
Original file line number Diff line number Diff line change
@@ -0,0 +1,7 @@
{% extends "base.html" %}


{%- block site_name %}
<a href="{{ nav.homepage.url }}" style="border:0;padding:0"> <img style="border-radius:0;width:238px;height:87px;margin:0 0 0 0;border:0;padding:0" class="cornerlogo" src="{{ base_url }}/img/conductor-vector-x.png"/>
</a>
{%- endblock %}
20 changes: 13 additions & 7 deletions docs/docs/apispec.md
Original file line number Diff line number Diff line change
@@ -1,21 +1,23 @@
# API Specification

## Task & Workflow Metadata
| Endpoint | Description | Input |
|------------------------------------------|:---------------------------------|-------------------------------------------------------------|
| `GET /metadata/taskdefs` | Get all the task definitions | n/a |
| `GET /metadata/taskdefs/{taskType}` | Retrieve task definition | Task Name |
| `POST /metadata/taskdefs` | Register new task definitions | List of [Task Definitions](../configuration/taskdef) |
| `PUT /metadata/taskdefs` | Update a task definition | A [Task Definition](../configuration/taskdef) |
| `POST /metadata/taskdefs` | Register new task definitions | List of [Task Definitions](/configuration/taskdef.html) |
| `PUT /metadata/taskdefs` | Update a task definition | A [Task Definition](/configuration/taskdef.html) |
| `DELETE /metadata/taskdefs/{taskType}` | Delete a task definition | Task Name |
|||
| `GET /metadata/workflow` | Get all the workflow definitions | n/a |
| `POST /metadata/workflow` | Register new workflow | [Workflow Definition](../configuration/workflowdef) |
| `PUT /metadata/workflow` | Register/Update new workflows | List of [Workflow Definition](../configuration/workflowdef) |
| `POST /metadata/workflow` | Register new workflow | [Workflow Definition](/configuration/workflowdef.html) |
| `PUT /metadata/workflow` | Register/Update new workflows | List of [Workflow Definition](/configuration/workflowdef.html) |
| `GET /metadata/workflow/{name}?version=` | Get the workflow definitions | workflow name, version (optional) |
|||

## Start A Workflow
### With Input only
See [Start Workflow Request](../gettingstarted/startworkflow/#start-workflow-request).
See [Start Workflow Request](/gettingstarted/startworkflow.html).

#### Output
Id of the workflow (GUID)
Expand Down Expand Up @@ -142,15 +144,17 @@ Optionally updating task's input and output as specified in the payload.
| `GET /tasks/queue/sizes?taskType=&taskType=&taskType` | Return the size of pending tasks for given task types |
|||

## Polling and Update Task
These are critical endpoints used to poll for task and updating the task result by worker.
## Polling, Ack and Update Task
These are critical endpoints used to poll for task, send ack (after polling) and finally updating the task result by worker.


| Endpoint | Description |
|---------------------------------------------------------------------|--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|
| `GET /tasks/poll/{taskType}?workerid=&domain=` | Poll for a task. `workerid` identifies the worker that polled for the job and `domain` allows the poller to poll for a task in a specific domain |
| `GET /tasks/poll/batch/{taskType}?count=&timeout=&workerid=&domain` | Poll for a task in a batch specified by `count`. This is a long poll and the connection will wait until `timeout` or if there is at-least 1 item available, whichever comes first.`workerid` identifies the worker that polled for the job and `domain` allows the poller to poll for a task in a specific domain |
| `POST /tasks` | Update the result of task execution. See the schema below. |


### Schema for updating Task Result
```json
{
Expand All @@ -165,3 +169,5 @@ These are critical endpoints used to poll for task and updating the task result

}
```
!!!Info "Acknowledging tasks after poll"
If the worker fails to ack the task after polling, the task is re-queued and put back in queue and is made available during subsequent poll.
Loading