Estudo de caso de MRO de fluxo de trabalho usando MOSS, SPD, InfoPath & serviços Web.

Visão geral

Esta entrada descreve um estudo de caso descrevendo um MRO real (Manutenção, Reparação e operações) processo de aprovação de fluxo de trabalho implementado no musgo.

Isto não é uma discussão técnica abertamente, Mas em vez disso precisa serve para fornecer um exemplo do mundo real que demonstra como a plataforma MOSS conheceu um mundo real.

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

Plano de fundo

Processo MRO do cliente tinha sido caracterizado pela seguinte

  • Processo de aprovação manual.
  • Algum suporte usando planilhas do excel.
  • Processo de aprovação irregular. O mesmo processo de aprovação de compra MRO que variam a cada dia, por pessoa.
  • Lotes de papel e assinaturas manuscritas — compra requisições necessárias até 3 assinaturas escritas antes da aprovação final.

Os objectivos deste projecto incluído:

  • Automatizar totalmente o processo de.
  • Cumprimento das normas da empresa para aprovação.
  • Fornecer uma visão consolidada de compra de MRO para vários gestores.
  • Trilha de auditoria detalhada.

Como um efeito colateral da solução, escrito assinaturas não eram mais necessárias.

Processo de aprovação

O processo de aprovação é composto de quatro "pistas de natação": Originador, Gerente direto, Gerente funcional e o gerente de divisão.

Originador:

Vê a necessidade para a compra e inicia o processo. Note que o remetente pode ou não pode entrar na verdade a requisição de compra, Mas em vez disso direto a outro membro do pessoal para fazê-lo. Algumas vezes, o originador não tem a experiência técnica para preencher a requisição de PO. Por exemplo, um usuário pode querer um novo computador portátil da requisição, Mas não sabe o melhor fornecedor, Padrões, etc. Neste caso, as obras de originador com ele e ele realmente preenche a requisição.

Gerente direto:

Este é o gerente direto da entidade de origem (que pode ser diferente da pessoa que entrou na verdade a requisição de PO em MOSS). Gestores diretos devem aprovar a requisição de PO antes do sistema busca aprovação ainda mais para baixo da linha.

Gerente funcional:

O gerente funcional é o indivíduo responsável por garantir que a proposta de compra de acordo com normas da empresa no âmbito de uma determinada função corporativa. Por exemplo, IT de compras são aprovadas por um gerente funcional.

Gerente de divisão:

Gerentes de divisão aprovam requisições de compra estritamente pela quantidade de dólar. Gerente de divisão aprovar requisições de compra em excesso de uma quantidade de dólar configurável.

A solução

Usamos as seguintes ferramentas e componentes para implementar a solução:

MUSGO: Serve como a plataforma que todo o resto "trava". MOSS fornece serviços de alicerce para a segurança, dados mestre, trilhas de auditoria e outras características.

Serviços de formulários do InfoPath: Um componente de musgo, Isto permite que os usuários preencher requisições de compras através de um navegador da web.

SharePoint Designer (SPD): Usamos o SPD para implementar o processo de fluxo de trabalho automatizado.

Serviço Web: Um serviço de web c# aprimora a experiência do usuário, permitindo que listas de seleções em cascata no formulário do InfoPath e fornece melhor desempenho em relação a filtragem de dados. Consulte here para um mergulho técnico profundo sobre este assunto e nossas razões para usá-lo.

Listas personalizadas: MUSGO de perfis de usuário fornecido gerente direto de um determinado usuário., Mas não forneceu a maioria dos dados que controlava as decisões de fluxo de trabalho (EG. Se o gerente divisional é exigido para aprovar a requisição de PO). Nós usamos listas personalizadas em um "dados da empresa" site para manter dados como "Divisional Manager quantidade de dólar de aprovação", "Gerente de área funcional" e assim por diante. Listas muito bem integrada com o InfoPath e também criar/atualizar/excluir (CRUD) funcionalidade com segurança fora da caixa e auditoria.

Caso de uso

Este caso de uso ilustra como a solução se encaixa:

  1. Paul quer um novo laptop. Ele descreve suas necessidades de Vivek, uma pessoa de ti familiarizado com padrões de laptop corporativo, fornecedores preferenciais, etc.
  2. Vivek logs em MOSS, acessa o formulário de requisição de PO e entra a requisição em nome de Paul. O formulário solicita uma categoria de compra que usa os serviços da web para preencher uma lista suspensa de fornecedores aprovados empresa Vivek. Vivek também especifica a área funcional corporativa desta compra (EG. "ISSO" ou "Finanças").
  3. SPD com base em fluxo de trabalho inicia, determina o gerente direto de Paul e encaminha a requisição para seu empresário, Stacy.
  4. Stacy aprova a requisição de compra.
  5. Fluxo de trabalho do SPD inspeciona a requisição e determina o que é uma compra IT. Ele direciona o fluxo de trabalho para o gerente funcional, Wonson.
  6. Wonson aprova a requisição.
  7. Fluxo de trabalho do SPD novamente inspeciona a requisição e determina que o valor da compra excede uma quantidade de dólar maxium e encaminha para o gerente de divisão para aprovação.
  8. O gerente de divisão aprova a requisição de compra.

Notas

  • O caso de uso demonstra um "limpa" executar sem rejeições ou saltos.
  • Cada aprovador tem a capacidade de aprovar ou rejeitar a requisição, bem como fornecer comentários escritos. Estes são registrados na trilha de auditoria.
  • Se um Gerente responsável rejeita a requisição de compra em qualquer ponto, a requisição de PO é "morta" e o processo deve ser iniciado desde o início.
  • Fluxo de trabalho notifica o remetente em todas as etapas do processo de.
  • Não há assinaturas escritas — o cliente de determinada (Depois de algumas recomendações incisivas) que a auditoria trail conforme fornecido através do histórico do fluxo de trabalho, serviu a suas necessidades de auditoria.
  • Esforço — Demorou homem aproximadamente três semanas para implementar esta solução.

Conclusão

Essa solução aproveita MOSS como uma plataforma de desenvolvimento e tempo de execução. O cliente foi capaz de aproveitar os recursos de musgo de núcleo para automatizar um processo de negócios rotina que afetou quase todos os funcionários da empresa. Com excepção de um serviço web simples (que se aproveita de musgo), quase nenhuma programação a real"" foi necessário.

A solução também serve como uma vitrine"" para o cliente, demonstrando como diferentes recursos do MOSS pode ser combinado para criar um aplicativo de negócios totalmente caracterizado e gerar novas oportunidades de consultoria no futuro.

Glossário

MRO: Manutenção, reparação e operações. Essas compras normalmente incluem itens como blocos de notas, cadeiras, computadores pessoais, impressoras, telefones celulares e afins.

Exame 70-542: Recomendações de estudo (Microsoft Office SharePoint Server 2007 – Desenvolvimento de aplicativos)

ATUALIZAÇÃO: Nos comentários, alguém postou este link: http://www.midnightmonkey.co.uk/blog/blogging/?page_id=5. Parece bom para mim também.

Hoje passei o exame técnico MOSS, intitulado "Microsoft Office do SharePoint Server 2007 – Desenvolvimento de aplicativos". Eu achei o exame para ser muito rigoroso e que correspondia bem com da Microsoft Guia de preparação.

Tenho trabalhado com musgo em uma base diária e nada bate a real experiência hands-on para todos estes exames.

Que disse, Tomei nota de que estava a estudar como eu estudei. Acredito que todos esses recursos são úteis, particularmente como um meio de reforçar essa hands-on experiência.

Assunto Link
Serviços do Excel http://msdn2.microsoft.com/en-us/library/ms519581.aspx
Pesquisa Nenhuma recomendação especial. Eu tinha tomado uma classe na pesquisa no início deste ano e a experiência do mundo real levou-me. Trabalhar com o centro de pesquisa"" componente de musgo.
BDC http://msdn2.microsoft.com/en-us/library/ms563661.aspx
Audiências http://msdn2.microsoft.com/en-us/library/ms496822.aspx
Perfis http://msdn2.microsoft.com/en-us/library/ms496822.aspx
Gerenciamento de conteúdo 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

BI Trabalho hands-on do KPI em MOSS.
Fluxo de trabalho http://msdn2.microsoft.com/en-us/library/aa830816.aspx
Gerenciamento de informação http://msdn2.microsoft.com/en-us/library/bb397403.aspx
Variações http://aspnetcoe.wordpress.com/2007/02/09/customize-variation-root-landing-logic/
Gerenciamento de registros http://blogs.msdn.com/recman/archive/2006/06/16/633393.aspx
InfoPath http://msdn.microsoft.com/msdnmag/issues/06/08/infopath2007/default.aspx

Muitos desses links levaram a mais de links e eu tendia a segui-los até 3 níveis de profundidade.

Eu não diria que tudo que leio diretamente aplicado ao exame, Mas não me arrependo de ler alguma coisa, e mesmo se alguns bits não foram diretamente relevantes. É tudo de bom de saber e eu recomendo fortemente o material para todos os desenvolvedores do MOSS bem-arredondado aspirantes.

Resultados de pesquisa do WSS/MOSS (e dataviews): Ver os dados brutos XML

Isto pode ser óbvio para muitos, Mas o tempo estudando para minha prova de programação de musgo, Eu aprendi que é muito fácil obter o XML real de uma consulta de pesquisa através da interface de usuário.

Um método rápido é como segue:

  • Acesso a pesquisa avançada.
  • Realize uma busca que retorna alguns dados.
  • Editar a página (através de configurações do site).
  • Alterar o XSL para o seguinte:

<?XML Versão="1.0" codificação="UTF-8"?>
<
XSL:StyleSheet Versão="1.0" xmlns:XSL="http://www.w3.org/TR/1998/REC-xml-19980210 1999/XSL/Transform">
<
XSL:saída Método="XML" Versão="1.0" codificação="UTF-8" travessão="Sim"/>
<
XSL:modelo correspondência="/">
<
Pre>
<
XSL:cópia de Selecione="*"/>
</
Pre>
</
XSL:modelo>
</
XSL:StyleSheet>

  • Aplicar o golpe.
  • Exibir código-fonte no navegador.

Note-se que o <Pre> marca não faz muito, exceto que servem como um marcador conveniente quando você exibir os resultados.

Este truque pode ser muito útil quando trabalhar com propriedades gerenciadas e personalização de busca. Fornecerá uma lista definitiva do XML disponível para você usar no seu xslt que teria sido muito útil a última 25 vezes eu criei alguns resultados de pesquisa personalizados.

Isso deve funcionar para dataviews também, Embora eu não testei isso ainda.

Não CQWP para WSS? Tente isso…

Eu vejo isso Eric Kraus foi confrontado com uma exigência normalmente reuniu-se com uma web part de consulta de conteúdo. O problema? Ele estava em um ambiente WSS puro sem acesso para o CQWP. Ao invés de ondulando acima em posição fetal (um desejo que eu tenho que lutar todos os dias, Parece), Ele veio com a solução que pelo menos dá uma chance de lutar para ter sucesso-lojas WSS. É descrito here.

Vista detalhada e brilhante de gerenciamento de conteúdo API

Stefan Goßner montou uma série de 4 partes fantástica sobre o conteúdo do SharePoint e a API de implantação here. Dispõe de uma grande visão e bons exemplos em código (C#).

Peguei este link do blog de joris poelmans em http://jopx.blogspot.com/.

Mesmo se você é como eu, em que você não teve que fazer muito trabalho hands-on para gerenciamento de conteúdo, Isso vale bem a pena 20 minutos de seu tempo para ler.

Usando a API, Ninguém pode:

  • Exportar e importar conteúdo facilmente.
  • Re-parent-conteúdo. Se você quer exportar algum conteúdo de um site "A" e enviá-lo para o site "B" Mas em um novo lugar na hierarquia, Isso é possível.
  • Exportar o conteúdo de um site A e importar bits selecionados para o local A.
  • Re-ligação de conteúdo (ou seja, lidar com todos os hiperlinks).

WSS, libs doc & listas, Colunas calculadas que envolvem [Me]

Alguém na Internet estava perguntando sobre como criar uma coluna calculada em uma lista que mostraria um valor formatado como"[Usuário] – [Estatuto] – [Localização]" como em "Paul Galvin – Bebendo [grátis] Cerveja – A praia".

Paul iria entrar e atualizar sua entrada na lista e a coluna calculada atualizaria apropriadamente. O [Usuário] deve padrão para o usuário inserir/atualizar a lista.

Não é possível usar uma coluna calculada "voláteis" funções, tais como [Me] ou [Hoje]. Eu resolvi isso em um ambiente de teste com estes passos:

  1. Criar uma coluna de texto chamada "Usuário atual".
  2. Defina o valor padrão para [Me]
  3. Criar uma coluna calculada, chamada "Teste de Calc".
  4. Defina seu valor = [Usuário atual]

Eu fui, adicionado um item para a lista e funcionou.

Meu passado 70-315 exame hoje!

Eu passei a "desenvolver e implementar Web aplicativos com Microsoft Visual c# .NET e Microsoft Visual Studio .NET" exame hoje no grande estado de NJ, nos escritórios da veneráveis de Solartechnik em Hasbrouck Heights.

Eu coloquei este exame lá em cima com BizTalk em termos de dificuldade. Você não pode fazer o seu caminho através dele.

Para estudar, Eu usei do MCAD/MCSD Self Paced formação kit livro intitulado Desenvolvimento de aplicações Web com Microsoft Visual Basic .NET e Visual c# .NET.

Orientações da Microsoft (here) são exatamente correto IMO. O livro aborda tudo e se você tem um mínimo ou experiência do mundo real, deve ser um exame direto. Se não, tomar o tempo de ter alguma experiência do mundo real, ou pelo menos executar os exames no livro. Que provavelmente lhe dará o que você precisa.

Eu mesmo ir tão longe como recomendo o livro do pro, pessoas especialmente autodidatas como eu. Abrange algumas coisas básicas que nunca tive um motivo para tropeçar em minhas viagens, e eu estou me chutando um pouco por nunca ter tomado o tempo para aprendê-las.

SharePoint Designer, “Coletar dados de usuário” e usando os resultados.

Use o "coleta de dados de usuário" ação para criar e atribuir uma tarefa a um usuário que solicita-los para dados. Entre outras coisas, Eu usei-o para um prompt ao usuário para aprovar ou rejeitar um pedido e digite alguns comentários.

Esta acção tem a forma de:

Coletar dados De Este usuário (Saída para Variável: Collect1)

Clicando no dados puxa-se uma série de caixas de diálogo, onde você especificar quais os dados que o usuário deve fornecer quando concluir a tarefa e Este usuário é óbvio.

A parte de saída (Variável: Collect1) salva a ID da tarefa. Você usar isto em seu fluxo de trabalho para extrair a resposta real do usuário através do "comparar qualquer fonte de dados" condição.

Essa condição mostra como

Se campo é igual a valor

Clique em campo e, em seguida, o f(x) ícone e ele puxa outra caixa de diálogo. Use esta caixa de diálogo generalizado para dizer SPD duas coisas;

1. O que é a lista e coluna cujo valor você deseja comparar.

2. Como deve o mecanismo de fluxo de trabalho localizar a linha específica nessa lista?

Para fazer isso:

  1. Alterar a fonte"" DropDown, aponte para lista de tarefas corretas. Observe que a caixa de diálogo se expande para mostrar uma "encontrar o Item da lista" seção.
  2. No menu suspenso do campo de pesquisa detalhes, Selecione o nome do campo cujo valor você deseja (mapeia para o que você chamou na caixa de diálogo de coletar dados de cima).
  3. Na "encontrar o Item de lista" seção, Selecione "tarefas:ID" no menu suspenso do campo.
  4. No campo valor, Clique no f(x). Isso abre outra caixa de diálogo.
  5. Alterar a fonte de dados de fluxo de trabalho""
  6. Selecione a variável de fluxo de trabalho que corresponde à "saída à variável" partir da ação de coleta de dados.
  7. Clique em OK/OK e pronto.

Parece que isso para mim:

imagem

Neste ponto, Agora você pode usar esse valor em seu fluxo de trabalho conforme necessário.

Notas adicionais:

Como um aparte breve, Eu sempre criar uma variável de apropriadamente chamado de fluxo de trabalho do tipo "ID do Item de lista" e usar isso em vez da gerado automaticamente "collect1".

Este "comparar qualquer fonte de dados" conjunto de caixa de diálogo é usado em vários lugares diferentes no SPD e vale a pena dominar.

= = fim

Technorati Tags:

Intermitente IE trava ao acessar documentos em uma biblioteca de documentos WSS/MOSS

Eu tenho sido atormentado por isto para 9 meses e vejo que as pessoas nos fóruns do MSDN e Usenet têm-lo too.l

Às vezes, ao acessar um documento do word (ou outros tipos de doc) de um documento biblioteca faz com que o Internet Explorer simplesmente bater e ir embora (tomando todas as abas com se abra qualquer são).

Esse hotfix da MS pode resolvê-lo: http://support.microsoft.com/kb/938888

Também, Há alguma descrição sobre o problema aqui:

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

O verdadeiro passo XPath irá encaminhar?

Visão geral:

Criou uma lista personalizada que gerencia um tipo de conteúdo com algumas dezenas de colunas.

É adicionado a uma página e em seguida através do SPD, convertido em uma exibição de dados.

Problema:

Minha expressão de Xpath estava retornando em branco para uma coluna chamada "Posição atual". É desta forma que eu provi:

    <borda de tabela = "1">
      <XSL:para cada select = "/ dsQueryResponse/linhas/linha" >
        <TR>
          <TD>
            Status atual:
            <XSL:valor-do select="@Current_x0020_Status"></XSL:valor da>
          </TD>
        </TR>
      </XSL>
    </tabela>

A coluna no CT é denominada "Estado actual". Ele aparece na pesquisa como "Estado actual". Em todos os lugares que você olhar, Você vê o "Estado actual".

Ao debater-se loucamente cerca, procurando uma solução, Em vez disso me referi "@Recruiter" e eis que! — Isso realmente retornadas de volta o status atual. Eu esperava que retornar para trás o recrutador quando eu fiz isso.

Solução:

Eu piquei em SPD. Ir para a página em SPD e mostra o modo de exibição de dados. Você pode inspecionar o real dados fornecidos para o modo de exibição e associados Xpath. Aqui eu descobri que na verdade, o Xpath apontada para "Recrutador". Estranhamente, o "real" campo de recrutador apontado de "Recruiter1".

Levar:

SPD fornece autoritário expressões Xpath para linhas & colunas em uma exibição de dados.

Segundo, Ele mostra os dados reais. Assim, por exemplo, uma coluna do tipo mostra isso:

<sem-serifbrdiv><extensão><Um HREF="/sites/Corporate/HumanResources/TalentAcquisition/_layouts/userdisp.aspx?ID = 17 ">Galvin, Paulo</A><img borda ="0" altura = "1" largura = "3" src="/_layouts/images/Blank.gif"/><a href ='javascript:’ OnClick ='IMNImageOnClick();retornar false;’ classe = 'ms-imnlink'><img nome ='imnmark’ título =” fronteira =’0′ altura = 12’ largura = 12’ src='/_layouts/images/Blank.gif’ ALT =' nenhuma informação de presença’ SIP ='PGalvin@xxx.com’ ID ='imn_77, tipo = smtp'/></uma></extensão></sem-serifbrdiv>