Purposeful Places - A Focus Lense for Work
With the latest cloud release, Jive introduced Purposeful Places, which are social groups that provide a structured context for user engagement around specific topic or problem. For example, a Salesforce Dealroom lets users keep abreast of the conversation surrounding a Salesforce opportunity, by pipping in Chatter posts and comments into Jive in the form of activity stream entries. Additionally, the group may also present "Tiles" for displaying the latest facts for the opportunity such as monetary value, name of the primary contact, or percentage likelihood of close. Jive permits live update of these facts by exposing endpoints for 3rd parties to push in data updates.
Integration Services & the Jive NodeJS SDK
Jive makes it easy to create these backend services responsible for pushing stream and tile updates into a Purposeful Place! We created a NodeJS SDK for kickstarting your service. On top of Node being an amazing platform for rapid development, the Jive SDK even further accelerates development. Literally within minutes you can have an service capable of serving the UI for configuring your tiles and activity stream integrations inside a Purposeful Place, as well as push data into these integration points.
- Use the command line tool to autogenerate templates of all the supported flavors of Tiles, as well as full integration examples with popular systems such as Salesforce. Each example is ready out of the box for use, and deployable to the cloud with the minimum fuss. Here's the transcript of setting up a working Salesforce integration. The server was ready to go in minutes.
$ jive-sdk create sfdc_opportunity_activity
Preparing example sfdc_opportunity_activity /private/tmp/sfdc
Contents of tiles directory ( /private/tmp/sfdc/tiles ):
Things you should do now, if you haven't done them already.
(1) Install dependent modules:
(2) Don't forget to edit /private/tmp/sfdc/jiveclientconfiguration.json to specify your clientID, clientSecret, clientUrl, and other important setup options!
When done, run your service:
$ npm install
npm WARN package.json firstname.lastname@example.org No README.md file found!
└── email@example.com (firstname.lastname@example.org)
$ node app.js
[2013-05-14 23:32:22.497] [INFO] jive-sdk - Saving new definition 'sfdc_opportunity_activity'
[2013-05-14 23:32:22.568] [INFO] jive-sdk - Running bootstrap.
[2013-05-14 23:32:22.573] [INFO] jive-sdk - Bootstrap complete.
[2013-05-14 23:32:22.573] [INFO] jive-sdk - Service started in development mode
Express server listening on port 8090
- Customize the template through "programming by convention" -- fill in the blanks with logic specific to your application, and as long as you've satisfied the contract, the framework automatically:
- Wires up routes required for configuring your integration.
- Notifies your listeners for integration life cycle events (integration created; destroyed; updated, etc.).
- Executes any recurrent tasks.
- Handles persistence of required objects (built-in support for 3 flavors of persistence out of the box -- in-memory, file, and MondoDB).
- Easily integrate with OAuth2 providers such Salesforce, using easily customizable built-in support for OAuth2 on the backend and front end.
- Build your own custom integration from scratch, or wire in just the pieces you need into your pre-existing service, using the framework's underlying API directly.
So now you've got a service - go run it on Raspberry Pi!
Since Purposeful Places are cloud-only at the time of writing, my service must also be cloud deployed. Though there are lots of great options for hosting NodeJS services on the web (Joyent's NodeJitsu or Salesforce's Heroku for instance), I needed to deploy my integration service to the cloud in a convenient, easily debuggable environment, over which I had complete control.
Enter: The Raspberry Pi!
Besides the epic geek factor of it all (no need to explain I hope), it is amazing that with about a $60 investment, we were able to create a pocket-sized integration server, capable of pushing meaningful value into multiple Jive cloud instances! Using the Pi I am able to host my service, easily modify it on the fly for rapid troubleshooting. This process is much more difficult on something like Nodejitsu, where the deploy process can take several minutes (as compared to seconds for making a change, then deploying it live to the cloud again by turning the process back on).
Here is a good guide to get your own Raspberry Pi setup with NodeJS: