15 Eyl 2010

Documentum'dan dosya alma ve dosya ekleme

Documentumda repository'e dosya eklemek ve dosya almak için aşağıdaki kodlar kullanılabilir.


Dfs sınıfında Temel özelliklerin metotlar halinde sunulduğu yapı mevcuttur.

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using Emc.Documentum.FS.DataModel.Core.Context;
using Emc.Documentum.FS.Runtime.Context;
using Emc.Documentum.FS.Services.Core;
using Emc.Documentum.FS.DataModel.Core;
using Emc.Documentum.FS.DataModel.Core.Profiles;
using Emc.Documentum.FS.DataModel.Core.Properties;
using Emc.Documentum.FS.DataModel.Core.Content;
using System.IO;

namespace WindowsFormsApplication3
{
    class Dfs
    {
        string m_RepositoryName;
        string m_Username;
        string m_Password;
        
        public string Password
        {
          get { return m_Password; }
          set { m_Password = value; }
        }

        public string Username
        {
            get {return m_Username;}
            set { m_Username = value;}
        }
      
        public string Repository
        {
            get{ return m_RepositoryName; }
            set{m_RepositoryName = value;}
        }
        
        /// <summary>
        /// Create ServiceContext
        /// </summary>
        /// <param name="repository"></param>
        /// <param name="userName"></param>
        /// <param name="password"></param>
        /// <returns></returns>
        public IServiceContext createContext(String repository, String userName, String password)
        {
            //build context factory and an empty context
            ContextFactory cf = ContextFactory.Instance;
            IServiceContext context = cf.NewContext();

            //create a repository ID and seed it with the login credentials
            RepositoryIdentity repoIdent = new RepositoryIdentity(repository, userName, password, "");

            //seed the IServiceContext with the Repository ID
            context.AddIdentity(repoIdent);

            ContentTransferProfile ctp = new ContentTransferProfile();
            ctp.TransferMode = ContentTransferMode.UCF;
            context.SetProfile(ctp);
            
            return context;
        }
        /// <summary>
        /// Register the IServiceContent
        /// </summary>
        /// <param name="context"></param>
        /// <returns></returns>
        public IObjectService createObjectService(IServiceContext context)
        {
            //create a service factory and instantiate the IObjectService
            ServiceFactory sf = ServiceFactory.Instance;
            IObjectService objectService =
                sf.GetRemoteService<IObjectService>(context);
            return objectService;
        }

        public void createDocument(IObjectService objectService,String objName,String filePath)
        {
            //build object identity
            ObjectIdentity docIdent = new ObjectIdentity();
            docIdent.RepositoryName = Repository;

            //build data object, seed with object identity
            DataObject dataObj = new DataObject(docIdent, "dm_document");
            
            dataObj.Contents.Add(new FileContent(filePath, "jpeg"));

            Console.Out.WriteLine("Creating new PropertySet instance...");

            //build property set
            PropertySet propertySet = new PropertySet();
            propertySet.Set("object_name", objName);

            //seed data object with property set
            dataObj.Properties = propertySet;

            //build data package, seed with data object
            DataPackage dataPack = new DataPackage(dataObj);
            OperationOptions options = null;

            //call the create method
            objectService.Create(dataPack, options);

        }

        public void getDocumentIdFromPath(IObjectService objectService, string filePath) 
        {
            ObjectPath docPath = new ObjectPath(filePath);
            ObjectIdentity docIdentity = new ObjectIdentity(docPath, "doc_rep");
            ObjectIdentitySet docSet = new ObjectIdentitySet();
            docSet.AddIdentity(docIdentity);

            PropertyProfile profProfile = new PropertyProfile();
            profProfile.FilterMode = PropertyFilterMode.ALL_NON_SYSTEM;

            ContentProfile contentProfile = new ContentProfile();
            contentProfile.FormatFilter = FormatFilter.ANY;

            OperationOptions options = new OperationOptions();
            options.PropertyProfile = profProfile;
            options.ContentProfile = contentProfile;

            DataPackage returnPack = objectService.Get(docSet, options);

            DataObject docObject = returnPack.DataObjects.ElementAt(0);
            /*
            FileContent content = (FileContent)docObject.Contents.ElementAt(0);
            
            byte[] file = content.GetAsByteArray();
            String fileFormat = content.Format;
            */
            byte[] file = docObject.Contents.ElementAt(0).GetAsByteArray();
            using (FileStream fs = File.Create(@"c:\getirilenDosya.doc"))
            {
                fs.Write(file, 0, file.Length);
            }

        }

    }
}

Implementasyon sınıfı olarak bir form uygulamasında butona tıklanıldığında dosya ekleyen ve verilen path'teki dosyayı bilgisayara kaydeden uygulama yapılmıştır
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using Emc.Documentum.FS.DataModel.Core.Query;
using Emc.Documentum.FS.DataModel.Core;
using Emc.Documentum.FS.Services.Core;
using Emc.Documentum.FS.Runtime.Context;
using Emc.Documentum.FS.Services.Search;

namespace WindowsFormsApplication3
{
    public partial class Form1 : Form
    {
        Dfs dfs = new Dfs();

        public Form1()
        {
            InitializeComponent();
        }

        private void button1_Click(object sender, EventArgs e)
        {
            
            
            dfs.Repository = "documentumRepository";
            dfs.Username = "username";
            dfs.Password = "password";
            IServiceContext objServiceContext=  dfs.createContext(dfs.Repository, dfs.Username, dfs.Password);
            IObjectService objService=  dfs.createObjectService(objServiceContext);
            
            //Bilgisayardan alınan dosyanın documentuma atılması
            String filePath = "C:\\test_picture.jpeg";
            dfs.createDocument(objService, "DosyaAdi",filePath);
            
            //Documentumda Path'i verilen dosyanın bilgilerini bilgisayarda belirttiğimiz yere aktarıyor.
            dfs.getDocumentIdFromPath(objService, "/dmadmin/mstDocument");
        }

    }
}

Hiç yorum yok:

Yorum Gönder