Akumina Solutioning inside SharePoint - akumina/AkuminaTraining GitHub Wiki

Applies to:

All versions

Overview

Akumina accelerates the implementation of Digital Workplaces, Employee dashboards, Intranets and similar sites. As a solution or technical architect, often we are asked how does a solution using Akumina with SharePoint differ from what would be done inside SharePoint. This article explains that process.

Approach

We use an approach where we break the solution down into its parts; With these parts we ask specific questions to help us define the solution.

Area Questions
UI Model What values will we show?
How will we display the data?
Business Logic What are the rules for getting the data?
Data Where does the data come from?
How do we get it?
Management How will it be managed?

Example: Calendar Events

Now let us apply that approach to an example - The example we will use is a list of company events or dates, with the following requirements:

  • Shows a chronologically ordered list of items.
  • For each item, there is a date, title, summary and an optional hyperlink.
  • The items shall be from today onward.
  • Implement caching on the returned data for performance considerations.

Translating those requirements into our model, we get the following.

Area Questions Answers
UI Model What values will we show? A list of events, each with a date, title, summary and an optional hyperlink
How will we display the data? TBD
Business Logic What are the rules for getting the data? Event must be today and in the future, sorted by dates. When requested, the data will be put into a timed cache. If the data is requested within the cache time, then the version in the cache shall be returned.
Data Where does the data come from? TBD
How do we get it? TBD
Management How will it be managed? TBD

Note, we still have some gaps in our table. We will fill these in the next sections are define the solution in SharePoint, and then compare and contrast with a solution using the Akumina frameworks.

Calendar Events: SharePoint Solution

Given the requirements above, we now look to solution inside SharePoint. In our example, we know that we have to store, manage and display our data that provides this capability. We fill out our solution thus:

Area Questions Answers Notes
UI Model What values will we show? A list of events, each with a date, title, summary and an optional hyperlink
How will we display the data? Content Search Web Part, List View part, or JavaScript APIs A control that will query and display the items. This control needs to accept a CAML query, and we will need to format the display. Our options here are 1) A content Search Web Part with a SharePoint display template. 2) A List View part that uses a XSLT to customize the display. 3) or using SharePoint's JavaScript APIs to query and return data, that we will need to format into HTML.
Business Logic What are the rules for getting the data? Event must be today and in the future, sorted by dates. When requested, the data will be put into a timed cache. If the data is requested within the cache time, then the version in the cache shall be returned.
Data Where does the data come from? Custom List added manually The custom list that will store the data for the important dates. This list will have columns representing the fields that are required.
How do we get it? CAML Query
Management How will it be managed? Edit directly in SharePoint List All users will see it.

The above solution would not even factor in potential enhancements such as multi lingual, changing the data source to point to an exchange calendar, or have the ability to alter the display depending on location. These additional requirements would add time to the solution.

Calendar Events: Akumina Solution

We now contrast that with the solution inside SharePoint using the Akumina frameworks.

Area Questions Answers Akumina Solution
UI Model What values will we show? A list of events, each with a date, title, summary and an optional hyperlink
How will we display the data? Important Dates widget Widget, HTML view
Business Logic What are the rules for getting the data? Event must be today and in the future, sorted by dates. When requested, the data will be put into a timed cache. If the data is requested within the cache time, then the version in the cache shall be returned. Callback, widget
Data Where does the data come from? Custom List List and content type added automatically via widget packages. Caching provided as part of the widget framework.
How do we get it? CAML Query Using JSOM and a jQuery Ajax call; framework provided capability.
Management How will it be managed? AppManager Content App targeted to specific roles.

This recommended solution utilizes a subset of Akumina's pre-built functionality that organizations can leverage to accelerate the overall deployment of solutions across Office 365 and SharePoint.

Comparison

Our first observation is that our thought process is exactly the same - we have the same core concepts regardless of solution. This is key, as we do not have to alter our concepts in order to leverage the Akumina frameworks.

When we compare the 2 solutions, we see that the difference lies in the actual implementation of the solution. Specifically, we use the Akumina design pattern and controls for the front end display, as well as the deployment methods for the information architecture. With the Akumina frameworks, the design patterns for obtaining data and displaying it are already in place, and we just use those, saving us time and effort vs. building from scratch.

Since we use an existing widget, we do not have to build it but instead configure. If we need to change how the widget looks, we could alter it very easily by extending the widget's view. If we want to change the functionality, we can also do so easily.

Finally, we have the ability to export our work into a package, and reuse it via widget export and import. Anyone using the solution in the future can just import the zip file, drastically lowering effort to reproduce the solution.

References

For more information see the following: