fh-wfm-result
Version:
A result module for WFM, for working with the results of pushing a workorder through a workflow
194 lines (131 loc) • 5.51 kB
Markdown
A result module for WFM, for working with the results of pushing a workorder through a workflow.
This module can be initialised by
```javascript
var resultModule = require('fh-wfm-result');
//Initialising the result module with a mediator. This will set up all of the subscribers for the result module.
resultModule(mediator);
//The result mediator topics are now subscribed.
mediator.subscribe("done:wfm:results:list", function(arrayOfResults) {
...
console.log("All Results", arrayOfResults);
...
});
mediator.publish("wfm:results:list");
```
Creating a new Result
```javascript
var parameters = {
resultToCreate: {
//A Valid JSON Object
},
//Optional topic unique identifier.
topicUid: "uniquetopicid"
}
mediator.publish("wfm:result:create", parameters);
```
Read a single Result
```javascript
var parameters = {
id: "resultId",
//Optional topic unique identifier.
topicUid: "uniquetopicid"
}
mediator.publish("wfm:result:read", parameters);
```
Update a single Result
```javascript
var parameters = {
resultToUpdate: {
...
id: "resultId"
...
},
//Optional topic unique identifier.
topicUid: "uniquetopicid"
}
mediator.publish("wfm:result:update", parameters);
```
Remove a single Result
```javascript
var parameters = {
id: "resultId",
//Optional topic unique identifier.
topicUid: "uniquetopicid"
}
mediator.publish("wfm:result:remove", parameters);
```
List All Results
```javascript
var parameters = {
//Optional topic unique identifier.
topicUid: "uniquetopicid"
}
mediator.publish("wfm:result:list", parameters);
```
The following topics are published by this module. Developers are free to implement these topics subscribers, or use a module that already has these subscribers implement (E.g. the [raincatcher-sync](https://github.com/feedhenry-raincatcher/raincatcher-sync) module).
| Topic | Description |
| ------------- |:-------------:|
| wfm:sync:results:create | Create a new item in the sync `results` collection |
| wfm:sync:results:update | Update an existing item in the sync `results` collection |
| wfm:sync:results:list | List all items in the sync `results` collection |
| wfm:sync:results:remove | Remove an existing item from the sync `results` collection |
| wfm:sync:results:read | Read a single item from the sync `results` collection |
| wfm:sync:results:start | Start the sync process for sync `results` collection |
| wfm:sync:results:stop | Stop the sync process for sync `results` collection |
| wfm:sync:results:force_sync | Force a sync cycle from client to cloud for sync `results` collection |
### Topic Subscriptions
| Topic | Description |
| ------------- |:-------------:|
| done:wfm:sync:results:create | A result was created in the `results` dataset |
| error:wfm:sync:results:create | An error occurred when creating an item in the `results` dataset. |
| done:wfm:sync:results:update | A result was updated in the `results` dataset |
| error:wfm:sync:results:update | An error occurred when updating an item in the `results` dataset. |
| done:wfm:sync:results:list | A list of the items in the `results` dataset completed |
| error:wfm:sync:results:list | An error occurred when listing items in the `results` dataset. |
| done:wfm:sync:results:remove | A result was removed from the `results` dataset |
| error:wfm:sync:results:remove | An error occurred when removing an item in the `results` dataset. |
| done:wfm:sync:results:read | A item was read correctly from the `results` dataset |
| error:wfm:sync:results:read | An error occurred when reading an item in the `results` dataset. |
| done:wfm:sync:results:start | The sync process started for the `results` dataset. |
| error:wfm:sync:results:start | An error occurred when starting the `results` dataset. |
| done:wfm:sync:results:stop | The sync process stopped for the `results` dataset. |
| error:wfm:sync:results:stop | An error occurred when stopping the `results` dataset sync process. |
| done:wfm:sync:results:force_sync | A force sync process completed for the `results` dataset. |
| error:wfm:sync:results:force_sync | An error occurred when forcing the sync process for the `results` dataset. |
## Usage in an express backend
### Setup
The server-side component of this WFM module exports a function that takes express and mediator instances as parameters, as in:
```javascript
var express = require('express')
, app = express()
, mbaasExpress = mbaasApi.mbaasExpress()
, mediator = require('fh-wfm-mediator/lib/mediator')
;
// configure the express app
...
// setup the wfm result sync server
require('fh-wfm-result/lib/server')(mediator, app, mbaasApi);
```
Check this [demo cloud application](https://github.com/feedhenry-staff/wfm-cloud/blob/master/lib/app/workorder.js)