zingzeu / CrowdSource

Crowdsourcing coordination and state management tool
http://cs.mindong.asia
MIT License
2 stars 0 forks source link

Interactive (Manual Input) Step #12

Open ztl8702 opened 6 years ago

ztl8702 commented 6 years ago

Interactive Steps are a special type of steps. Each Interactive Step has one or more Assignments.

Configurable properties

Guards

Guards are checks that decide whether or not an assignment can be taken/submitted/etc. A.k.a validators.

AutoProcessors

AutoProcessor is auto-triggered to process user input (e.g. formatters). They are also used to update the Entity level state.

Queue

An Interactive step can publish Assignments to designated queues. Each queue is only visible to certain groups of users (e.g. admins, normal users and/or bots).

TimeLimit

The time within which an assignment should be completed, otherwise it will be reallocated to another worker.

Assignments

Assignments are "task descriptions" (only abstractly, does not actually contain the description) that are published to queue. Kind of like "HIT" in MTurk. When a user requests a new work item from a queue:

  1. The queue pops the top Assignment (call it a1).
  2. a1 is notified of the user, which in turn notifies the corresponding Interactive Step i1.
  3. i1 runs a Guard, that checks the user's info and decides whether to accept this user.
    1. If the Guard returns true. a1 is assigned to the user.
    2. If the Guard returns false. a1 is added back to the tail of the queue.
  4. If the user completes the assignment a1 on time, and submits an AssignmentResult. The AssignmentResult is sent to i1, where it runs through a series of Guards and AutoProcessors (much like a middleware pipeline).
    1. If it passes, the assignment is marked as completed and archived.
    2. If it does not pass, the user can still make another AssignmentResult submission. (Optionally, the user is given a feedback/error message generated by the Guards.)
  5. If the user does not complete in time, the Assignment a1 is marked as expired and archived. i1 will be notified and will regenerate an assignment a2, and publish to the queue.

Pausing behaviour

When an Interactive Step is asked to pause, it will enter a Pausing state. If it has active Assignments (that are already taken by users), it will wait for them to complete and then enter a complete / paused state (depending on the AssignmentResult). If it does not have active Assignments, it unpublishes all assignments currently in the queue.

When resuming, the Interactive Step will republish a (new) Assignment to the queue(s) if necessary.