A simple pull-based job/ticket system contians a centeral ticket dispatcher and distributed workers. This system is written in NodeJS, runing on MongoDB
npm install ticketman

A simple pull-based job/ticket system contians a centeral ticket dispatcher and distributed workers. This system is written in NodeJS, runing on MongoDB
This system consists of following 3 parts:
* Ticketman website - a ExpressJS app display the current status of the centeral ticket system
* TicketManager - a JS Class for create(TicketManager.issue) new ticket
* TicketWorker - a JS Class pulls ticket from Ticketman website on a routine, it can also complete/giveup/add comment to a ticket. The TicketWorker instance works on one ticket at time.
``bash`
npm install ticketman
1. Download and extract the latest release from https://github.com/yi/node-ticket-manager/releases
2. run "npm install" to install dependencies
3. run "npm start" to start the service
4. Open http://localhost:3456 in your web browser
javascript
var TicketWorker = require("ticketman").TicketWorker;
var TicketManager = require("ticketman").TicketManager;
`TicketManager API
`
new TicketManager : (@name, @host, basicAuth) ->TicketManager.issue()
// issue : (title, category, content, callback)->
`TicketWorker API
$3
`
constructor: (options={}) ->
# @param {Object} options, optionally includes:
# options.name
# options.id
# options.consumerSecret
# options.host
# options.category
# options.timeout : ticket processing timeout in ms
# options.interval : self checking interval
# options.basicAuth : basicAuth
#
`$3
* on "new ticket", listener signature: eventListener(ticket)
* on "complete", listener signature: eventListener(ticket)
* on "giveup", listener signature: eventListener(ticket)
$3
* complete : ()->
* update : (message, kind='default')->
* giveup: (reason)->
HTTP API Calls:
$3
req.body:
`
{
title : "title of ticket",
owner_id : "name of owner",
category : "category the ticket belongs to",
content : {
detailed : "content of ticket",
mixed : ["data"]
}
}
`$3
req.body:
`
{
worker : "assignment worker"
category : "category the ticket belongs to"
}
`$3
req.body:
`
{
name : "worker",
kind : "info",
content : "test comment"
}
`$3
req.body:
`
{
name : "worker"
}
`$3
req.body:
`
{
name : "worker"
}
``