@5minds/processcube_app_sdk 5.1.0-develop-6041a0-lran7ltw → 5.1.0-develop-84d1e8-lrgowpcc

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@5minds/processcube_app_sdk",
3
- "version": "5.1.0-develop-6041a0-lran7ltw",
3
+ "version": "5.1.0-develop-84d1e8-lrgowpcc",
4
4
  "description": "The SDK for ProcessCube Apps",
5
5
  "type": "module",
6
6
  "main": "common/index.cjs",
@@ -76,8 +76,8 @@
76
76
  "react": ">=18.0.0"
77
77
  },
78
78
  "dependencies": {
79
- "@5minds/processcube_engine_client": "2023-2",
80
- "@5minds/processcube_engine_sdk": "2023-2",
79
+ "@5minds/processcube_engine_client": "2024-1",
80
+ "@5minds/processcube_engine_sdk": "2024-1",
81
81
  "chokidar": "^3.5.3",
82
82
  "client-only": "^0.0.1",
83
83
  "esbuild": "^0.19.3",
package/server/index.cjs CHANGED
@@ -1 +1 @@
1
- "use strict";var N=Object.defineProperty;var z=Object.getOwnPropertyDescriptor;var Q=Object.getOwnPropertyNames;var ee=Object.prototype.hasOwnProperty;var te=(e,t)=>{for(var s in t)N(e,s,{get:t[s],enumerable:!0})},se=(e,t,s,r)=>{if(t&&typeof t=="object"||typeof t=="function")for(let n of Q(t))!ee.call(e,n)&&n!==s&&N(e,n,{get:()=>t[n],enumerable:!(r=z(t,n))||r.enumerable});return e};var re=e=>se(N({},"__esModule",{value:!0}),e);var Pe={};te(Pe,{finishUserTask:()=>Re,finishUserTaskAndGetNext:()=>me,getActiveProcessInstances:()=>Ie,getAssignedUserTasksByIdentity:()=>xe,getEngineClient:()=>fe,getIdentity:()=>ke,getReservedUserTasksByIdentity:()=>Ce,getUserTasks:()=>H,getWaitingUserTaskByFlowNodeInstanceId:()=>j,getWaitingUserTasks:()=>Ee,getWaitingUserTasksByCorrelationId:()=>ye,getWaitingUserTasksByFlowNodeId:()=>we,getWaitingUserTasksByProcessInstanceId:()=>ge,navigateToUrl:()=>Se,startProcess:()=>Ne,waitForUserTask:()=>Te,withApplicationSdk:()=>_e});module.exports=re(Pe);var dt=require("only-server");var F=require("@5minds/processcube_engine_sdk"),b=require("@5minds/processcube_engine_client"),i=require("node:path"),O=require("esbuild"),T=require("node:fs"),v=require("openid-client"),L=require("jwt-decode"),D=require("chokidar");var A=require("@5minds/processcube_engine_client"),R=process.env.PROCESSCUBE_ENGINE_URL??"http://localhost:10560",o=new A.EngineClient(R);var ne={token:"ZHVtbXlfdG9rZW4=",userId:"dummy_token"},oe=.85,E=["external_task.ts","external_task.js"],c=new F.Logger("processcube_app_sdk:external_task_adapter"),w=process.env.PROCESSCUBE_AUTHORITY_URL!==void 0,f={};if(w&&(!process.env.PROCESSCUBE_EXTERNAL_TASK_WORKER_CLIENT_ID||!process.env.PROCESSCUBE_EXTERNAL_TASK_WORKER_CLIENT_SECRET)){let e=new Error("Required environment variables PROCESSCUBE_EXTERNAL_TASK_WORKER_CLIENT_ID and PROCESSCUBE_EXTERNAL_TASK_WORKER_CLIENT_SECRET are missing. For help, please refer to our documentation on environment variables at: https://processcube.io/docs/app-sdk/samples/external-task-adapter#authority");throw c.error("Required environment variables PROCESSCUBE_EXTERNAL_TASK_WORKER_CLIENT_ID and PROCESSCUBE_EXTERNAL_TASK_WORKER_CLIENT_SECRET are missing",{err:e}),e}async function W(e){if(e&&!(0,T.existsSync)(e))throw new Error(`Invalid customExternalTasksDirPath. The given path '${e}' does not exist`);let t=ue(e);(0,D.watch)(t).on("add",async s=>{if(!E.includes((0,i.basename)(s)))return;await M(s,t);let r=(0,i.dirname)(s),n=(0,i.relative)(t,r),a=g(n);c.info(`Started external task ${f[s].workerId} for topic ${a}`)}).on("change",async s=>{if(!E.includes((0,i.basename)(s)))return;await ae(s,t);let r=(0,i.dirname)(s),n=(0,i.relative)(t,r),a=g(n);c.info(`Restarted external task ${f[s].workerId} for topic ${a}`)}).on("unlink",async s=>{if(!E.includes((0,i.basename)(s)))return;B(s);let r=(0,i.dirname)(s),n=(0,i.relative)(t,r),a=g(n);c.info(`Stopped external task ${f[s].workerId} for topic '${a}'`,{reason:`External Task for topic '${a}' was removed`,workerId:f[s].workerId,topic:a}),delete f[s]}).on("error",s=>c.info(`Watcher error: ${s}`))}async function M(e,t,s){let r=(0,i.dirname)(e);if(!ie(r)){c.error(`Could not find external task file in directory '${r}'`);return}let a=await ce(e),l=await de(a,e);if(l.default===void 0){c.info(`External task file recognized at ${e}. Please export a default handler function. For more information see https://processcube.io/docs/app-sdk/samples/external-task-adapter#external-tasks-entwickeln`);return}let C=await K(),m=q(C),u=(0,i.relative)(t,r),x=g(u),_=l.default,S={identity:m,...s,...l?.config},k=new b.ExternalTaskWorker(R,x,_,S);k.onWorkerError((I,U,Z)=>{c.error(`Intercepted "${I}"-type error: ${U.message}`,{err:U,type:I,externalTask:Z})}),k.start(),await P(C,k),f[e]=k}async function ae(e,t){let s=f[e]?.workerId;B(e),await M(e,t,{workerId:s})}function B(e){let t=f[e];t&&(t.stop(),t.dispose())}async function ie(e){let s=(await T.promises.readdir(e)).filter(r=>E.includes(r));if(s.length===0)return null;if(s.length>1)throw new Error(`Found more than one external task file in directory '${e}'`);return s[0]}async function K(){if(!w)return null;let e=await v.Issuer.discover(process.env.PROCESSCUBE_AUTHORITY_URL);return await new e.Client({client_id:process.env.PROCESSCUBE_EXTERNAL_TASK_WORKER_CLIENT_ID,client_secret:process.env.PROCESSCUBE_EXTERNAL_TASK_WORKER_CLIENT_SECRET}).grant({grant_type:"client_credentials",scope:"engine_etw"})}function q(e){if(!w||e===null)return ne;let t=e.access_token,s=(0,L.jwtDecode)(t);return{token:e.access_token,userId:s.sub}}async function P(e,t,s=5){try{if(!w||e===null||!t.pollingIsActive)return;let n=await le(e)*oe*1e3;setTimeout(async()=>{if(!t.pollingIsActive)return;let a=await K(),l=q(a);t.identity=l,await P(a,t)},n)}catch(r){if(s===0)throw r;c.error(`Could not refresh identity for external task worker ${t.workerId}`,{err:r,workerId:t.workerId,retryCount:s});let n=2*1e3;setTimeout(async()=>await P(e,t,s-1),n)}}async function ce(e){let t=await(0,O.build)({entryPoints:[e],write:!1,bundle:!0,platform:"node",target:"node18",format:"cjs"});if(t.errors.length>0)throw c.error(`Could not transpile file at '${e}'`,{errors:t.errors}),new Error(`Could not transpile file at '${e}'`);return t.warnings.length>0&&c.warn(`Transpiled file at '${e}' with warnings`,{warnings:t.warnings}),t.outputFiles[0].text}async function de(e,t){try{var s=module.constructor,r=new s;return r._compile(e,t),r.exports}catch(n){throw c.error("Could not require module from string",{err:n}),n}}async function le(e){let t=e.expires_in;if(!t&&e.expires_at&&(t=Math.floor(e.expires_at-Date.now()/1e3)),t===void 0)throw new Error("Could not determine the time until the access token for external task workers expires");return t}function g(e){return e.replace(/^\.\/+|\([^)]+\)|^\/*|\/*$/g,"").replace(/[\/]{2,}/g,"/")}function ue(e){let t,s=[e,(0,i.join)(process.cwd(),"app"),(0,i.join)(process.cwd(),"src","app")];for(let r of s)if(r&&(0,T.existsSync)(r)){t=r;break}if(!t)throw new Error("Could not find external tasks directory");return t}function fe(){return o}var p=require("next/headers"),X=require("next/dist/compiled/@edge-runtime/cookies"),h=require("next-auth/jwt"),pe=process.env.NEXTAUTH_URL?.startsWith("https://"),$=`${pe?"__Secure-":""}next-auth.session-token`;async function ke(){let e=await(0,h.getToken)({req:{cookies:(0,p.cookies)(),headers:(0,p.headers)()}});if(e?.expiresAt&&Date.now()>=e.expiresAt*1e3){let s=await fetch(`${process.env.NEXTAUTH_URL}/api/auth/session`,{method:"GET",headers:{"Content-Type":"application/json",cookie:(0,p.cookies)().toString()}}),r=new X.ResponseCookies(s.headers),n=r.get($);if(n){let a=!1;try{(0,p.cookies)().set($,n.value,{...n})}catch{a=!0}if(e=await(0,h.getToken)({req:{cookies:a?r:(0,p.cookies)(),headers:(0,p.headers)()}}),e?.error)throw e.error}}if(!e?.accessToken||!e?.sub)throw new Error("AccessToken or Sub could not be determined!");return{token:e?.accessToken,userId:e?.sub}}var G=require("@5minds/processcube_engine_client");async function Ie(e){return await o.processInstances.query({...e?.query,state:G.DataModels.ProcessInstances.ProcessInstanceState.running},e?.options)}var d=require("@5minds/processcube_engine_client");async function Te(e={},t){let{processInstanceId:s,flowNodeId:r}=e;return new Promise(async(n,a)=>{let l=await o.userTasks.onUserTaskWaiting(async u=>{let x=u.flowNodeInstanceId===void 0,_=s!==void 0&&u.processInstanceId!==s,S=r!==void 0&&u.flowNodeId!==r,k=s!==void 0&&r!==void 0&&u.processInstanceId!==s&&u.flowNodeId!==r;if(x||_||S||k)return;let I=await j(u.flowNodeInstanceId,{identity:t});return o.notification.removeSubscription(l,t),I===null?a(new Error(`UserTask with instance ID "${u.flowNodeInstanceId}" does not exist.`)):n(I)},{identity:t}),m=(await H({processInstanceId:s,flowNodeId:r,state:d.DataModels.FlowNodeInstances.FlowNodeInstanceState.suspended},{identity:t})).userTasks[0];m&&(o.notification.removeSubscription(l,t),n(m))})}async function me(e,t,s,r){await o.userTasks.finishUserTask(e,t,r);let n=await o.userTasks.query({flowNodeId:s,state:d.DataModels.FlowNodeInstances.FlowNodeInstanceState.suspended},{identity:r});return n.userTasks.length===0?null:n.userTasks[0]}async function H(...e){return await o.userTasks.query(...e)}async function Ee(e){return await o.userTasks.query({state:d.DataModels.FlowNodeInstances.FlowNodeInstanceState.suspended},e)}async function ge(e,t){return await o.userTasks.query({processInstanceId:e,state:d.DataModels.FlowNodeInstances.FlowNodeInstanceState.suspended},t)}async function we(e,t){return await o.userTasks.query({flowNodeId:e,state:d.DataModels.FlowNodeInstances.FlowNodeInstanceState.suspended},t)}async function j(e,t){let s=await o.userTasks.query({flowNodeInstanceId:e,state:d.DataModels.FlowNodeInstances.FlowNodeInstanceState.suspended},{...t,limit:1});return s.userTasks.length===0?null:s.userTasks[0]}async function ye(e,t){return await o.userTasks.query({correlationId:e,state:d.DataModels.FlowNodeInstances.FlowNodeInstanceState.suspended},t)}async function Ce(e,t){let s=await o.userTasks.query({state:d.DataModels.FlowNodeInstances.FlowNodeInstanceState.suspended},{identity:e,...t}),r=s.userTasks.filter(n=>n.actualOwnerId===e.userId);return s.userTasks=r,s}async function xe(e,t){let s=await o.userTasks.query({state:d.DataModels.FlowNodeInstances.FlowNodeInstanceState.suspended},{identity:e,...t}),r=s.userTasks.filter(n=>n.assignedUserIds?.includes(e.userId));return s.userTasks=r,s}var y=require("next/dist/shared/lib/constants");var Y=!1;function _e(e={}){let{applicationSdk:t,...s}=e;return async(r,n)=>{let a=r===y.PHASE_DEVELOPMENT_SERVER||r===y.PHASE_PRODUCTION_SERVER;return t?.useExternalTasks&&a&&!Y&&(Y=!0,await W(t?.customExternalTasksDirPath)),s}}var V=require("next/cache"),J=require("next/navigation");function Se(e){(0,V.revalidatePath)(e),(0,J.redirect)(e)}async function Ne(...e){return await o.processModels.startProcessInstance(...e)}async function Re(...e){await o.userTasks.finishUserTask(...e)}0&&(module.exports={finishUserTask,finishUserTaskAndGetNext,getActiveProcessInstances,getAssignedUserTasksByIdentity,getEngineClient,getIdentity,getReservedUserTasksByIdentity,getUserTasks,getWaitingUserTaskByFlowNodeInstanceId,getWaitingUserTasks,getWaitingUserTasksByCorrelationId,getWaitingUserTasksByFlowNodeId,getWaitingUserTasksByProcessInstanceId,navigateToUrl,startProcess,waitForUserTask,withApplicationSdk});
1
+ "use strict";var N=Object.defineProperty;var z=Object.getOwnPropertyDescriptor;var Q=Object.getOwnPropertyNames;var ee=Object.prototype.hasOwnProperty;var te=(e,t)=>{for(var s in t)N(e,s,{get:t[s],enumerable:!0})},se=(e,t,s,r)=>{if(t&&typeof t=="object"||typeof t=="function")for(let n of Q(t))!ee.call(e,n)&&n!==s&&N(e,n,{get:()=>t[n],enumerable:!(r=z(t,n))||r.enumerable});return e};var re=e=>se(N({},"__esModule",{value:!0}),e);var Pe={};te(Pe,{finishUserTask:()=>Re,finishUserTaskAndGetNext:()=>me,getActiveProcessInstances:()=>Ie,getAssignedUserTasksByIdentity:()=>xe,getEngineClient:()=>fe,getIdentity:()=>ke,getReservedUserTasksByIdentity:()=>Ce,getUserTasks:()=>H,getWaitingUserTaskByFlowNodeInstanceId:()=>j,getWaitingUserTasks:()=>Ee,getWaitingUserTasksByCorrelationId:()=>ye,getWaitingUserTasksByFlowNodeId:()=>we,getWaitingUserTasksByProcessInstanceId:()=>ge,navigateToUrl:()=>Se,startProcess:()=>Ne,waitForUserTask:()=>Te,withApplicationSdk:()=>_e});module.exports=re(Pe);var lt=require("only-server");var F=require("@5minds/processcube_engine_sdk"),b=require("@5minds/processcube_engine_client"),i=require("node:path"),v=require("esbuild"),m=require("node:fs"),O=require("openid-client"),L=require("jwt-decode"),D=require("chokidar");var A=require("@5minds/processcube_engine_client"),R=process.env.PROCESSCUBE_ENGINE_URL??"http://localhost:10560",o=new A.EngineClient(R);var ne={token:"ZHVtbXlfdG9rZW4=",userId:"dummy_token"},oe=.85,w=["external_task.ts","external_task.js"],c=new F.Logger("processcube_app_sdk:external_task_adapter"),C=process.env.PROCESSCUBE_AUTHORITY_URL!==void 0,f={};if(C&&(!process.env.PROCESSCUBE_EXTERNAL_TASK_WORKER_CLIENT_ID||!process.env.PROCESSCUBE_EXTERNAL_TASK_WORKER_CLIENT_SECRET)){let e=new Error("Required environment variables PROCESSCUBE_EXTERNAL_TASK_WORKER_CLIENT_ID and PROCESSCUBE_EXTERNAL_TASK_WORKER_CLIENT_SECRET are missing. For help, please refer to our documentation on environment variables at: https://processcube.io/docs/app-sdk/samples/external-task-adapter#authority");throw c.error("Required environment variables PROCESSCUBE_EXTERNAL_TASK_WORKER_CLIENT_ID and PROCESSCUBE_EXTERNAL_TASK_WORKER_CLIENT_SECRET are missing",{err:e}),e}async function W(e){if(e&&!(0,m.existsSync)(e))throw new Error(`Invalid customExternalTasksDirPath. The given path '${e}' does not exist`);let t=ue(e);(0,D.watch)(t).on("add",async s=>{if(!w.includes((0,i.basename)(s)))return;await M(s,t);let r=(0,i.dirname)(s),n=(0,i.relative)(t,r),a=y(n);c.info(`Started external task ${f[s].workerId} for topic ${a}`)}).on("change",async s=>{if(!w.includes((0,i.basename)(s)))return;await ae(s,t);let r=(0,i.dirname)(s),n=(0,i.relative)(t,r),a=y(n);c.info(`Restarted external task ${f[s].workerId} for topic ${a}`)}).on("unlink",async s=>{if(!w.includes((0,i.basename)(s)))return;B(s);let r=(0,i.dirname)(s),n=(0,i.relative)(t,r),a=y(n);c.info(`Stopped external task ${f[s].workerId} for topic '${a}'`,{reason:`External Task for topic '${a}' was removed`,workerId:f[s].workerId,topic:a}),delete f[s]}).on("error",s=>c.info(`Watcher error: ${s}`))}async function M(e,t,s){let r=(0,i.dirname)(e);if(!ie(r)){c.error(`Could not find external task file in directory '${r}'`);return}let a=await ce(e),d=await le(a,e);if(d.default===void 0){c.info(`External task file recognized at ${e}. Please export a default handler function. For more information see https://processcube.io/docs/app-sdk/samples/external-task-adapter#external-tasks-entwickeln`);return}let I=await K(),U=q(I),E=(0,i.relative)(t,r),u=y(E),_=d.default,S={identity:U,...s,...d?.config},k=new b.ExternalTaskWorker(R,u,_,S);k.onWorkerError((g,T,Z)=>{c.error(`Intercepted "${g}"-type error: ${T.message}`,{err:T,type:g,externalTask:Z})}),k.start(),await P(I,k),f[e]=k}async function ae(e,t){let s=f[e]?.workerId;B(e),await M(e,t,{workerId:s})}function B(e){let t=f[e];t&&(t.stop(),t.dispose())}async function ie(e){let s=(await m.promises.readdir(e)).filter(r=>w.includes(r));if(s.length===0)return null;if(s.length>1)throw new Error(`Found more than one external task file in directory '${e}'`);return s[0]}async function K(){if(!C)return null;let e=await O.Issuer.discover(process.env.PROCESSCUBE_AUTHORITY_URL);return await new e.Client({client_id:process.env.PROCESSCUBE_EXTERNAL_TASK_WORKER_CLIENT_ID,client_secret:process.env.PROCESSCUBE_EXTERNAL_TASK_WORKER_CLIENT_SECRET}).grant({grant_type:"client_credentials",scope:"engine_etw"})}function q(e){if(!C||e===null)return ne;let t=e.access_token,s=(0,L.jwtDecode)(t);return{token:e.access_token,userId:s.sub}}async function P(e,t,s=5){try{if(!C||e===null||!t.pollingIsActive)return;let n=await de(e)*oe*1e3;setTimeout(async()=>{if(!t.pollingIsActive)return;let a=await K(),d=q(a);t.identity=d,await P(a,t)},n)}catch(r){if(s===0)throw r;c.error(`Could not refresh identity for external task worker ${t.workerId}`,{err:r,workerId:t.workerId,retryCount:s});let n=2*1e3;setTimeout(async()=>await P(e,t,s-1),n)}}async function ce(e){let t=await(0,v.build)({entryPoints:[e],write:!1,bundle:!0,platform:"node",target:"node18",format:"cjs"});if(t.errors.length>0)throw c.error(`Could not transpile file at '${e}'`,{errors:t.errors}),new Error(`Could not transpile file at '${e}'`);return t.warnings.length>0&&c.warn(`Transpiled file at '${e}' with warnings`,{warnings:t.warnings}),t.outputFiles[0].text}async function le(e,t){try{var s=module.constructor,r=new s;return r._compile(e,t),r.exports}catch(n){throw c.error("Could not require module from string",{err:n}),n}}async function de(e){let t=e.expires_in;if(!t&&e.expires_at&&(t=Math.floor(e.expires_at-Date.now()/1e3)),t===void 0)throw new Error("Could not determine the time until the access token for external task workers expires");return t}function y(e){return e.replace(/^\.\/+|\([^)]+\)|^\/*|\/*$/g,"").replace(/[\/]{2,}/g,"/")}function ue(e){let t,s=[e,(0,i.join)(process.cwd(),"app"),(0,i.join)(process.cwd(),"src","app")];for(let r of s)if(r&&(0,m.existsSync)(r)){t=r;break}if(!t)throw new Error("Could not find external tasks directory");return t}function fe(){return o}var p=require("next/headers"),X=require("next/dist/compiled/@edge-runtime/cookies"),h=require("next-auth/jwt"),pe=process.env.NEXTAUTH_URL?.startsWith("https://"),$=`${pe?"__Secure-":""}next-auth.session-token`;async function ke(){let e=await(0,h.getToken)({req:{cookies:(0,p.cookies)(),headers:(0,p.headers)()}});if(e?.expiresAt&&Date.now()>=e.expiresAt*1e3){let s=await fetch(`${process.env.NEXTAUTH_URL}/api/auth/session`,{method:"GET",headers:{"Content-Type":"application/json",cookie:(0,p.cookies)().toString()}}),r=new X.ResponseCookies(s.headers),n=r.get($);if(n){let a=!1;try{(0,p.cookies)().set($,n.value,{...n})}catch{a=!0}if(e=await(0,h.getToken)({req:{cookies:a?r:(0,p.cookies)(),headers:(0,p.headers)()}}),e?.error)throw e.error}}if(!e?.accessToken||!e?.sub)throw new Error("AccessToken or Sub could not be determined!");return{token:e?.accessToken,userId:e?.sub}}var G=require("@5minds/processcube_engine_client");async function Ie(e){return await o.processInstances.query({...e?.query,state:G.DataModels.ProcessInstances.ProcessInstanceState.running},e?.options)}var l=require("@5minds/processcube_engine_client");async function Te(e={},t){let{correlationId:s,processInstanceId:r,flowNodeId:n}=e;return new Promise(async(a,d)=>{let I=await o.userTasks.onUserTaskWaiting(async u=>{let _=s!==void 0&&u.correlationId!==s,S=u.flowNodeInstanceId===void 0,k=r!==void 0&&u.processInstanceId!==r,g=n!==void 0&&u.flowNodeId!==n;if(_||S||k||g)return;let T=await j(u.flowNodeInstanceId,{identity:t});return o.notification.removeSubscription(I,t),T===null?d(new Error(`UserTask with instance ID "${u.flowNodeInstanceId}" does not exist.`)):a(T)},{identity:t}),E=(await H({correlationId:s,processInstanceId:r,flowNodeId:n,state:l.DataModels.FlowNodeInstances.FlowNodeInstanceState.suspended},{identity:t})).userTasks[0];E&&(o.notification.removeSubscription(I,t),a(E))})}async function me(e,t,s,r){await o.userTasks.finishUserTask(e,t,r);let n=await o.userTasks.query({flowNodeId:s,state:l.DataModels.FlowNodeInstances.FlowNodeInstanceState.suspended},{identity:r});return n.userTasks.length===0?null:n.userTasks[0]}async function H(...e){return await o.userTasks.query(...e)}async function Ee(e){return await o.userTasks.query({state:l.DataModels.FlowNodeInstances.FlowNodeInstanceState.suspended},e)}async function ge(e,t){return await o.userTasks.query({processInstanceId:e,state:l.DataModels.FlowNodeInstances.FlowNodeInstanceState.suspended},t)}async function we(e,t){return await o.userTasks.query({flowNodeId:e,state:l.DataModels.FlowNodeInstances.FlowNodeInstanceState.suspended},t)}async function j(e,t){let s=await o.userTasks.query({flowNodeInstanceId:e,state:l.DataModels.FlowNodeInstances.FlowNodeInstanceState.suspended},{...t,limit:1});return s.userTasks.length===0?null:s.userTasks[0]}async function ye(e,t){return await o.userTasks.query({correlationId:e,state:l.DataModels.FlowNodeInstances.FlowNodeInstanceState.suspended},t)}async function Ce(e,t){let s=await o.userTasks.query({state:l.DataModels.FlowNodeInstances.FlowNodeInstanceState.suspended},{identity:e,...t}),r=s.userTasks.filter(n=>n.actualOwnerId===e.userId);return s.userTasks=r,s}async function xe(e,t){let s=await o.userTasks.query({state:l.DataModels.FlowNodeInstances.FlowNodeInstanceState.suspended},{identity:e,...t}),r=s.userTasks.filter(n=>n.assignedUserIds?.includes(e.userId));return s.userTasks=r,s}var x=require("next/dist/shared/lib/constants");var Y=!1;function _e(e={}){let{applicationSdk:t,...s}=e;return async(r,n)=>{let a=r===x.PHASE_DEVELOPMENT_SERVER||r===x.PHASE_PRODUCTION_SERVER;return t?.useExternalTasks&&a&&!Y&&(Y=!0,await W(t?.customExternalTasksDirPath)),s}}var V=require("next/cache"),J=require("next/navigation");function Se(e){(0,V.revalidatePath)(e),(0,J.redirect)(e)}async function Ne(...e){return await o.processModels.startProcessInstance(...e)}async function Re(...e){await o.userTasks.finishUserTask(...e)}0&&(module.exports={finishUserTask,finishUserTaskAndGetNext,getActiveProcessInstances,getAssignedUserTasksByIdentity,getEngineClient,getIdentity,getReservedUserTasksByIdentity,getUserTasks,getWaitingUserTaskByFlowNodeInstanceId,getWaitingUserTasks,getWaitingUserTasksByCorrelationId,getWaitingUserTasksByFlowNodeId,getWaitingUserTasksByProcessInstanceId,navigateToUrl,startProcess,waitForUserTask,withApplicationSdk});
package/server/index.mjs CHANGED
@@ -1 +1 @@
1
- import"only-server";import{Logger as q}from"@5minds/processcube_engine_sdk";import{ExternalTaskWorker as $}from"@5minds/processcube_engine_client";import{basename as N,dirname as I,join as h,relative as T}from"node:path";import{build as X}from"esbuild";import{promises as G,existsSync as U}from"node:fs";import{Issuer as H}from"openid-client";import{jwtDecode as j}from"jwt-decode";import{watch as Y}from"chokidar";import{EngineClient as K}from"@5minds/processcube_engine_client";var S=process.env.PROCESSCUBE_ENGINE_URL??"http://localhost:10560",o=new K(S);var V={token:"ZHVtbXlfdG9rZW4=",userId:"dummy_token"},J=.85,m=["external_task.ts","external_task.js"],i=new q("processcube_app_sdk:external_task_adapter"),g=process.env.PROCESSCUBE_AUTHORITY_URL!==void 0,u={};if(g&&(!process.env.PROCESSCUBE_EXTERNAL_TASK_WORKER_CLIENT_ID||!process.env.PROCESSCUBE_EXTERNAL_TASK_WORKER_CLIENT_SECRET)){let e=new Error("Required environment variables PROCESSCUBE_EXTERNAL_TASK_WORKER_CLIENT_ID and PROCESSCUBE_EXTERNAL_TASK_WORKER_CLIENT_SECRET are missing. For help, please refer to our documentation on environment variables at: https://processcube.io/docs/app-sdk/samples/external-task-adapter#authority");throw i.error("Required environment variables PROCESSCUBE_EXTERNAL_TASK_WORKER_CLIENT_ID and PROCESSCUBE_EXTERNAL_TASK_WORKER_CLIENT_SECRET are missing",{err:e}),e}async function A(e){if(e&&!U(e))throw new Error(`Invalid customExternalTasksDirPath. The given path '${e}' does not exist`);let t=se(e);Y(t).on("add",async s=>{if(!m.includes(N(s)))return;await F(s,t);let r=I(s),n=T(t,r),a=E(n);i.info(`Started external task ${u[s].workerId} for topic ${a}`)}).on("change",async s=>{if(!m.includes(N(s)))return;await Z(s,t);let r=I(s),n=T(t,r),a=E(n);i.info(`Restarted external task ${u[s].workerId} for topic ${a}`)}).on("unlink",async s=>{if(!m.includes(N(s)))return;b(s);let r=I(s),n=T(t,r),a=E(n);i.info(`Stopped external task ${u[s].workerId} for topic '${a}'`,{reason:`External Task for topic '${a}' was removed`,workerId:u[s].workerId,topic:a}),delete u[s]}).on("error",s=>i.info(`Watcher error: ${s}`))}async function F(e,t,s){let r=I(e);if(!z(r)){i.error(`Could not find external task file in directory '${r}'`);return}let a=await Q(e),c=await ee(a,e);if(c.default===void 0){i.info(`External task file recognized at ${e}. Please export a default handler function. For more information see https://processcube.io/docs/app-sdk/samples/external-task-adapter#external-tasks-entwickeln`);return}let y=await O(),k=v(y),d=T(t,r),C=E(d),x=c.default,_={identity:k,...s,...c?.config},f=new $(S,C,x,_);f.onWorkerError((p,P,B)=>{i.error(`Intercepted "${p}"-type error: ${P.message}`,{err:P,type:p,externalTask:B})}),f.start(),await R(y,f),u[e]=f}async function Z(e,t){let s=u[e]?.workerId;b(e),await F(e,t,{workerId:s})}function b(e){let t=u[e];t&&(t.stop(),t.dispose())}async function z(e){let s=(await G.readdir(e)).filter(r=>m.includes(r));if(s.length===0)return null;if(s.length>1)throw new Error(`Found more than one external task file in directory '${e}'`);return s[0]}async function O(){if(!g)return null;let e=await H.discover(process.env.PROCESSCUBE_AUTHORITY_URL);return await new e.Client({client_id:process.env.PROCESSCUBE_EXTERNAL_TASK_WORKER_CLIENT_ID,client_secret:process.env.PROCESSCUBE_EXTERNAL_TASK_WORKER_CLIENT_SECRET}).grant({grant_type:"client_credentials",scope:"engine_etw"})}function v(e){if(!g||e===null)return V;let t=e.access_token,s=j(t);return{token:e.access_token,userId:s.sub}}async function R(e,t,s=5){try{if(!g||e===null||!t.pollingIsActive)return;let n=await te(e)*J*1e3;setTimeout(async()=>{if(!t.pollingIsActive)return;let a=await O(),c=v(a);t.identity=c,await R(a,t)},n)}catch(r){if(s===0)throw r;i.error(`Could not refresh identity for external task worker ${t.workerId}`,{err:r,workerId:t.workerId,retryCount:s});let n=2*1e3;setTimeout(async()=>await R(e,t,s-1),n)}}async function Q(e){let t=await X({entryPoints:[e],write:!1,bundle:!0,platform:"node",target:"node18",format:"cjs"});if(t.errors.length>0)throw i.error(`Could not transpile file at '${e}'`,{errors:t.errors}),new Error(`Could not transpile file at '${e}'`);return t.warnings.length>0&&i.warn(`Transpiled file at '${e}' with warnings`,{warnings:t.warnings}),t.outputFiles[0].text}async function ee(e,t){try{var s=module.constructor,r=new s;return r._compile(e,t),r.exports}catch(n){throw i.error("Could not require module from string",{err:n}),n}}async function te(e){let t=e.expires_in;if(!t&&e.expires_at&&(t=Math.floor(e.expires_at-Date.now()/1e3)),t===void 0)throw new Error("Could not determine the time until the access token for external task workers expires");return t}function E(e){return e.replace(/^\.\/+|\([^)]+\)|^\/*|\/*$/g,"").replace(/[\/]{2,}/g,"/")}function se(e){let t,s=[e,h(process.cwd(),"app"),h(process.cwd(),"src","app")];for(let r of s)if(r&&U(r)){t=r;break}if(!t)throw new Error("Could not find external tasks directory");return t}function Pe(){return o}import{cookies as w,headers as L}from"next/headers";import{ResponseCookies as re}from"next/dist/compiled/@edge-runtime/cookies";import{getToken as D}from"next-auth/jwt";var ne=process.env.NEXTAUTH_URL?.startsWith("https://"),W=`${ne?"__Secure-":""}next-auth.session-token`;async function be(){let e=await D({req:{cookies:w(),headers:L()}});if(e?.expiresAt&&Date.now()>=e.expiresAt*1e3){let s=await fetch(`${process.env.NEXTAUTH_URL}/api/auth/session`,{method:"GET",headers:{"Content-Type":"application/json",cookie:w().toString()}}),r=new re(s.headers),n=r.get(W);if(n){let a=!1;try{w().set(W,n.value,{...n})}catch{a=!0}if(e=await D({req:{cookies:a?r:w(),headers:L()}}),e?.error)throw e.error}}if(!e?.accessToken||!e?.sub)throw new Error("AccessToken or Sub could not be determined!");return{token:e?.accessToken,userId:e?.sub}}import{DataModels as oe}from"@5minds/processcube_engine_client";async function De(e){return await o.processInstances.query({...e?.query,state:oe.ProcessInstances.ProcessInstanceState.running},e?.options)}import{DataModels as l}from"@5minds/processcube_engine_client";async function Ke(e={},t){let{processInstanceId:s,flowNodeId:r}=e;return new Promise(async(n,a)=>{let c=await o.userTasks.onUserTaskWaiting(async d=>{let C=d.flowNodeInstanceId===void 0,x=s!==void 0&&d.processInstanceId!==s,_=r!==void 0&&d.flowNodeId!==r,f=s!==void 0&&r!==void 0&&d.processInstanceId!==s&&d.flowNodeId!==r;if(C||x||_||f)return;let p=await ie(d.flowNodeInstanceId,{identity:t});return o.notification.removeSubscription(c,t),p===null?a(new Error(`UserTask with instance ID "${d.flowNodeInstanceId}" does not exist.`)):n(p)},{identity:t}),k=(await ae({processInstanceId:s,flowNodeId:r,state:l.FlowNodeInstances.FlowNodeInstanceState.suspended},{identity:t})).userTasks[0];k&&(o.notification.removeSubscription(c,t),n(k))})}async function qe(e,t,s,r){await o.userTasks.finishUserTask(e,t,r);let n=await o.userTasks.query({flowNodeId:s,state:l.FlowNodeInstances.FlowNodeInstanceState.suspended},{identity:r});return n.userTasks.length===0?null:n.userTasks[0]}async function ae(...e){return await o.userTasks.query(...e)}async function $e(e){return await o.userTasks.query({state:l.FlowNodeInstances.FlowNodeInstanceState.suspended},e)}async function Xe(e,t){return await o.userTasks.query({processInstanceId:e,state:l.FlowNodeInstances.FlowNodeInstanceState.suspended},t)}async function Ge(e,t){return await o.userTasks.query({flowNodeId:e,state:l.FlowNodeInstances.FlowNodeInstanceState.suspended},t)}async function ie(e,t){let s=await o.userTasks.query({flowNodeInstanceId:e,state:l.FlowNodeInstances.FlowNodeInstanceState.suspended},{...t,limit:1});return s.userTasks.length===0?null:s.userTasks[0]}async function He(e,t){return await o.userTasks.query({correlationId:e,state:l.FlowNodeInstances.FlowNodeInstanceState.suspended},t)}async function je(e,t){let s=await o.userTasks.query({state:l.FlowNodeInstances.FlowNodeInstanceState.suspended},{identity:e,...t}),r=s.userTasks.filter(n=>n.actualOwnerId===e.userId);return s.userTasks=r,s}async function Ye(e,t){let s=await o.userTasks.query({state:l.FlowNodeInstances.FlowNodeInstanceState.suspended},{identity:e,...t}),r=s.userTasks.filter(n=>n.assignedUserIds?.includes(e.userId));return s.userTasks=r,s}import{PHASE_DEVELOPMENT_SERVER as ce,PHASE_PRODUCTION_SERVER as de}from"next/dist/shared/lib/constants";var M=!1;function ot(e={}){let{applicationSdk:t,...s}=e;return async(r,n)=>{let a=r===ce||r===de;return t?.useExternalTasks&&a&&!M&&(M=!0,await A(t?.customExternalTasksDirPath)),s}}import{revalidatePath as le}from"next/cache";import{redirect as ue}from"next/navigation";function ut(e){le(e),ue(e)}async function kt(...e){return await o.processModels.startProcessInstance(...e)}async function mt(...e){await o.userTasks.finishUserTask(...e)}export{mt as finishUserTask,qe as finishUserTaskAndGetNext,De as getActiveProcessInstances,Ye as getAssignedUserTasksByIdentity,Pe as getEngineClient,be as getIdentity,je as getReservedUserTasksByIdentity,ae as getUserTasks,ie as getWaitingUserTaskByFlowNodeInstanceId,$e as getWaitingUserTasks,He as getWaitingUserTasksByCorrelationId,Ge as getWaitingUserTasksByFlowNodeId,Xe as getWaitingUserTasksByProcessInstanceId,ut as navigateToUrl,kt as startProcess,Ke as waitForUserTask,ot as withApplicationSdk};
1
+ import"only-server";import{Logger as q}from"@5minds/processcube_engine_sdk";import{ExternalTaskWorker as $}from"@5minds/processcube_engine_client";import{basename as N,dirname as m,join as h,relative as E}from"node:path";import{build as X}from"esbuild";import{promises as G,existsSync as U}from"node:fs";import{Issuer as H}from"openid-client";import{jwtDecode as j}from"jwt-decode";import{watch as Y}from"chokidar";import{EngineClient as K}from"@5minds/processcube_engine_client";var S=process.env.PROCESSCUBE_ENGINE_URL??"http://localhost:10560",o=new K(S);var V={token:"ZHVtbXlfdG9rZW4=",userId:"dummy_token"},J=.85,g=["external_task.ts","external_task.js"],i=new q("processcube_app_sdk:external_task_adapter"),y=process.env.PROCESSCUBE_AUTHORITY_URL!==void 0,u={};if(y&&(!process.env.PROCESSCUBE_EXTERNAL_TASK_WORKER_CLIENT_ID||!process.env.PROCESSCUBE_EXTERNAL_TASK_WORKER_CLIENT_SECRET)){let e=new Error("Required environment variables PROCESSCUBE_EXTERNAL_TASK_WORKER_CLIENT_ID and PROCESSCUBE_EXTERNAL_TASK_WORKER_CLIENT_SECRET are missing. For help, please refer to our documentation on environment variables at: https://processcube.io/docs/app-sdk/samples/external-task-adapter#authority");throw i.error("Required environment variables PROCESSCUBE_EXTERNAL_TASK_WORKER_CLIENT_ID and PROCESSCUBE_EXTERNAL_TASK_WORKER_CLIENT_SECRET are missing",{err:e}),e}async function A(e){if(e&&!U(e))throw new Error(`Invalid customExternalTasksDirPath. The given path '${e}' does not exist`);let t=se(e);Y(t).on("add",async s=>{if(!g.includes(N(s)))return;await F(s,t);let r=m(s),n=E(t,r),a=w(n);i.info(`Started external task ${u[s].workerId} for topic ${a}`)}).on("change",async s=>{if(!g.includes(N(s)))return;await Z(s,t);let r=m(s),n=E(t,r),a=w(n);i.info(`Restarted external task ${u[s].workerId} for topic ${a}`)}).on("unlink",async s=>{if(!g.includes(N(s)))return;b(s);let r=m(s),n=E(t,r),a=w(n);i.info(`Stopped external task ${u[s].workerId} for topic '${a}'`,{reason:`External Task for topic '${a}' was removed`,workerId:u[s].workerId,topic:a}),delete u[s]}).on("error",s=>i.info(`Watcher error: ${s}`))}async function F(e,t,s){let r=m(e);if(!z(r)){i.error(`Could not find external task file in directory '${r}'`);return}let a=await Q(e),l=await ee(a,e);if(l.default===void 0){i.info(`External task file recognized at ${e}. Please export a default handler function. For more information see https://processcube.io/docs/app-sdk/samples/external-task-adapter#external-tasks-entwickeln`);return}let p=await v(),P=O(p),I=E(t,r),d=w(I),x=l.default,_={identity:P,...s,...l?.config},f=new $(S,d,x,_);f.onWorkerError((T,k,B)=>{i.error(`Intercepted "${T}"-type error: ${k.message}`,{err:k,type:T,externalTask:B})}),f.start(),await R(p,f),u[e]=f}async function Z(e,t){let s=u[e]?.workerId;b(e),await F(e,t,{workerId:s})}function b(e){let t=u[e];t&&(t.stop(),t.dispose())}async function z(e){let s=(await G.readdir(e)).filter(r=>g.includes(r));if(s.length===0)return null;if(s.length>1)throw new Error(`Found more than one external task file in directory '${e}'`);return s[0]}async function v(){if(!y)return null;let e=await H.discover(process.env.PROCESSCUBE_AUTHORITY_URL);return await new e.Client({client_id:process.env.PROCESSCUBE_EXTERNAL_TASK_WORKER_CLIENT_ID,client_secret:process.env.PROCESSCUBE_EXTERNAL_TASK_WORKER_CLIENT_SECRET}).grant({grant_type:"client_credentials",scope:"engine_etw"})}function O(e){if(!y||e===null)return V;let t=e.access_token,s=j(t);return{token:e.access_token,userId:s.sub}}async function R(e,t,s=5){try{if(!y||e===null||!t.pollingIsActive)return;let n=await te(e)*J*1e3;setTimeout(async()=>{if(!t.pollingIsActive)return;let a=await v(),l=O(a);t.identity=l,await R(a,t)},n)}catch(r){if(s===0)throw r;i.error(`Could not refresh identity for external task worker ${t.workerId}`,{err:r,workerId:t.workerId,retryCount:s});let n=2*1e3;setTimeout(async()=>await R(e,t,s-1),n)}}async function Q(e){let t=await X({entryPoints:[e],write:!1,bundle:!0,platform:"node",target:"node18",format:"cjs"});if(t.errors.length>0)throw i.error(`Could not transpile file at '${e}'`,{errors:t.errors}),new Error(`Could not transpile file at '${e}'`);return t.warnings.length>0&&i.warn(`Transpiled file at '${e}' with warnings`,{warnings:t.warnings}),t.outputFiles[0].text}async function ee(e,t){try{var s=module.constructor,r=new s;return r._compile(e,t),r.exports}catch(n){throw i.error("Could not require module from string",{err:n}),n}}async function te(e){let t=e.expires_in;if(!t&&e.expires_at&&(t=Math.floor(e.expires_at-Date.now()/1e3)),t===void 0)throw new Error("Could not determine the time until the access token for external task workers expires");return t}function w(e){return e.replace(/^\.\/+|\([^)]+\)|^\/*|\/*$/g,"").replace(/[\/]{2,}/g,"/")}function se(e){let t,s=[e,h(process.cwd(),"app"),h(process.cwd(),"src","app")];for(let r of s)if(r&&U(r)){t=r;break}if(!t)throw new Error("Could not find external tasks directory");return t}function Pe(){return o}import{cookies as C,headers as L}from"next/headers";import{ResponseCookies as re}from"next/dist/compiled/@edge-runtime/cookies";import{getToken as D}from"next-auth/jwt";var ne=process.env.NEXTAUTH_URL?.startsWith("https://"),W=`${ne?"__Secure-":""}next-auth.session-token`;async function be(){let e=await D({req:{cookies:C(),headers:L()}});if(e?.expiresAt&&Date.now()>=e.expiresAt*1e3){let s=await fetch(`${process.env.NEXTAUTH_URL}/api/auth/session`,{method:"GET",headers:{"Content-Type":"application/json",cookie:C().toString()}}),r=new re(s.headers),n=r.get(W);if(n){let a=!1;try{C().set(W,n.value,{...n})}catch{a=!0}if(e=await D({req:{cookies:a?r:C(),headers:L()}}),e?.error)throw e.error}}if(!e?.accessToken||!e?.sub)throw new Error("AccessToken or Sub could not be determined!");return{token:e?.accessToken,userId:e?.sub}}import{DataModels as oe}from"@5minds/processcube_engine_client";async function De(e){return await o.processInstances.query({...e?.query,state:oe.ProcessInstances.ProcessInstanceState.running},e?.options)}import{DataModels as c}from"@5minds/processcube_engine_client";async function Ke(e={},t){let{correlationId:s,processInstanceId:r,flowNodeId:n}=e;return new Promise(async(a,l)=>{let p=await o.userTasks.onUserTaskWaiting(async d=>{let x=s!==void 0&&d.correlationId!==s,_=d.flowNodeInstanceId===void 0,f=r!==void 0&&d.processInstanceId!==r,T=n!==void 0&&d.flowNodeId!==n;if(x||_||f||T)return;let k=await ie(d.flowNodeInstanceId,{identity:t});return o.notification.removeSubscription(p,t),k===null?l(new Error(`UserTask with instance ID "${d.flowNodeInstanceId}" does not exist.`)):a(k)},{identity:t}),I=(await ae({correlationId:s,processInstanceId:r,flowNodeId:n,state:c.FlowNodeInstances.FlowNodeInstanceState.suspended},{identity:t})).userTasks[0];I&&(o.notification.removeSubscription(p,t),a(I))})}async function qe(e,t,s,r){await o.userTasks.finishUserTask(e,t,r);let n=await o.userTasks.query({flowNodeId:s,state:c.FlowNodeInstances.FlowNodeInstanceState.suspended},{identity:r});return n.userTasks.length===0?null:n.userTasks[0]}async function ae(...e){return await o.userTasks.query(...e)}async function $e(e){return await o.userTasks.query({state:c.FlowNodeInstances.FlowNodeInstanceState.suspended},e)}async function Xe(e,t){return await o.userTasks.query({processInstanceId:e,state:c.FlowNodeInstances.FlowNodeInstanceState.suspended},t)}async function Ge(e,t){return await o.userTasks.query({flowNodeId:e,state:c.FlowNodeInstances.FlowNodeInstanceState.suspended},t)}async function ie(e,t){let s=await o.userTasks.query({flowNodeInstanceId:e,state:c.FlowNodeInstances.FlowNodeInstanceState.suspended},{...t,limit:1});return s.userTasks.length===0?null:s.userTasks[0]}async function He(e,t){return await o.userTasks.query({correlationId:e,state:c.FlowNodeInstances.FlowNodeInstanceState.suspended},t)}async function je(e,t){let s=await o.userTasks.query({state:c.FlowNodeInstances.FlowNodeInstanceState.suspended},{identity:e,...t}),r=s.userTasks.filter(n=>n.actualOwnerId===e.userId);return s.userTasks=r,s}async function Ye(e,t){let s=await o.userTasks.query({state:c.FlowNodeInstances.FlowNodeInstanceState.suspended},{identity:e,...t}),r=s.userTasks.filter(n=>n.assignedUserIds?.includes(e.userId));return s.userTasks=r,s}import{PHASE_DEVELOPMENT_SERVER as ce,PHASE_PRODUCTION_SERVER as le}from"next/dist/shared/lib/constants";var M=!1;function ot(e={}){let{applicationSdk:t,...s}=e;return async(r,n)=>{let a=r===ce||r===le;return t?.useExternalTasks&&a&&!M&&(M=!0,await A(t?.customExternalTasksDirPath)),s}}import{revalidatePath as de}from"next/cache";import{redirect as ue}from"next/navigation";function ut(e){de(e),ue(e)}async function kt(...e){return await o.processModels.startProcessInstance(...e)}async function mt(...e){await o.userTasks.finishUserTask(...e)}export{mt as finishUserTask,qe as finishUserTaskAndGetNext,De as getActiveProcessInstances,Ye as getAssignedUserTasksByIdentity,Pe as getEngineClient,be as getIdentity,je as getReservedUserTasksByIdentity,ae as getUserTasks,ie as getWaitingUserTaskByFlowNodeInstanceId,$e as getWaitingUserTasks,He as getWaitingUserTasksByCorrelationId,Ge as getWaitingUserTasksByFlowNodeId,Xe as getWaitingUserTasksByProcessInstanceId,ut as navigateToUrl,kt as startProcess,Ke as waitForUserTask,ot as withApplicationSdk};
@@ -6,12 +6,14 @@ import type { Identity, UserTaskResult } from '@5minds/processcube_engine_sdk';
6
6
  * If there is already a UserTask waiting, this function will return it.
7
7
  *
8
8
  * @param filterBy Additional filter options
9
+ * @param filterBy.correlationId The ID of the correlation which contains the UserTask
9
10
  * @param filterBy.processInstanceId The ID of the ProcessInstance the UserTask belongs to
10
11
  * @param filterBy.flowNodeId The UserTask FlowNode ID (BPMN)
11
12
  * @param identity The Identity of the User
12
13
  * @returns {Promise<DataModels.FlowNodeInstances.UserTaskInstance>} The created UserTask.
13
14
  */
14
15
  export declare function waitForUserTask(filterBy?: {
16
+ correlationId?: string;
15
17
  processInstanceId?: string;
16
18
  flowNodeId?: string;
17
19
  }, identity?: Identity): Promise<DataModels.FlowNodeInstances.UserTaskInstance>;