sartography / spiff-arena

SpiffWorkflow is a software development platform for building, running, and monitoring executable diagrams
https://www.spiffworkflow.org/
GNU Lesser General Public License v2.1
48 stars 36 forks source link

Bounties - UnAuthenticated Form Submissions to Start Processes #1078

Closed danfunk closed 1 month ago

danfunk commented 3 months ago

(proposed as an alternative to running a separate deployment of SpiffWorkflow for Bounties)

supported by https://github.com/sartography/bpmn-js-spiffworkflow/issues/77

danfunk commented 3 months ago

@harmeet-status - we are hoping this will allow us multiple ways to kick off processes while maintaining only a single production SpiffWorkflow implementation. We can use it, in combination with our anonymous user tasks to allow non-authenticated users to both start and participate in workflows when they have the links to do so. It will also allow you to create an independent web page (or integrate into the status.im website) forms that will start internal workflows.

harmeet-status commented 3 months ago

How would the user be able to come back into spiff and try to look at the status of the current bounty, and whether it's been paid, look at the history of all the bounties they have completed, and the process instances associated with this?

danfunk commented 3 months ago

This would not provide a way for them to track the status of a bounty. However, they may never need or want to interact with such a system if they are given frequent updates through notifications that are built into the workflow.

If our long term intent here is to build a replica of upwork / gig economy apps - then we would need a more complete interface. We're just seeking for ways to create a good experience without amassing additional infrastructure. At least until we have a clear real world understanding of how best to implement these bounties.

One thing this allows is the ability to author a whole website or mobile application around bounties, that can capitalize on and make use of SpiffWorkflow, while having the ability to grow independently. In such a situtation, some additional ability to query SpiffWorkflow for reports and statuses could also be implemented. Then you could build countless user facing applications for any number of purposes, while making use of SpiffWorkflow to manage the business processes.

harmeet-status commented 3 months ago

We were thinking that the user would be able to enter their personal details into the bounty once and then on subsequent bounty applications, they would be able to use refer to the pre-filled information.

How would that work in this instance?

harmeet-status commented 3 months ago

Nm about the comment above, we have settled on allowing a new process to be started using a URL. We do not need to pass any parameters in the URL.

There will be a generic URL for Spiff which starts a new process with a form which is accessible without any authentication. This form does not support the save function, you can only load and submit it. You cannot come back to it later either.

madhurrya commented 2 months ago

@burnettk Please let me know how to test this.

burnettk commented 2 months ago

@madhurrya see notes on https://github.com/sartography/spiff-arena/pull/1210, and let us know if you have questions.

madhurrya commented 2 months ago

Tested the concept using this model https://dev.app.spiff.status.im/process-models/misc:qa:unauthenticated-endpoint-support with the URL https://dev.app.spiff.status.im/public/misc:qa:bounty_start

And tested guest tasks with https://dev.app.spiff.status.im/process-models/misc:test:madhurya-testing:guest-form-access with the URL https://dev.app.spiff.status.im/public/tasks/3134/b4bf6873-8b38-4ad6-94ca-5891f3fbed40 and https://dev.app.spiff.status.im/public/tasks/3137/07a36da1-c4d3-4be3-89d8-54d11dbad0a8

madhurrya commented 2 months ago

@harmeet-status The basics work as explained in the PR here https://github.com/sartography/spiff-arena/pull/1210. Is there any specific things or scenarios we need to test under this?

harmeet-status commented 1 month ago

Here are the scenarios that we need to satisfy in the bounty process:

  1. Start an unauthenticated form (DONE)
  2. Send a message to an existing process instance, using a message event and a custom URL

No 2 e.g. A dev will start a bounty application process and get a bounty assigned to them. At some point in the future, the dev will need to come back into Spiff and put the PR URL into Spiff. I wanted to send the dev a link to a bounty using a notification.

dinithihj commented 1 month ago

Related to above # 2, I have created a model and tested it. I believe it will address your situation. Please see below steps and let me know if you want me to check anything else related to this.

Model:- https://dev.app.spiff.status.im/process-models/misc:qa:send-message-to-existing-process-instance 1st Guest Link to start the process instance:- https://dev.app.spiff.status.im/public/misc:qa:bounty_process_start

Once the user completes the 1st guest task the process instance starts and it'll wait at Manual Process "Approve" to reviewer to approve it. (In this sample I have set me and fin@status.im as reviewers)

image

After the Approving stage next script task is generating the link to the second guest task, which can be sent to the user.

image

With that link user can open the form to submit PR URL

image

At last, to verify I have added another Manual task for the reviewer to display the entered PR URL and Comment.

image

harmeet-status commented 1 month ago

Looks good

dinithihj commented 1 month ago

@harmeet-status If there's nothing else shall I close this ticket?

dinithihj commented 1 month ago

Closing this ticket as the below scenarios are working as expected.