Learning modern web development technologies for SharePoint.
What it does
It automatically classifies documents uploaded to a SharePoint library and provides a friendly user interface to track their status.
How we built it
Document Classification Processing We used Web Hooks for SharePoint to handle the notification of the document upload. This notification is received in a Azure Web App (MVC), which puts it in Azure Queue for later processing by an Azure Web Job. This jobs runs continuously, so it can respond within 5 seconds and avoid timeouts. It fetches the notification from the queue and queries target list for all new documents since last job execution (retrieved from Azure SQL Database). Then, it classifies the document based on its content using a keyword search algorithm, updating the corresponding list item field in SharePoint. Finally, it preserves the state of the last processed item in Azure SQL Database. Both, Azure Web App and Azure Web Job, are SharePoint Provider-hosted apps.
We used a client web part to display the list of documents that have been classified by our system.Using Document Card component, user is able to preview a document, to edit it in Office Online and to approve it. This web part was built using SharePoint Framework, SharePoint REST API, ReactJS and Office UI Fabric. Besides, it visualize statistics of the different document categories using ChartJS.
Challenges we ran into
- Integrate all Azure Services for document classification processing using Web Hooks
- ReactJS :)
- Office UI Fabric layout and components
- Missing references in scaffolding: @microsoft/sp-client-preview and @microsoft/sp-webpart-base
Accomplishments that we're proud of
- Working end to end system
- Successful implementation of Microsoft web technologies still in preview.
- Provide powerful and lightweight user interface
What we learned
Web Hooks, SharePoint Framework, TypeScript, ReactJS, Office UI Fabric components...
What's next for Document Classifier
- Integrate with Azure Machine Learning/Improve our classification algorithm.
- Route classified and approved documents to special libraries.
- Introduce more customization options for users.