This is a rough draft. Note that we're using the BEAM here because we see this growing significantly and want to leverage inter-node communication on large deployments, among other things. We may also fork and go another direction, using nothing but a small Express server (dropping Elixir/Erlang entirely) to call OpenFn/core (with a directly Javascript interface, rather than the CLI). Ideas, suggestions, questions welcome.
-
mix phx.server
receives receipts and sends 201/202 - timer jobs can keep state (via
Repeater
and a simpleGenServer
) - endpoint gets
URL
andPORT
from.env
-
Dispatcher
picks up config from.env
-
Dispatcher
executes it, given preloaded job, cred, adaptor, and core - write tests for everything
- dashboard for visual performance monitoring
- pass project artifacts during
docker run
-
tmp
files are deleted after job is run - chain jobs together (replicate OpenFn.org "flow")
- bring
core
out of package.json -
Engine
can pipe to stdout - notifications module
- better Logging
- visual interface for application (Phx LiveView?)
- message persistence plugin (enables retries)
- See /project for project artifacts
- See .env.example for a possible configuration
- See Dockerfile to build a microservice
- Build a fully featured documentation site like OpenFn/docs
- Make fully
Instant OpenHIE
compliant (includingkubernetes.yaml
) - Build out
openfn-devtools
to include a script that pulls and configuresmicroservice
based one the current configuration of jobs and credentials indevtools
. - Click a button on OpenFn to prepare a
microservice.zip
which is this repo with a new Dockerfile, based on the current job's configuration at OpenFn.org (we're not just "shelf ready", we're providing the shelf with a "free forever" project on our website.) - An open-source jobs library.
- All jobs that "opt-in" on OpenFn.org are exposed with an open API, which
expects
{adaptor, version, ...helperFunction}
and returns the following—which includes both the jobs in the OpenFn.org database and the jobs in OpenFn/Docs/jobs:
[
{
"expression": "createTEI({})",
"active": true,
"runsLast90": 32178,
"successRateLast90": 0.973,
"source": "openfn.org"
},
{
...job,
"source": "openfn/docs"
}
]
- That API is consumed by the docs site (open source) AND by openfn.org so that it can use used to generate jobs with our free-forever projects.
- In the IDE on OpenFn.org, a user clicks DHIS2, then
createTEI
and it suggests that you look at the top 10 mostsuccessful/active
dhis2:your-version expressions, searchable and copy/pastable. - New jobs are automatically added to the library from OpenFn.org, and
open-source users can submit pull requests to post their jobs to the
OpenFn/docs/
repo. (OpenFn/docs is open source also, btw.)