Versiones de la propuesta de portabilidad
Nuestro compromiso con la portabilidad no ha cambiado a lo largo de la historia de OpenFn, pero la forma de abordarlo y de ponerlo en práctica ha tomado muchas formas.
Este documento sirve de referencia para las versiones anteriores de la especificación.
v3
El estándar v3 se creó para Lightning.
La v3 usa los comandos y protocolos de despliegue antiguos de la CLI. La app y la CLI todavía la admiten por completo, pero se está retirando desde mayo de 2026.
Consulta la especificación v3 aquí
v2
Se usa para exportar desde la plataforma OpenFn original, que ya se retiró.
jobs:
job-1:
expression: >
registerPatient({
patient-id: state.data.id,
dob: state.data.birth
})
adaptor: '@openfn/language-openmrs'
trigger: trigger-1
credential: my-secret-credential
recurring-job:
expression: >
fn(state => {
console.log("Hi there!")
return state;
})
adaptor: '@openfn/language-common'
trigger: every-minute
flow-job:
expression: >
fn(state => {
state.data.number = state.data.number * 3
return state;
})
adaptor: '@openfn/language-common'
trigger: after-j1
catch-job:
expression: >
fn(state => {
state.message = "handled it."
return state;
})
adaptor: '@openfn/language-common'
trigger: j1-fails
triggers:
trigger-1:
criteria: '{"number":2}'
every-minute:
cron: '* * * * *'
after-j1:
success: job-1
j1-fails:
failure: job-1
# Note that credential keys get copied, but values must be manually entered
# after the export is completed.
credentials:
my-secret-credential:
username: '******'
password: '******'
v1
Propuesta inicial de portabilidad
const project = {
async: true,
triggers: {
uniqueTriggerId: {
// trigger properties
},
otherTrigger: {
// other trigger properties
},
},
credentials: {
// for now, credentials will not be synced //
// secret1: {
// username: 'mamadou',
// pass: 'shhh',
},
staticData: {
// static objects that can be accessed from any job
},
jobs: {
payHealthWorker: { trigger: 'otherTrigger' },
syncToSalesforce: {
expression: 'uri://github.com/jobs/expresion.js',
trigger: 'uniqueTriggerId',
credential: 'secret1',
},
},
};