ĐÀO TẠO DOANH NGHIỆP : SỞ KHOA HỌC CÔNG NGHỆ TỈNH ĐỒNG NAI

ENTERPRISE TRAINING: DONG NAI DEPARTMENT OF SCIENCE AND TECHNOLOGY.

HÌNH ẢNH TẬP HUẤN LỚP SHAREPOINT WORKFLOW VÀ KIẾN TRÚC SHAREPOINT

PHOTOS OF SHAREPOINT WORKFLOW AND ARCHITECTURE CLASS.

HÌNH ẢNH TẬP HUẤN LỚP SHAREPOINT WORKFLOW VÀ KIẾN TRÚC SHAREPOINT

PHOTOS OF SHAREPOINT WORKFLOW AND ARCHITECTURE CLASS.

Showing posts with label Documents Set. Show all posts
Showing posts with label Documents Set. Show all posts

Wednesday, May 9, 2012

How to create custom Document ID in SharePoint 2010


How to create custom Document ID in SharePoint 2010

Download project at here
In this article we will be seeing how to create custom Document ID provider in SharePoint 2010.

Here we are going to see how to create a custom Document ID provider in the format "Site Name . List Name . List item ID".
Open Visual Studio 2010.
Go to File => New => Project.
Select Empty SharePoint Project template from the installed templates.
Enter the Name “MsTechSharingCudtomDocumentID” and click Ok.

Deploy as farm …

Right click on the solution and click on Add a new item.
Select the Class template from the installed template.
Enter the Name as MSTechSharingCustomID.cs and click Ok.

Add the following references.
Microsoft.Office.DocumentManagement.dll

Add the following namespaces.
Using Microsoft.SharePoint;
Using Microsoft.Office.DocumentManagement;

Replace the MSTechSharingCustomID.cs with the following code.

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using Microsoft.SharePoint;
using Microsoft.Office.DocumentManagement;

namespace MsTechSharingCudtomDocumentID
{
public class CustomIDProvider : DocumentIdProvider
{
private string idFormat = "{0} . {1}. {2}";

public override string[] GetDocumentUrlsById(SPSite site, string documentId)
{
string itemUrl = string.Empty;
// Only proceed if we have the site and document id
if (site != null && !string.IsNullOrEmpty(documentId))
{
string[] splits = documentId.Split('@', ' ');
string webName = splits.Length > 0 ? splits[0] : null;
string itemId = splits.Length > 1 ? splits[1] : null;
try
{
SPWeb web = string.IsNullOrEmpty(webName) ? site.OpenWeb() : site.OpenWeb(webName);
SPListItem item = null;
Guid itemGuid = new Guid(itemId);
// Find the item among the lists on the specified web
foreach (SPList list in web.Lists)
{
try
{
item = list.Items[itemGuid];
}
catch
{
//if it's not in this list, go to the next one
continue;
}
if (item != null)
{
itemUrl = web.Url + "/";
itemUrl += item.Url;
}
}
}
catch (Exception) { /* item not found, return an empty array*/ }
}

if (string.IsNullOrEmpty(itemUrl))
{
return null;
}
else
{
return new string[] { itemUrl };
}
}

public override string GenerateDocumentId(SPListItem listItem)
{
if (listItem == null)
{
throw new ArgumentNullException("listItem");
}
return string.Format(this.idFormat, listItem.Web.Title, listItem.ParentList.Title, listItem.ID.ToString());
}

public override string GetSampleDocumentIdText(SPSite site)
{
return string.Format(this.idFormat, "/", "0");
}

public override bool DoCustomSearchBeforeDefaultSearch
{
get { return false; }
}
}
}
 Right Click on the Feature and click on Add Feature.
 
Rename the feature as MSTechSharingCustomIDReciever.
Change scope to site
Right click on CustomIDProviderReciever and click on Add Event Receiver.
Now the entire solution looks like following.

Replace CustomIDProviderReciever.EventReceiver.cs with the following code.

using System;
using System.Runtime.InteropServices;
using System.Security.Permissions;
using Microsoft.SharePoint;
using Microsoft.SharePoint.Security;
using Microsoft.Office.DocumentManagement;
namespace DocumentIDProvider.Features.CustomIDProviderReciever
{
    [Guid("e806be7b-a8e1-40a9-ab9a-037e2eb522c9")]
    public class CustomIDProviderRecieverEventReceiver : SPFeatureReceiver
    {
        public override void FeatureActivated(SPFeatureReceiverProperties properties)
        {
            DocumentId.SetProvider(properties.Feature.Parent as SPSite, new CustomIDProvider());
        }
public override void FeatureDeactivating(SPFeatureReceiverProperties properties)
        {
            DocumentId.SetDefaultProvider(properties.Feature.Parent as SPSite);
        }
    }
}
 
Build and deploy the solution.
Go to the site where you have deployed the solution.
Note: three below steps you aren't need do because it only configure and use Document IDS no code
      ////////////////////////////   ////////////////////////////   ////////////////////////////   ////////////////////////////   //////////////////////////// 

Go to Site Actions => Site Collection Administration => Site collection features => click Active “Document ID Service”
  
    Go to Site Actions => Site Collection Administration => Document ID settings
  
    then input IDS

////////////////////////////   ////////////////////////////   ////////////////////////////   ////////////////////////////   //////////////////////////// 
Add a document and check the document ID. You see document ID have not appeared (if error)
 
How to Solve:
Go to Central Admin => Monitoring => Timer Jobs => Click to “Check job status” link, then find to “Document ID enable/disable job” at “Scheduled” and click to “Document ID enable/disable job” with site which you have deployed the solution.

You see timer job have not ran


Change schedule to minutes: 5 then click Run Now

Continue Go to Central Admin => Monitoring => Timer Jobs => Click to “Review job definitions” link
Click to “Document ID assignment job” link

Change schedule to minutes: 5 then click Run Now

You see have 2 services follow Minutes

Waiting 5 minutes: you see Document ID appear on view

Create new document or upload document again and see document ID with: "Site Name . List Name . List item ID".

Sunday, March 4, 2012

Article 1: How to create new document sets on sharepoint 2010


Open your site
Click Action | Site Settings
In Galleries | click “Site content types”
Click to link “Create”
Set properties follows as:
After create content types successful, click to hyperlink “Add from new site column” to add column for content types
Enter name StatusField, choice data type (option)
Create new group for column content types
Back to top level site, click to Site Actions | Site Settings, under Site collection Administrator choose Site collection features
Active Document Sets feature
Open your document library | Library Settings | Advanced settings
At “Allow management of content types”, choose Yes
After “Allow management of content types”, will appear Content types follows as then click to hyperlink “Add from existing site content types”
On “Select site content types from”: choose EOfficePortal
Add content type “FinanceDoc” then click OK
Content type is added to library
Open your library where you configure content type, you see on menu “New Document” appear content type “FinanceDoc” and click to it
Set Name 
After create document sets, you can upload document to there
Document is added to document sets

Article 2: Workflow visual for content types (Document sets)


Open file Elements.xml of workflow, see tag <AssociationCategories>List</AssociationCategorieswith category is List
Change Category from List to ContentType follows as
Build and deploy workflow then open your site | Open your list where workflow is deployed | Add a workflow on Ribbon
Choose your content type “FinanceDoc” then choose workflow
Input name’s workflow
After create workflow finished, see workflow on content type “FinanceDoc” follow as:
But choose Content type “Folder”, you don’t see any workflow and any workflows other

Open your  library then Add new Content Type “FinanceDoc”
After create finished, you see workflow is running
Upload some documents, but workflow only run on content type is Document Sets “FinanceDoc”. Item is added but workflow don’t run on it.