600 likes | 771 Views
Prepared By: Kevin Cole (MCM in training) May 23, 2012. SharePoint Based Solutions SharePoint 2010. KevinCole.About (). SharePoint Developer / Solution Architect Since 2003 (9+ years) Specializing in custom development & architecture planning. Currently in training for:
E N D
Prepared By: Kevin Cole (MCM in training) May 23, 2012 SharePoint Based SolutionsSharePoint 2010
KevinCole.About() SharePoint Developer / Solution Architect Since 2003 (9+ years) Specializing in custom development & architecture planning. Currently in training for: Microsoft Certified Master for SharePoint 2010 Major clients include: http://www.spdev.info/ http://ca.linkedin.com/pub/kevin-cole/11/777/241
DevFacto.About() Seriously Awesome Place to work http://www.devfacto.com/Careers/Careers.aspx
Presentation Content • SharePoint Basics… • Basic SharePoint Solution… • Out of the box functionality… • Advanced solution…
What is SharePoint? “It’s like a filing cabinet, only digital and automated.” “Easily solves document life cycle related problems.”
A typical SharePoint problem… • We have paper forms which people fill out at branch offices to submit their hours for time entry. • Offices fax these paper forms into HR. These faxes are often poor quality. • HR has to enter the data into our payroll system by hand. • Once received, we need to retain these records for 2 years. Boxes and boxes of files…
Structure Key Points • Site Collections should be the logical boundary of administration and content. • Avoid spanning content you want to summarize across site collections. • You can have multiple content databases, but a site collection can only live in one content database (no spanning).
Lists… Libraries… • A Document Library is just a List, only with additional functionality that gives you document template abilities. • You can build a template in office, and collect / use metadata as Document Properties. • List items allow you to attach documents, and are less focused on the document / file aspect.
Internal Lists / Document Libraries • Internal Lists • Great for storing files. • Not good for videos, or large content. • Great for small lists (< 4k items). • Can store up to 30 million items… but don’t. • Poor use of SQL due to it’s dynamic requirements(uses row spanning, and multiple data-type columns)
External vs. Internal Lists • External Lists • Great for storing data in a SQL table. • Solid use of data types, and optimization abilities. • Other systems can interact easier with data in SQL. • External lists can be driven by any database, web service, or even your own .NET assembly. • Efficient way to store > 4K rows. • Search, and maintain data in SharePoint UI.
Provided Web Parts / Lists Web Parts Lists Announcements Automation around events and notices. Calendars Pretty calendar view, and connect with outlook. Document Libraries Contact Lists Task Lists Ad-hoc Custom Lists Many lists can be connected to Outlook. • Content Editor / HTML Form • Put rich html content on page. • Content Query • Summarize data within a site collection • RSS Viewer • View RSS feeds from anywhere • Table of Contents • Summarize site collection • Silverlight Viewer • Wrapper for your XAP
Questions so far? ? SharePoint Data Structures Content Types Internal vs External Lists Web Parts / Lists
Office InfoPath • Commonly misused. • Product intended for users who don’t know how to code. • Also useful for offline data collection. • Ability to add logic to document info panel in word, and extend UI to outlook.
Office InfoPath • Play to a developer’s strengths. They write web parts, html forms, etc. • InfoPath destroys developer productivity. • Once you publish an IP form, changing it is incredibly difficult. • Used with workflows, but it’s even harder to change or publish new versions.
SharePoint Designer • SP Designer 2007 was awful. • In 2010 it’s very awesome. • Can export functionality to WSP (Solution packages) for transition between testing environments. • May cause headaches for upgrades later.
Questions so far? ? InfoPath SharePoint Designer
A Divider Ok great, what does this all mean for no-code solutions?
Problem Scenario • We have paper forms which people fill out at branch offices to submit their hours for time entry. • Offices fax these paper forms into HR. These faxes are often poor quality. • HR has to enter the data into our payroll system by hand. • Once received, we need to retain these records for 2 years. Boxes and boxes of files…
Out of the box… Lists Think of a list as a way to hold data entered by users. Lists are NOT relational databases, use SQL. Lists are great for gathering data from people without having to create a whole construct to a database. Content Types Think of a content type as an Interface definition for a list item. Defines what fields are expected to exist, and their data types. Workflows Great for requesting approval, or review. Gather digital sign-off. Send requests for content disposition (expire/delete).
Out of the box… Lists Hold our emailed in PDF documents. Content Types Enable metadata on PDF documents. Improve search ability and allows use of automatic document routing functionality. Workflows Allow HR to Approve or Reject submissions and bounce them back.
Questions so far? ? Lists Store Submitted Documents Content Types Provide Metadata & Abstraction Workflows request approval.
Out of the box… Alerts Notify users when items added, updated, deleted. Instant, daily, or weekly summary. Content Organizer Automatically direct content to places based on metadata and rules. Incoming Email Receive email and documents as attachments. Great way to have people outside contribute documents internally.
Out of the box… Alerts Weekly summary of new digital PDF submissions to payroll rep for processing. Content Organizer Ship the digital PDF files off to the records center for archival. Incoming Email Documents are emailed in, instead of faxing. Better visual quality by using a newer scanner, which could even be configured to send the email.
Questions so far? ? Alerts summarize received items weekly in one email Content Organizer routes approved documents to record center. Incoming Email receives scanned copies, and stored them into a list
Out of the box… Records Management (Records Center) Declare items as records to preserve them (prevent edit/delete). Acts as a repository for documents marked as records. A separate site collection allows different ownership rights.
Out of the box… Records Management (Records Center) Store our digital copies in a searchable and protected way. Automatically remove them after 2 years.
No-Code SharePoint Solution People fill out a paper form, scan it in, and email it to SharePoint. It is saved to a list which tracks the progress of processing the document with an approval workflow. After it is approved (processed) by Payroll Content Organizer archives it in the records center which manages disposal policies.
No-Code SharePoint Solution • All functionality is out of the box, configuration based. • Can be setup in under a day. • Solves the major problems like manual transmission, poor quality faxes, and digitization of records. • Plays to SharePoint’s strengths as a document and content management source.
Questions so far? ? Records Center used to define policies around retention. Out of the box driving a simple solution.
A Divider SharePoint can get you there with no code. What about a little code?
Problem Scenario Remaining No-Code Problems Solved With Some Code Digital / web forms. Data saved to a database. Payroll reviews data entered in one place. Payroll can export data for import into external system. • Paper based forms. • Scanned in and emailed. • HR enters data manually. • Approval can be clunky.
Out of the box… External Content Types It’s a list, except content is stored externally like in an SQL DB. Some limitations, and ECTs are made using SharePoint Designer. Data can come from web services, databases, and even .NET libraries. Content Query Web-Part Display items queries from lists across sites. Can be used to show items of certain content-types etc. XSLT formatting for output. Can use XSLT to transform result into JSON as well. REST / WCF / ListData.svc Query list content using jQuery / JSON / mobile platform. Can attach as a web service endpoint in your code.
Out of the box… External Content Types Allows us to either write data to web service API provided by payroll system, or into an SQL database for more efficient data storage. Content Query Web-Part Query data entered into the system, and summarize it into a format the payroll person is able to copy / paste into the payroll entry system. (Still manual, but way less errors). REST / WCF / ListData.svc Save data from our html form, using JavaScript, into SharePoint. Can host the web page outside of sharepoint.
Some-Code SharePoint Solution Employees fill out a form that looks like the paper form on website. JavaScript saves the data to an external list into SQL. Payroll reviews entries, and ‘prints’ a PDF copy and archives that. A Content Query Web Part transforms entered data into something they can import into payroll. (Or payroll can pull data entered into SQL database)
Some-Code SharePoint Solution • Uses out-of-the box functionality. Doesn’t require deployment of a solution package (WSP). • Code part of solution is the html / java script. Custom HTML UI is for employee’s benefit to reduce perceived process change. • Harder to setup, and possibly maintain. But solves the problem scope entirely. • Involves training employees and payroll.
Questions so far? ? ListData.SVC Rest API allow us to save data from a data entry screen into a SharePoint list. External Lists Store row based data in SQL Content Query Web Part can use XSLT to collect and transform data for us.
Ugh…. That last solution sounds complicated and hard to maintain.
Ugh…. That’s because it is complicated and hard to maintain or change.
Custom Code • Need the development life cycle, or want complete control / automation; Custom code is the way to do it! • SharePoint automates the work involved in the document life-cycle, but integration with external systems can be tricky. • It’s really good at simple ad-hoc solutions that improve quality and reduce effort around manual document management processes.
Questions so far? ? Complex low-code solution Custom Code reasons Maintenance and understandability.
Problem Scenario Remaining Problems Solved With Custom Code Full life-cycle. C# / SQL. Ability to automatically migrate data (if allowed). Ability to generate PDF for archival by code on approval. Full control over user experience and design. • Hard to maintain / update. • Manual data migration into payroll system. • Manual PDF creation by payroll, for archival. • Solution may not be seen as intuitive to payroll person.
Web-Parts & .NET (Code stuff) • Web Parts are just like a web control, only with fancy chrome around them, and have built in functionality for storing customizations. • Web Parts can contain Web Controls, you can build out a web control, and make it a child of a web part. • Visual Web Parts are a UserControl (ASCX) with code behind ( A web part uses an ascx as the UI).
All Code SharePoint Solution Employees fill out a form that looks like the paper form, in a web-part. Payroll visits the website weekly and reviews entries using a web part that lists them. Payroll edits / approves entries. The system generates a PDF and sends it to the records center for retention, and processes approved entries into payroll system.
All Code SharePoint Solution • Custom web parts written in C# for data entry, display, and approval. • Web parts are just fancy wrapped ASP.NET web controls. • SQL backend for data storage and processing into payroll system. • When payroll entry is approved by payroll a PDF version is generated and sent to the records center for archival. • This is the most automated solution, and leverages your skills as a .NET / SQL developer.
Key Points • Either do it out of box or custom code; avoid mixing, that is where headaches begin. • SharePoint may not solve everything, but it takes care of a lot of the manual pains. • SharePoint is NOT a relational database. • The golden rule: • Play to SharePoint’s strengths to avoid headaches. It does documents, and ad-hoc meeting coordination really well.
Kevin.Cole @DevFacto.com Download this deck (along with more content in it) from: http://bit.ly/JFRjVC