Estudo de caso MRO fluxo de traballo empregando Moss, SPD, InfoPath & servizos web.

Visión global

Esta entrada describe un estudio de caso describindo un MRO real (Mantemento, Reparación e Operacións) proceso de aprobación de fluxo de traballo aplicado en Moss.

Esta non é unha discusión aberta técnico, pero serve para dar un exemplo do mundo real que demostra como a plataforma MOSS atendeu a unha necesidade do mundo real.

(Esta entrada é cruzar publicado entre http://paulgalvin.spaces.live.com e http://blogs.conchango.com)

Fondo

Proceso de MRO do cliente fora caracterizada pola seguinte

  • Proceso de aprobación manual.
  • Algún soporte usando follas de cálculo Excel.
  • Irregular approval process. The same MRO purchase approval process would vary day to day, persoa por persoa.
  • Lotes de papel e sinaturas escritas á man — solicitudes de compra necesarios ata 3 subscricións por escrito antes da aprobación final.

Os obxectivos deste proxecto incluíu:

  • Totalmente automatizar o proceso.
  • Facer cumprir as normas da empresa para a súa aprobación.
  • Proporcionar visión consolidada de MRO adquisitivo para varios xerentes.
  • Detailed audit trail.

As a side effect of the solution, subscricións escritas non eran máis necesarios.

Proceso de Aprobación

The approval process consists of four "swim lanes": Originador, Director directo, Director funcional e director de división.

Originador:

Sees the need for the purchase and starts the process. Note that the originator may or may not actually enter the purchase requisition, but instead direct another staff member to do so. Algunhas veces, the originator does not have the technical expertise to fill out the PO requisition. Por exemplo, un usuario pode querer solicitude dun novo portátil, pero non sabe o mellor vendedor, Patróns de TI, etc. Neste caso, the originator works with IT and IT actually fills out the requisition.

Director directo:

Este é o director directo do autor (que pode ser distinta da persoa que realmente entrou na petición de po en Moss). Direct managers must approve the PO requisition before the system seeks approval further down the line.

Xerente Funcional:

The functional manager is the individual responsible for ensuring that the proposed purchase conforms to enterprise standards within the scope of a particular corporate function. Por exemplo, IT purchases are approved by an IT functional manager.

Director de División:

Division managers approve purchase requisitions strictly by dollar amount. Division manager approve purchase requisitions in excess of a configurable dollar amount.

A solución

We used the following tools and components to implement the solution:

Moss: Serves as the platform off which everything else "hangs". MOSS provides bedrock services for security, datos mestre, rutas de auditoría e outras características.

InfoPath Forms Services: Un compoñente Moss, Isto permite aos usuarios cubrir solicitudes de compra a través dun navegador web.

SharePoint Deseño (SPD): Usan SPD para aplicar o proceso de fluxo de traballo automatizado.

Servizo web: A c# web service enhances the user experience by enabling cascading selections lists in the InfoPath form and provides better performance with respect to filtering data. Ver aquí a un profundo mergullo técnico sobre o tema e as nosas razóns para usalo.

Listas personalizadas: MOSS user profiles provided a given user’s direct manager, but did not provide most of the data that controlled workflow decisions (e.g. O director divisional é necesaria para aprobar a petición PO). We used custom lists in an "Enterprise Data" site to maintain data such as "Divisional Manager Approval Dollar Amount", "Functional Area Manager" and so forth. Lists integrated very nicely with InfoPath and also provide create/update/delete (CRUD) función con auditoría e seguridade para fóra da caixa.

Casos de uso

Este caso ilustra a forma na que o uso da solución encaixa:

  1. Paul wants a new laptop. He describes his needs to Vivek, unha persoa de TI familiarizado cos estándares portátiles corporativos, provedores preferentes, etc.
  2. Vivek conéctase Moss, accesses the PO Requisition form and enters the requisition on behalf of Paul. The form prompts Vivek for a purchase category which then uses the web services to populate a drop-down list of company-approved vendors. Vivek also specifies the corporate functional area of this purchase (e.g. "IT" or "Finance").
  3. Fluxo de traballo baseado en SPD comeza, director e encamiña a petición ao seu director directo de determina Paul, Stacy.
  4. Stacy aprobar a solicitude de compra.
  5. SPD workflow inspects the requisition and determines it’s an IT purchase. It routes the workflow to the IT functional manager, Wonson.
  6. Wonson aproba a petición.
  7. SPD fluxo de traballo inspecionar novo a petición e determina que o valor de compra supera un valor en dólar maxium e encamiñar-lo para o director da división de aprobación.
  8. O director da división de aprobar a solicitude de compra.

Notas

  • The use case demonstrates a "clean" run with no rejections or jumps.
  • Every approver has the ability to approve or reject the requisition as well as provide written comments. These are logged in the audit trail.
  • Se un director responsable rexeita a petición de compra en calquera punto, the PO requisition is "dead" and the process must be started from the beginning.
  • Fluxo de traballos notifica o autor, a cada paso do proceso de.
  • Non sinaturas manuscritas — cliente determinado (despois dalgunhas recomendacións fortes) que a banda de auditoría, tal como previsto vía historia de fluxo de traballo, cumpriu a súa auditoría que.
  • Esforzo — it took approximately three man weeks to implement this solution.

Conclusión

This solution leverages MOSS as a development and run-time platform. The client was able to leverage core MOSS features to automate a routine business process that affected nearly every employee in the company. With the exception of a simple web service (que se aproveita Moss), almost no actual "programming" foi necesaria.

The solution also serves as a "showcase" ao cliente, demonstrating how different MOSS features can be combined to create a fully featured business application and generate new consulting opportunities in the future.

Glosario

MRO: Mantemento, repair and operations. These purchases typically include items such as notepads, cadeiras, ordenadores persoais, impresoras, teléfonos móbiles e similares.

Exame 70-542: Recomendacións do estudo (Microsoft Office SharePoint Server 2007 – Desenvolvemento de Aplicacións)

Actualización: En comentarios, alguén publicou este enlace: http://www.midnightmonkey.co.uk/blog/blogging/?page_id=5. It looks good to me too.

Eu pase o exame técnico Moss hoxe, entitled "Microsoft Office SharePoint Server 2007 – Application Development". I found the exam to be pretty rigorous and that it matched up quite well with Microsoft’s guía de preparación.

Veño a traballar con Moss nunha base diaria e nada bate real hands-on experiencia para todos estes exames.

Devandito, I took note of what I was studying as I studied. I believe that all of these resources are helpful, sobre como un medio de reforzar que a experiencia hands-on.

Asunto Ligazón
Servizos de Excel http://msdn2.microsoft.com/en-us/library/ms519581.aspx
Procurar No special recommendation. I had taken a class on search earlier this year and real-world experience carried me through. Work with the "search center" compoñente do Moss.
BDC http://msdn2.microsoft.com/en-us/library/ms563661.aspx
Audiencias http://msdn2.microsoft.com/en-us/library/ms496822.aspx
Perfís http://msdn2.microsoft.com/en-us/library/ms496822.aspx
Xestión de contido http://www.sharepointblogs.com/tonstegeman/archive/2007/02/01/moss-custom-policies-part-1-creating-a-custom-information-management-policy.aspx

http://blogs.msdn.com/ecm/archive/2007/03/04/customize-the-page-editing-toolbar-in-moss-2007.aspx

http://msdn2.microsoft.com/en-us/library/aa674506.aspx

DNI Hands-on traballar con KPIs en Moss.
Fluxo de Traballo http://msdn2.microsoft.com/en-us/library/aa830816.aspx
Información MGMT http://msdn2.microsoft.com/en-us/library/bb397403.aspx
Variacións http://aspnetcoe.wordpress.com/2007/02/09/customize-variation-root-landing-logic/
Rexistros MGMT http://blogs.msdn.com/recman/archive/2006/06/16/633393.aspx
Infopath http://msdn.microsoft.com/msdnmag/issues/06/08/infopath2007/default.aspx

Moitas desas conexións levou máis ligazóns e eu tendía a seguilos ata preto de 3 niveis de profundidade.

Eu non diría que todo o que lin directamente aplicada ao exame, pero eu non me arrepinto de ler calquera e, aínda que algúns bits non eran directamente relevantes. É todo de bo material para saber e eu recomendo encarecidamente o material para todos os desenvolvedores Moss ben redondeado aspirantes.

Moss / WSS Resultados da busca (e DataViews): ver os datos XML en bruto

Isto pode ser evidente para moitos, pero mentres estudaba para o meu exame de programación Moss, Aprendín que é moi fácil obter o XML real desde unha consulta a través da interface de usuario.

Un método máis sinxelo é como segue:

  • Acceso procura avanzada.
  • Realice unha busca que retorna algúns datos.
  • Edite a páxina (vía configuración do sitio).
  • Change the XSL to the following:

<?xml versión="1.0" codificación="utf-8"?>
<
XSL:stylesheet versión="1.0" xmlns:XSL="http://www.w3.org/1999/XSL/Transform">
<
XSL:output método="xml" versión="1.0" codificación="UTF-8" indent="si"/>
<
XSL:modelo corresponden="/">
<
pre>
<
XSL:copy-of seleccionar="*"/>
</
pre>
</
XSL:modelo>
</
XSL:stylesheet>

  • Hit apply.
  • View Source in the browser.

Note that the <pre> tag doesn’t do much except serve as a convenient marker when you view the results.

This trick can be very helpful when working with managed properties and customizing search. It will provide a definitive list of the XML available for you to use in your xslt which would have been very helpful the last 25 times I created some customized search results.

This ought to work for dataviews as well, though I have not tested that out as yet.

O CQWP para WSS? Probe esta…

Eu vexo que Eric Kraus was faced with a requirement normally met with a content query web part. O problema? He was in a pure WSS environment with no access to the CQWP. Rather than curling up in the fetal position (un desexo que teño que loitar todos os días, parece), he came up with solution that at least gives WSS shops a fighting chance to succeed. It’s described aquí.

Vista brillante e detallada de API de xestión de contidos

Stefan Goßner has put together a terrific 4-part series on the SharePoint Content and Deployment API aquí. It offers a great overview and very good examples in code (C #).

I first picked up this link from joris poelmans blog at http://jopx.blogspot.com/.

Mesmo se lle gusta de min, in that you have not had to do much hands-on work for content management, this is well worth 20 minutes of your time to read.

Using the API, one can:

  • Export and import content very easily.
  • Re-parent content. If you want to export some content from a site "A" and send it to site "B" but in a totally new place in the hierarchy, this is possible.
  • Export content from a site A and import selected bits into site A.
  • Re-link content (meaning deal with all the hyperlinks).

WSS, libs doc & listas, Columnas calculadas inclúen [Me]

Someone on the Internets was asking about how to create a calculated column on a list that would show a value formatted as "[Usuario] – [Estado] – [Localización]" as in "Paul Galvin – Beber [libre] Cervexa – The Beach".

Paul would go in and update his entry in the list and the calculated column would update appropriately. O [Usuario] usar por defecto ao que o usuario entrar / actualización da lista.

A calculated column cannot use "volatile" Funcións tales como o [Me] ou [Hoxe]. I solved it in a test environment with these steps:

  1. Create a text column named "Current User".
  2. Define o valor por defecto para [Me]
  3. Create a calculated column called "Calc Test".
  4. Define o seu valor = [Usuario actual]

Fun, engade un elemento á lista e funcionou.

Pasou o meu 70-315 exame hoxe!

I passed the "Developing and Implementing Web Applications with Microsoft Visual C# .NET and Microsoft Visual Studio .NET" exame hoxe no gran estado de Nova Jersey, nas oficinas venerábeis Solartech en HASBROUCK Heights.

I put this exam up there with BizTalk in terms of difficulty. You can’t fake your way through it.

Para estudar, Eu usei o da auto-pasado libro Kit de Formación MCAD / MCSD dereito Desenvolvemento de Aplicacións web con Microsoft Visual Basic. Net e Visual C #. NET.

Directrices de Microsoft (aquí) are exactly correct IMO. The book addresses everything and if you have a modicum or real-world experience, it should be a straight-forward exam. If not, take the time get some real world experience or at least execute the labs in the book. That will probably give you what you need.

Eu mesmo ir tan lonxe como para recomendar o libro para pro, especially self-taught people like myself. It covers some basic stuff which I just never had a reason to stumble upon in my travels and I’m kicking myself a little bit for never having taken the time to learn them.

SharePoint Deseño, “Recoller datos de usuario” e utilizar estes resultados.

Empregue as "Recoller datos de usuario" action to create and assign a task to a user that prompts them for data. Among other things, Eu usei-o para solicitar un usuario para aprobar ou rexeitar unha proposta e introducir algúns comentarios.

Esta acción toma a forma:

Recoller datos a partir de este usuario (Saída Variable: collect1)

Premendo en datos tira unha serie de cadros de diálogo onde se especifica que datos o usuario debe proporcionar ao completar a tarefa e este usuario É obvio.

A parte de saída (Variable: collect1) saves the ID of the task. You use this in your workflow to extract the user’s actual response via the "Compare any data source" condition.

Esa condición mostra como

Se campo é igual a valor

Prema en campo e, a continuación, o F(x) icon and it pulls up another dialog box. Use this generalized dialog box to to tell SPD two things;

1. What is the list and column whose value you want to compare.

2. Como debe ser o motor de workflow atopar a liña específica nesa lista?

Para iso:

  1. Cambiar a fonte "" dropdown to point at the correct task list. Note that the dialog box expands to show a "Find the List Item" sección.
  2. No campo de investigación Detalles despregable, seleccione o nome do campo cuxo valor quere (iso mapeia para o que chamou o diálogo Recoller datos de arriba).
  3. In the "Find the List Item" sección, selecciona "Tarefas:ID" no Campo de correo.
  4. No campo valor, prema no f(x). This opens yet another dialog box.
  5. Cambiar a fonte de datos "de fluxo de traballo"
  6. Seleccione a variable fluxo de traballo que se corresponde coa saída "para variable" da acción de recollida de datos.
  7. Prema en Aceptar / Aceptar e listo.

Parece que iso para min:

imaxe

Neste punto, agora pode usar este valor no seu fluxo de traballo, conforme esixe.

Notas adicionais:

Como un breve aparte, I always create an appropriately named workflow variable of type "List Item ID" and use that instead of the auto-generated "collect1".

Este "comparar calquera fonte de datos" conxunto de diálogo é usada en varios lugares diferentes en SPD e dominar a pena.

Final ==

Technorati Tags:

Intermitentes fallos do IE, cando acceso a documentos nunha biblioteca de documentos WSS / Moss

Eu teño sido atormentado por este para 9 meses e vexo que a xente no MSDN e foros Usenet ten too.l

Ás veces, ao acceder a un documento de Word (ou outros tipos doc) desde unha biblioteca de documentos fai que o Internet Explorer para simplemente bater e ir (tomando todas as pestanas con el se hai algún aberto).

Esta corrección MS pode resolver-lo: http://support.microsoft.com/kb/938888

Tamén, hai algunha descrición sobre o problema aquí:

http://jopx.blogspot.com/2007/07/solving-internet-explorer-crash-when.html

Será que o XPath verdadeiro paso adiante?

Visión global:

Creado unha lista personalizada que xere un tipo de contido con algunhas decenas de columnas.

Engadido a unha páxina e, a continuación, a través SPD, convertido nunha exhibición de datos.

Problema:

My Xpath expression was returning blank for a column named "Current Position". I referenced it thusly:

    <table border="1">
      <XSL:for-each select="/dsQueryResponse/Rows/Row" >
        <tr>
          <td>
            Estado actual:
            <XSL:value-of select="@Current_x0020_Status"></XSL:valor de>
          </td>
        </tr>
      </XSL>
    </mesa>

The column in the CT is named "Current Status". It shows up in the lookup as "Current Status". Everywhere you look, you see "Current Status".

Mentres debatendo locamente sobre, procura dunha solución, I instead referred to "@Recruiter" e velaí! — that actually returned back the current status. I expected it to return back the recruiter when I did that.

Solución:

I poked about in SPD. Go to that page in SPD and it shows the data view. You can inspect the actual data provided to the view and associated Xpath. Here I found out that indeed, the Xpath pointed at "Recruiter". Strangely enough, the "actual" recruiter field pointed from "Recruiter1".

Tirar:

SPD proporciona expresións XPath autoridade para liñas & columnas nunha exhibición de datos.

Segundo, it shows the actual data. So for example, unha columna de tipo amosar esta:

<nobr><van><A HREF="/sites/Corporate/HumanResources/TalentAcquisition/_layouts/userdisp.aspx?ID=17">Galvin, Galicia</A><img border ="0" height="1" width="3" src="/_layouts/images/blank.gif"/><a href = "javascript:’ onclick = 'IMNImageOnClick();return false;’ class = "ms-imnlink '><nome img = 'imnmark’ title =” border =’0′ height = '12’ width = '12’ src = "/ _layouts / images / blank.gif’ alt = 'Non hai información de presenza’ SIP = 'PGalvin@xxx.com’ id = 'imn_77, type = SMTP' /></un></van></nobr>