The GEIDI web will be a part of Sharepoint, so basically we're going to create a site template and this site template will use GEIDI web as its landing page.
We're going to make GEIDI web as web part.
This GEIDI web will interact with three document libraries: XML, Docx, and PDF.
Flow of events:
- User input details in GEIDI web OR upload an xml
- The xml produced will be validated against a schema
- If it's not valid, it will tell which is not valid.
- If it's valid, the xml will be added to XML document library
- For xml document library, we will have a item added event, which will trigger to execute code which will produced the docx (QuickTrustV2)
- The produced docx will be added to Docx document library.
- For Docx document library, we will have two event receivers (1. Item added 2. Item updated)
- When docx is added to Docx document library, GV will be notified by email and in the email, a link to the item will be provided.
- GV must publish the docx to trigger Item updated which will create the PDF.
- The produced PDF will be added to PDF document library.
- For PDF document library, we will have item added event, which will basically trigger to send an email to the user who input the xml at first place.
So basically, we need to make content types for this document libraries, and use this content type to be able to do all these stuffs.
It seems simple, but it may get hairy.
That's pretty much the planned high-level design.
if it's possible, we can use workflow, but event receivers are easier to implement.
So basically GEIDI web is used to produce XML.
and QuickTrustV2 will be used to produce docx from xml.
Producing PDF is handled by Office objects by installing the pdf extension for office.
Content types are needed which contain fields that will be used around.
Xml Document Library:
Fields: fields from sharepoint original document library (document field = xml document, title = xml document name) + user email
ItemAdded (1. Call web service to create docx from the xml (the web service will return the document location (sharepoint relative path)), 2. Create an item in docx document library (document = docx created, title = same title as xml item's title, lookup field to this xml), 3. Delete the document from the location in step 1 as it's no longer needed)
Docx Document Library:
Fields: fields from sharepoint original document library (document field = docx document) + lookup field to xml document library (show the title)
ItemAdded (1. Email GV (get from configuration list) a notification with the link to this added item)
ItemUpdated (1. Check if the item is published or not, if it is, then create the pdf in pdf document library (using word 2007 save as pdf) (document = pdf created, title = same title as docx item's title, lookup field to this docx item))
PDF Document Library:
Fields: fields from sharepoint original document library (document field = pdf document) + lookup field to docx document library (show the title)
ItemAdded (1. Email the user (by using lookup to trace the user email in xml document library), this added pdf as attachment, (email subject, email body will be from configuration list))
Fields: Key (based on title) + Value (textfield with length of 1000)
We will use <system.net> configuration section which will be put manually in sharepoint web.config.
- use Visual Studio 2008, C#, .NET Framework 3.5
- comment codes sparringly (so everyone can easily pick up the work and continue)
- use Gerald De Run's visual studio template when creating the solution
- for this project, one solution (wsp or cab) is produced which contains features.
- all the document libraries and lists instances are created in the site collection (root web).
- Create the solution based on Gerald De Run
- Create the project to create document libraries and list
- Create the project for event receivers
- Testing the event receivers by creating dummy stubs (This testing's purpose is to show that all document libraries' event receivers work properly)
- Dummy stub to add item to xml document library
- Dummy stub (web service) to create an empty docx to be added to docx document library
- Dummy stub (emulating user publish) which will call word 2007 save as pdf to create pdf from docx to be added to pdf document library