how do you integrate gamification with sharepoint - web-services

I am planning to use open source gamification - rails based Gioco gem to for enteprise productivity and collaboration applications. I am starting with Sharepoint. While I have supporting material for gamification strategies and use of commercial software apps such as Badgeville, how can I integrate using REST/JSON API with Sharepoint?
Ideally I am looking to generate points on the gamification when users tag, upload, comment on Sharepoint and Yammer. So user action should trigger the REST API.

RedCritter has pre-built integration with SP2013 which is very easy to deploy. There are also pre-built integrations for workflow management tools like Nintex to reward granular behaviors within SharePoint.
https://redcritterconnecter.com/solutions

This is going to be tough. There are far too many places in SharePoint you'd have to handle. While SharePoint does have various event handlers which you can hook up to trigger your code, they would have to be installed farm-wide in all sites, all lists and document libraries, independently. Then you would have to somehow hook up various web parts.
Alternate strategies:
try to handle everything client-side in JavaScript — tedious in nature, error-prone, can't catch everything (e.g. Office integration beyond reach)
turn on auditing everywhere and generate info from audit logs — will be behind in time in respect to user actions, won't catch everything again (e.g. various user interface operations that don't trigger audit records)
In any case, your SharePoint farm admin won't fall in love with this. Most likely you will cause them a lot of troubles and headaches, not speaking about unwanted interferences with 3rd party solutions deployed on the farm.
My recommendation: don't waste your time, it's not worth it.

I would have to agree with Ondrej - SharePoint is fully of proprietary functionality that will be a challenge to work with. I know you had your heart set on going open source, but I know that Badgeville specifically has a SharePoint connector which might get you what you need.
http://badgeville.com/products/integration-catalog/badgeville-for-sharepoint

Related

Stacking reviews - Project to create a health virtual assistant using Dialogflow

I am working on a project to create an online medical booking system using Dialogflow as the frontend to provide users with a more personable experience.
So far I have come up with an ideal stack PIC. I plan to have it hosted on AWS (or GCP). However, I am new to Dialogflow but I know it is a very powerful platform. My two criteria are: (A) A stack that makes it easy to personalize frontend UI display and (B) Scalability, I am starting with a web app but would like to also develop an iOS app.
I have two questions: (1) Would you change anything in the stack? and (2) Is there a way to change the name of the bot each time user visits (to make it more "real")?
Super appreciative of you guys expert opinion :)
IMHO, I've found GCP to be easier to use than AWS, since Google handles SSL encryption with .app domains, while AWS requires a more manual solution. Google Cloud also offers a terminal window inside a Chrome tab, which can be a fun experience. So, for hosting, I recommend Google Cloud, unless AWS has a unique feature that applies to your personal circumstances.
Personally, I prefer Angular to React, but Angular, React, and VueJS are all fine choices for a front-end framework on a web app. Your choice of these probably depends on which framework you already know, or (if you plan to outsource development) which language you can use to hire better engineering talent.
For my own projects, I use Express and Node on the server side, instead of GraphQL and Prisma. Your call there.
Good luck!

Redmine project data for all projects

I am working on creating a dashboard which would access Redmine project data. This dashboard will be a consolidation of project data (delivery date, manager, start date, total issues, open issues, closed issues, bug count etc.) for all projects in the Redmine database.
Any ideas on how to do this? An SQL query to achieve this would be a good start. I have Redmine setup on my local system and can access the Redmine database.
I plan on creating an HTML5 .Net based web application. Once I figure out the queries to be used, I would write an IIS (or REST) service to fetch the desired data from the Redmine production database.
Any help/pointers would be deeply appreciated.
Regards,
Pranjal
You have basically three options:
use the REST API
develop a redmine plug-in
do some custom SQL stuff
REST API
The best you could do is to use the redmine REST API. Using it, you can fetch the data directly from redmine without any SQL queries or manipulating the server. It should even work when the redmine server is updated.
Redmine Plug-in
The next best thing is probably to develop a redmine plug-in. Your plug-in can access redmine classes (Project, User, etc.). For example, you could do something like Projects.all.map {|p| [p.id, p.identifier]} to get the id and identifier of all projects in an array. This approach is way more powerful than using the REST API, but you have to modify the redmine server (install and maintain your plug-in). A plug-in is probably more fragile when redmine changes internal structures, than the REST API.
Custom SQL stuff
I do not recommend developing custom SQL solutions, but it is an option. Such a solution is harder to develop, more fragile, harder to set up, but might offer better performance.
You can see the the redmine database structure listed in db/schema.rb. Having the right schema, you could develop your custom SQL queries and return them to your dashboard.
Think about security
Apart from the usual security stuff (which you should consider too :)), remember that redmine has a rich permission system. Consider which object you make (publicly) available. This is most important for the last two options. When using the plug-in approach, you should have a look at the User#allowed_to method.
With the little information I have about your requirements, I have the feeling that you should go for the REST API.

Realtime Interfacing with Dynamics NAV via Webservices

I want to write a .NET application that will interface in realtime with Dynamics NAV 2009 and 2013. The application will have to read and update entities such as customers and stock items.
Using the provided webservices seem to be the best candidate as a point for integration, and I've tried some basic tests reading, updating and creating items using webservices based on Pages and a .net client.
Unfortunately, I am very new to Dynamics, and I have some questions that probably reflect that lack of experience.
First - webservices can expose either Page or Codeunits. Is Page the correct option to use for interfacing to say - create a customer?
Secondly - My understanding is that Dynamics NAV is rarely deployed without customisation. Would a typical customisation in NAV e.g an addition of a field involve changing a standard Page, and will this change then be reflected in the webservice definition?
You are right - given your requirements, webservices are probably the best option for interfacing with NAV.
Regarding your first question: page web services know how to handle concurrency, and, thanks to the way Visual Studio encapsulates them, expose rich types that you can interact with from your .NET code. All the basic CRUD operations can be carried out using the exposed methods. For a more detailed comparison between codeunit web services and page web services, please refer to http://msdn.microsoft.com/en-us/library/dd355398.aspx.
I think most developers choose not to publish the normal pages (the ones aimed at the NAV Windows Client; previously known as the Role Tailored Client), but instead, create separate, tweaked pages for publishing as a web service. But, if you prefer, I guess you could add your custom field to the standard page and publish that as a web service.
Hope this helps! Good luck! :)

User friendly custom lists in Alfresco 4

I'm trying to find a free replacement for Sharepoint 2010. Particularly I need custom lists creation functionality. I've read that Alfresco is a good replacement, but I can't seem to find any tutorial about custom data list creation. In Sharepoint you can create custom lists and fields out of the box, but it seems that with Alfresco you have to deal with XML code, which is not very user friendly, am I right?
If this is the case, is there any other kind of ECM with this functionality?
Thanks,
With Alfresco, there are (3rd Party) tools providing functionality to model content with a gui at runtime, shielding users from ugly XML. Head over to http://addons.alfresco.com and search for "model". Alfresco Form-Model Management is one example.
That said, I can hardly imagine gui based content modeling qualifiying as a critical feature for the choice of an ECM as usually, developers do it infrequently (in one particular project).
Here is a tutorial that shows how to do custom data lists in Alfresco: http://ecmarchitect.com/archives/2010/04/25/1156. I wrote it against Alfresco 3.3 and haven't tested it against the newest versions, but the content modeling stuff and most Share form config stuff haven't really changed that much since then so give it a shot.
The concept of what ECM is about is evolving rapidly. As someone who's built and managed SharePoint, Documentum, Wiki farms as well as ECM services, Web services, Data services and more in large environments, traditional Web ECM definitions are not what many companies are looking for now in solutions. The Web solution does more than "pure ECM". They are also not built and managed by developers and admins in many cases as well. "User admins" is becoming the norm. SharePoint's hierarchical delegation model and customization capabilities are not an end state but they are headed in the right direction. I'm guessing newer releases of Alfresco may move in this direction as well.

What are the pros and cons of writing a plugin to let your C++ application run though a web-browser?

This is not a question about writing a web-app Vs a desktop app. It's a question about allowing a bespoke application to run in a browser though use of a custom plugin, effectively using the browser just as your render-window.
QuakeLive does this - it's a C++ application with some extra code to run through a browser. Unity3D and Torque game engines also provide deployment options to do the same thing.
Personally, I'm a bit dubious about the usefulness of such a system. But I'd welcome other opinions on the reasons why this might or might not be a good idea.
Not sure if there's a proper term for this, please edit my tags if there is!
It depends on the application. My background is in medical imaging, but what I have to say would apply to many information system clients:
Pros:
it gets easier to build REST-based integrations between applications. This type of integrations can be used by admins to build integrated portals. (So case ID's from one application can be used to launch another with the right context etc).
ideally, users can install your application themselves, on-demand (depends on context if this is really possible)
Deployment of new versions gets easier. Usually the hosting technology has deployment built-in. In client server environments, this can save a lot of work for the IT department.
You can have a single start URL for PC's and thin web clients (like phones). This makes it easy for users to find your application.
You can centralize configuration for clients. For standalone clients, you could of course centralize configuration somehow, but if you app is web based, you always know for sure there is a server, so you can always use it.
you can offload work that's ineficcient to do locally to the server. (reduce # of roundtrips between client/server).
Cons:
Each browser vendor has its own model of wrapping the native code. There are not too many, but it's definetly extra work.
Your app has to "play nice" with the hosting application. Like when the user closes the browser window, the browser may have prescribed when and how you can ask the user to save.
updates to browsers can break your plugin.
system admins may have restricted installation of plugins, disallowing users to install your application on demand (this happens a lot for activex).
your users may not like that extra code is injected into the browser (there is a lot of malware around that does this)
you don't have the opportunity to update prerequisites before installation
I don't believe really that it's just wrapping existing code in a plugin framework.
Your application won't work anymore when the server is down...