- Non-Middleware Patterns
- Middleware Patterns
The following is a document that is meant to capture middleware patterns for common scenarios in an enterprise environment. It is broken into 2 main sections: Non-middleware and Middleware. For some more details about the Jive Platform and general add-on development, check out Jive Platform - Developer Resources
OAuth2 API Client
Simple Stream Integration
New This is a very powerful and simple integration pattern that you can build and deploy in minutes! See the Simple Stream Integration blog series (resources below) to see how you can get exponential return with this pattern / progression!
This pattern is a very powerful way to get activity and content into Jive with minimal effort. Built on a webhook design principle, Simple Stream Integrations create a Jive URL where external systems/processes can HTTP POST data that is then processed by the xform.js transformation file into the native Jive Activity Dialect.
When the Activity Tile is installed by a User to a Place, the URL creates a revokable OAuth token on behalf of the installing admin and embeds it into the URL, which reduces the need for additional HTTP header management.
Content created by this pattern (Title/Body) is indexable by Jive, and has it's own distinct Jive URL & API Content ID. Content created using this pattern also has native UI/API support for Commenting, Liking, Sharing, Booking and Structured Outcomes.
Analytics (Data Export) Client
This pattern shows how to connect a standard external service/client to the Jive Analytics API.
Once a clientId/clientSecret have been setup for access, processes exchange these for an access token that lasts up to 30 minutes before it needs to be refreshed.
Jive Analytics covers the entire Jive instance, as such, connecting to Analytics operates as Full Access permissions.
Processes that require additional activity detail not provided in analytics meta-data will need to call the Jive REST API. It is recommended that services use an OAuth2 API Client to do so (see above).
Note: This pattern assumes that your Jive instance is either Jive Cloud or has been connected to Jive Cloud Analytics services.
Custom View Tiles & HTML Tiles
Jive Hosted Apps
Jive Hosted Apps w/Jive Connects
This pattern increases the capabilities of the Jive Hosted Apps by adding a built-in service managed in Jive that securely stores the most commonly needed pieces of information for service integrations, which are Identity and Access Tokens.
Jive Connects acts as a secure proxy between your client-side app and a protected service. When calling a service that requires authentication/authorization, Jive Connects offers a framework for apps to securely capture appropriate authorizations and store them for future service calls made by matching users. If at any time the stored credentials become invalid, Jive Connects framework prompts apps to recapture credentials.
Jive Connect currently supports the following API authorization flows: Anonymous, HTTP Basic, API Key, API Key + HTTP Basic and OAuth 2.0.
Simple Stream Integration w/Jive Hosted App (Jive Connects optional)
Continued Now that you've created your Simple Stream Integration in minutes (see above), you can work through simple progressions (minutes / hours) to add even more power to this pattern. Definitely check out the Simple Stream Integration blog series (resources below) to understand the full power of this pairing.
This pattern is a continuation of the Simple Stream Integration pattern above. What makes this most intriguing, is that when the SSI creates the External Object Content, you can swap out the body of that content to be a Jive App view that is hosted from within the add-on. Since the Ext Object has it's own contextual data, you can use this information to seed the app experience to some exceptional things.
With access to Jive Apps, and subsequently Jive Connects, developers can enhance the user experience around the activity content from a simple read experience to a fully immersive read-write experience (if needed). Perhaps the invoking service didn't pass a lot of detail? Or perhaps you want to provide a quick feedback loop to the source system? These are both possible (and MUCH MUCH MORE) using this pattern.
Jive Anywhere Cartridge
This pattern covers extending Jive onto third-party websites using Jive Anywhere and custom cartridges. Jive Anywhere is a browser plugin that operates in all the major browsers, including: IE, Firefox, Chrome and Safari. Cartridges are definitions for custom behavior to be invoked (or made available) when a user is viewing specific third-party websites. The true power for Jive Anywhere comes from the fact that it includes an authenticated Jive connection capable of calling Jive REST API for additional context (as needed)
Two powerful use-cases:
The Jive iPaaS SDK allows developers to quickly create beautiful integrations to your Jive instance. With the SDK, you don't need to worry about middleware, as we will host the integration in the cloud for you. You also don't need to think about the Jive core API's, as all the communication to Jive is done by the SDK.
Did we mention that the SDK projects are written using Java?
To give the Jive iPaaS a try, check out
Built.io Flow is a cross-service iPaaS that can integrate multiple platform services from multiple platform processes together into a clear integration path. It currently supports best of breed enterprise technologies, such as Salesforce, Marketo, Slack, Google Apps, OneNote, Evernote and more.
For a list of integrated platforms, click here.
Note: Built.io Flow is a third-party service, and will require users to register with their service. This service has a FREE trial, but does have charges for production use.
To give Built.io Flow a try, check out:
Jive add-ons can be built using any web-ready programming language. To illustrate this point, we have assembled a series of open-source SDKs to demonstrate the necessary capabilities in each language. Need help building add-ons in an incomplete SDK? Reach out to Ryan Rutan to inquire about Jive's SDK Your Way initiative.
Pick Your Language and Get Started!
Dont forget to check out services like Ngrok: Warp Speed for Your Integration Iterations to help expedite your Jive development process.
Note: Any of these middleware platform options can be coupled with "non-middleware" patterns that are embedded into the Jive add-on. To do so, will probably require manually packaging your Jive add-on, as current tooling may not properly set references to local and remote assets correctly, but this is a gap in tooling, not a platform limitation. Let us know which use-cases you are trying to use that are not supported well by our tooling and we'll do our best to rectify the situation, where possible.
Standard Service Proxy
This pattern is a very standard use of middleware. Requests from a Jive App, Tile or Webhook trigger a call to a remote system that has a matching user profile. The middleware service is responsible for authenticating the calling user and mapping them to a trust context in the external system.
In this example, the middleware uses the Jive Signed Request mechanism to validate request authenticity and determine Jive tenantId and User details. These details are mapped to an external service account, which was authorized usually during the App / Tile configuration stage.
Note: This pattern can also support the OAuth2 API Client pattern. (see above)
If you have questions about this pattern, feel free to post a question in the Developer community and we can share more details around your specific use-case.
Tile Data Proxy
This pattern covers the standard Tile data update process. Usually, in a Tile configuration interface, the user will map the Tile Instance to a construct in an external system. When an event fires in the external system, it will notify the middleware service, which translates/articulates the data into the appropriate Jive Tile Style and pushes the data to the mapped URL.
Once the data is pushed, Jive retains a copy of the data for display purposes until a new set of data is pushed into the Tile Data Push URL.
Externally Hosted Jive Apps / Custom View Tiles
WebHook Bi-Directional Sync
This pattern is very generic and highly re-usable It covers concepts such as bi-directional Activity Streams and Content synchronization, as well as any general event pub/sub scerario.
External Storage Framework (Bi-Directional)
Due to this pattern's detailed implementation requirements, we strongly recommend the use of the Jive iPaaS to simplify building and deployment of any custom storage providers.
This pattern addresses the concept that files are a universal collaboration medium, and often proliferated throughout various systems. The External Storage Framework provides a means for Jive to act as either a client or server for binary file content, and synchronize them with an external service. In addition to the binary content, ESF also supports synchronization of common collaboration paradigms, such as "Likes" and "Comments".
It is recommended that you check Jive's out-of-the-box external storage integrations before building your own; however, definitely reach out to Yuval Twig if you have any questions about those offerings.
To get started with this pattern, we recommend starting with the Jive iPaaS!