Monday, November 21, 2016

Blog da equipe do microsoft sharepoint designer

Modelo de Site de Treinamento - Parte 1: Introdução


Oi pessoal,


Sean Gabriel aqui. Sou Gerente de Programa da equipe do SharePoint Designer e trabalho principalmente em nossa experiência de desenvolvimento de aplicativos. Estou definitivamente ansioso para compartilhar meu conhecimento aqui - por isso, se você tem tópicos no espaço de construção de aplicativos que você gostaria de ver abrangidos neste blog, não hesite em perguntar.


Você pode ter ouvido falar dos Modelos de aplicativo para o Windows SharePoint Services 3.0. Um conjunto de modelos de site do SharePoint recentemente lançados, projetados para resolver 40 cenários comuns de clientes. Eu tive o prazer de construir um desses modelos e eu quero mostrar a você como fazê-lo usando o SharePoint Designer 2007 - do início ao fim!


O modelo que eu estarei discutindo é Employee Training Scheduling e Materials. A melhor maneira de entendê-lo é baixá-lo e experimentá-lo você mesmo, mas aqui está uma visão geral rápida de como ele funciona:


Dois tipos de usuários podem visitar o site, instrutores e alunos (alunos). Quando um instrutor tem uma aula para ensinar, ele / ela adiciona à lista de Cursos, especificando coisas como a data, localização e número de lugares disponíveis. Os alunos podem navegar na lista de próximos cursos e se inscrever para qualquer coisa que eles estão interessados ​​em - eo aplicativo mantém registro da lista de registro, lembra aos usuários quando uma classe está em breve para começar e recolhe o feedback dos alunos após a aula acabou. Em um relance, os estudantes e os instrutores podem ver um dashboard personalizado de seus treinamentos na home page do local.


Esses comportamentos são obtidos através do uso de fluxo de trabalho e algumas instâncias especializadas da Web Part de formulário de dados (DFWP). Aqui está o plano de batalha para saber como criaremos o aplicativo:


Elabore as listas-chave - Cursos, Registos, etc.


Adicionar registro e lógica de lembrete com fluxo de trabalho


Substituir visualizações de lista padrão e formulários para controlar o comportamento do aplicativo


Criar uma página de painel com vistas agregadas em várias listas


Para a maioria desses itens, usaremos o SPD, mas o primeiro é algo que precisamos fazer por meio do navegador por enquanto. Então, hoje vamos andar através do projeto de lista para nos configurar para a construção do DFWPs da próxima vez.


Projeto de esquema de lista


Se você navegar para "Exibir todo o conteúdo do site" no site de treinamento, você verá a seguinte lista de listas:


O coração deste aplicativo é a lista de Cursos. Um curso é muito parecido com um compromisso - que tem um título, localização, hora de início e de término, etc - por isso, um ótimo lugar para começar é com a lista interna do calendário. No seu site do SharePoint em branco (você está seguindo, certo?), Faça o seguinte:


Clique em Ações do site & gt; Crio


Escolha Calendário na coluna Acompanhamento


Nomeie-o "Cursos" e forneça uma descrição


O SharePoint cuidou de nos fornecer o modo de exibição do calendário que você vê no site de treinamento em "Próximos cursos" (sidenote: e isso funciona porque os Cursos estão usando o tipo de conteúdo do Calendário). Mas o esquema ainda não está bem. Vamos adaptar a nossa nova lista em torno de cursos especificamente - assim, a partir da vista do calendário onde você está agora:


Clique em Configurações & gt; Definições de lista


Clique em Criar coluna para cada item de linha abaixo e preencha as informações a seguir (use padrões, a menos que especificado):


"Instrutor". Pessoa ou Grupo. Está bem


"Assentos preenchidos". Número. Sim para Obrigatório. Min 0 Decimais 0 Padrão 0. Está bem


"Assentos totais". Número. Sim para Obrigatório. Min 0 Decimais 0 Padrão 0. Está bem


Clique no nome de cada coluna existente e modifique-a conforme especificado:


Título. Renomear para "Título do Curso". Não para Obrigatório. Está bem


Descrição . Renomear para "Descrição do curso". Está bem


Agora a nossa lista de Cursos tem um instrutor associado a ele, e espaços reservados para calcular o número de lugares disponíveis na classe (o que nós vamos chegar a mais tarde). Não se preocupe sobre os pontos de vista sobre esta lista ainda, vamos estar indo sobre aqueles da próxima vez também.


Desde que eu andei você através da lista de Cursos em detalhe vou confiar em você para ser capaz de seguir rapidamente através do resto das listas. Próxima é Materiais do Curso, que irá realizar todos os documentos relacionados com os cursos. Soa como uma biblioteca de documentos funciona, mas cada documento vai precisar de um ponteiro de volta para a lista de Cursos para que nós sabemos que o curso está associado. Veja como fazê-lo:


Clique em Ações do site & gt; Crio . Biblioteca de documentos


Nome-lo "Materiais do curso" e suppy uma descrição, usamos "apresentação do Microsoft Office PowerPoint" como o modelo de doc


Clique em Configurações & gt; Configurações da Biblioteca de documentos


Adicionar coluna "Curso". Olho para cima. Sim para Obrigatório. Obtenha informações dos Cursos. Nesta coluna Título do curso. Está bem


Nós também queremos coletar o feedback do curso dos alunos depois que eles fizeram a aula. Aqui você pode ser tão amplo ou específico quanto você quiser, mas estas são as etapas para criar a lista de Pesquisas de Cursos que você vê no site de treinamento hoje:


Clique em Ações do site & gt; Crio . Lista personalizada


Nomeie-o "Pesquisas de Curso" e forneça uma descrição


Clique em Configurações & gt; Definições de lista


Clique em Título. Renomear para "Revisão de uma linha". Não para Obrigatório. Está bem


Adicionar coluna "Revisão aprofundada". Várias linhas de texto. Está bem


Adicionar coluna "Curso". Olho para cima. Sim para Obrigatório. Obtenha informações dos Cursos. Nesta coluna Título do curso. Está bem


Adicione as seguintes 3 colunas como. Escolha. Sim para Obrigatório. Opções de fornecimento *. Botões do rádio . Padrão vazio. Está bem


"Eficácia do instrutor"


"Utilidade dos materiais do curso"


"Satisfação com o curso"


* = Preencha as respostas ao questionário, você pode vê-las na imagem à direita (ou tente adicionar um novo item às Pesquisas do curso no modelo).


Além disso, precisamos manter o controle de registros para cada curso, e embora existam muitas maneiras de fazer isso, o modelo que usamos para este modelo foi uma lista separada que essencialmente armazena pares (Nome, Curso). Vamos impor o requisito de assento nas vistas front-end e no fluxo de trabalho back-end. Portanto, por enquanto, estabeleça as bases com esta lista de Registros:


Clique em Ações do site & gt; Crio . Lista personalizada


Nomeie-o "Registros" e forneça uma descrição


Clique em Configurações & gt; Definições de lista


Clique em Título. Não para Obrigatório. Está bem


Adicionar coluna "Course ID". Olho para cima. Sim para Obrigatório. Obtenha informações dos Cursos. Nesta coluna ID do curso. Está bem


Agora faça exatamente a mesma coisa para criar a lista de Registros Passados ​​(mas mude o nome, é claro). A partir daqui você pode criar as listas (opcional) de Anúncios e Links, que você encontrará em Ações do Site & gt; Crie sob as colunas de Comunicações e Rastreamento, respectivamente.


Bem feito! Agora você tem as 7 listas que abrigam todos os dados no site de treinamento de funcionários e materiais. A 8ª lista (Tarefas) estará em breve, como na próxima vez eu vou mostrar como criar os fluxos de trabalho para o registro e lembretes que mencionei anteriormente. Essa é a chave para fornecer lógica de aplicativo rica por trás de nosso site do SharePoint aqui. Até então -


Modelo de Site de Treinamento - Parte 2: Fluxos de Trabalho


Olá,


É Sean novamente com outra parcela do desenvolvimento do modelo. A última vez que cobrimos o esquema de lista para o planejamento de treinamento de funcionários e materiais, um dos novos modelos de aplicativo para o Windows SharePoint Services 3.0. Nesta série, estou mostrando como construímos um desses modelos de baixo para cima e hoje vamos criar todos os fluxos de trabalho do site de treinamento usando o SharePoint Designer. Com isso feito, você terá construído todo o back-end do modelo, por isso, em uma parcela futura vamos ficar nossas mãos sujas com vistas do SharePoint e formulários.


Abra uma nova instalação do site de treinamento no SPD e você verá a lista de pastas ilustrada à direita - com os três fluxos de trabalho que você criará hoje no Workflow Designer. Eles fornecerão alguns dos ricos comportamentos que você não veria em um aplicativo da web estático e você não precisará escrever nenhum código para executá-lo. Vamos começar!


Lembretes automáticos


As pessoas estão esquecidas. Computadores não são. Então, quando um instrutor chega ao seu local de treinamento para criar um curso, por que eles devem se lembrar quando é? É aí que você pode entrar com esse fluxo de trabalho, que definiremos na lista de Cursos:


No SPD, vá para Arquivo & gt; Novo & gt; Fluxo de trabalho.


Nomeie-o "Lembrete do instrutor" e anexe-o à lista do SharePoint "Cursos"


Marque a caixa para Iniciar automaticamente este fluxo de trabalho quando um novo item é criado


Clique em Seguinte & gt; continuar


A partir daqui, você vai querer criar três etapas que separarão logicamente nosso fluxo de trabalho em conjuntos de ações relacionadas. Clique em Adicionar etapa de fluxo de trabalho para avançar para a próxima etapa e, em cada caso, se você não visualizar a ação específica listada, clique no botão Ações & gt; Mais ações. Para ver a lista completa. Além disso, estou usando [colchetes] para se referir ao que você precisa fazer em cada espaço reservado.


Então, antes de começar, crie primeiro duas variáveis ​​(clique em Variáveis. & Gt; Adicionar para criá-las), uma chamada "Tempo de Lembrete" (Data / Hora) e uma chamada "Assunto" (String). Você vai precisar deles uma vez que você chegar às etapas individuais:


Primeiro passo: nomeie-o "Definir tempo de lembrete"


Sem condições


Ações & gt; Adicionar tempo até à data - Adicionar -24 horas para [fx. Item Atual, Hora de Início] (Saída para Variável: Tempo de Lembrete)


Ações & gt; Build Dynamic String - Store "RE: [fx. Item atual, título do curso]" na variável: assunto


Segundo passo: nomeie-o "Enviar confirmação"


Sem condições


Ações & gt; Enviar um e - mail - Email [. ]


Para: Pesquisa de fluxo de trabalho. . Item atual, Instrutor


Assunto: fx. Item atual, Título do curso


Corpo: Esta é uma confirmação de que você está programado para ensinar [Adicionar Consulta ao Corpo. Item atual, título do curso] em [Adicionar consulta ao corpo. Item atual, hora de início] em [Adicionar consulta ao corpo. Item atual, Localização]. Para obter mais informações, visite o site de treinamento.


Terceiro passo: nomeá-lo "Enviar lembrete sobre o curso"


Condições & gt; Campo Comparar Cursos - Se Criado é menor que [fx. Dados do fluxo de trabalho, variável: Tempo do lembrete]


Ações & gt; Pausa Até Data - Pausa até [fx. Dados do fluxo de trabalho, variável: Tempo do lembrete]


Ações & gt; Enviar um e - mail - Email [. ]


Para: mesmo que acima


Assunto: fx. Dados do fluxo de trabalho, variável: assunto


Corpo: Este é um lembrete de que você está agendado para ensinar [Adicionar Consulta ao Corpo. Item atual, título do curso] em [Adicionar consulta ao corpo. Item atual, hora de início] em [Adicionar consulta ao corpo. Current Item, Location] em 24 horas. Para obter mais informações, visite o site de treinamento.


Clique em Concluir


Faz sentido? Estamos enviando dois lembretes para quem adiciona um novo item à lista de Cursos (ou seja, um instrutor criando um curso) - um direito quando o fazem como confirmação e outro 24 horas antes do curso ser agendado. E o primeiro passo foi apenas para manter a atribuição variável separada, não há nada de errado em fazê-lo nas outras etapas antes de serem usadas.


Queremos fazer um lembrete semelhante para os alunos, mas podemos fazê-lo ao mesmo tempo em que aplicamos a política de assentos (cada item em Cursos tem assentos disponíveis e assentos totais), uma vez que só faz sentido enviar lembretes se você Realmente torná-lo em um curso.


Processamento de registros de alunos


Se você tentar adicionar um novo curso navegando para Cursos & gt; Novo. Você verá esta linha no novo formulário:


E você também notará que não há linha para assentos disponíveis ou assentos preenchidos, mesmo que nós adicionamos esses campos ao esquema de cursos na parte um. Eu vou te ensinar o truque para esconder itens do formulário na próxima vez, o que é importante aqui agora é que 0 será nosso valor sentinela no fluxo de trabalho para vir.


Vamos passar por isso um pouco mais rápido, usando alguma taquigrafia.


. Significa que estou me referindo a uma seqüência de caracteres (provavelmente para aqueles longos e-mails gerados automaticamente) que você pode encontrar o texto completo para abrir o registro de participantes. xoml no SPD.


Cursos * significa que você precisa realizar uma pesquisa de volta para a lista de Cursos. Para fazer isso, comece empurrando fx e escolha Source: Courses, em que ponto você verá a seção "Find the List Item" aparecer. Nessa seção, corresponder Campo: Cursos: ID para Valor: Registros: Course ID (use o fx próximo Item atual, Course ID).


Variável: = qualquer coisa com uma variável líder: na frente dela é uma variável de fluxo de trabalho que pode ser encontrada em fx. Dados do Fluxo de Trabalho.


Comece com um novo fluxo de trabalho chamado "Registro de participante", anexado a Registros e acionado quando um item é criado. Criar 7 variáveis ​​antes de começar, 4 do tipo String (Assunto, Corpo de Confirmação, Corpo de Lembrete, Corpo de Lembrete 2), 2 Data / Hora (Tempo de Lembrete, Tempo de Lembrete 2) e 1 Número (Novos Assentos Preenchidos). A partir daí, construa os passos:


"Cache todas as variáveis"


Sem condições


Ações & gt; Criar cadeia dinâmica (x4)


Loja . Em Variável: Corpo de confirmação


Loja . Em Variável: Corpo de Lembrete


Loja . Em Variável: Corpo de lembrete 2


Loja . In Variable: Assunto


"Aplicar a política de assentos"


Condições & gt; Compare qualquer fonte de dados (x2)


Se [fx. Cursos *, Assentos totais] é igual a 0


Ou [fx. Cursos *, Assentos preenchidos] é menor que [fx. Cursos *, Assentos totais]


Ações & gt; Definir variável de fluxo de trabalho (x2)


Definir Variável: Lembrete Tempo até [fx. Cursos *, Hora de início]


Definir Variável: Lembrete Tempo 2 para [fx. Cursos *, End Time]


Ações & gt; Fazer Cálculo - Calcular [fx. Cursos *, Assentos preenchidos] mais 1 (Saída para variável: Novos assentos preenchidos)


Ações & gt; Atualizar item da lista


Lista: Cursos *


Adicionar. . Definir assentos preenchidos para variável: novos assentos preenchidos


Clique em Adicionar 'Else If' Branch condicional


Sem condições


Ações & gt; Excluir Item - Excluir item em Registros (Item Atual)


Ações & gt; Parar Workflow - Parar o fluxo de trabalho e log "Curso já está cheio."


"Definir tempo de lembrete"


Sem condições


Ações & gt; Adicionar tempo até à data - Adicionar -24 horas para variável: Tempo de lembrete (saída para variável: tempo de lembrete)


"Enviar confirmação"


Sem condições


Ações & gt; Envie um e-mail - e-mail.


"Enviar lembrete sobre o curso"


Condições & gt; Campo Comparar Registros - Se Criado é menor que Variável: Tempo de Lembrete


Ações & gt; Pausa Até Data - Pausa até Variável: Tempo de Lembrete


Ações & gt; Envie um e-mail - e-mail.


"Enviar lembrete para feedback"


Condições & gt; Comparar o campo Registros - Se Criado é menor que Variável: Tempo de Aviso 2


Ações & gt; Pausa Até Data - Pausa até Variável: Tempo de Aviso 2


Ações & gt; Envie um e-mail - e-mail.


"Mover para Registros Passados"


Sem condições


Ações & gt; Copiar item de lista - Copiar item em Registros (item atual) para registros anteriores


Ações & gt; Excluir Item - Excluir item em Registros (Item Atual)


Yikes, eu sei. Mas, felizmente, isso é tão ruim quanto possível. Aqui está uma breve explicação - um aluno vai se inscrever para um curso, mas eles não vão entrar imediatamente (tecnicamente, eles entram, mas eles podem ser expulso imediatamente se a lógica de assentos falhar). Depois de definir todas as variáveis, verificamos se Total Assentos é 0 (ilimitado) ou maior que Assentos preenchidos (ou seja, há espaço no curso?). Se não, nós abortamos prematuramente (delete / stop etapa dois), caso contrário nós fazemos a matemática e adicionamos 1 aos Assentos Preenchidos, enviamos lembretes, etc. A última etapa é o arquivo na lista de espelho Registros Passados, algo que se tornará mais Evidente na terceira parte quando construímos o front-end.


Um segredo de fluxo de trabalho sujo


Isso é tudo bem e bom, mas o que acontece quando alguém quer cancelar o registro do curso? Precisamos subtrair 1 do número de Assentos preenchidos e excluir o registro de Registros, mas há um problema - o fluxo de trabalho não pode ser disparado para ser executado antes que um item seja excluído. Então aqui está como vamos fingir - uma vez que o fluxo de trabalho pode ser executado quando um item é alterado, vamos configurar um outro valor sentinela para o nosso fluxo de trabalho para estar interessado polegadas DELETE parece bastante auto-explicativo, certo?


(Observe que esta solução tem algumas implicações sérias - precisamos ocultar exclusão de item em Registros e bloquear todas as edições em nosso campo para que o usuário nunca dispare o Sentinel. Não se preocupe, eu vou explicar no devido tempo.)


Nosso último fluxo de trabalho, "Anulação de registro do participante" (por falta de uma palavra melhor), anexado a Registros, é acionado quando um item é alterado. Uma variável antes de iniciar: uma String chamada Log Message. Nem mesmo realmente necessário, apenas para a posteridade:


"Cancelar registro do curso"


Condições & gt; Comparar o campo Registrations - Se Title for igual a "DELETE"


Ações & gt; Excluir Item - Excluir item em Registros (Item Atual)


Ações & gt; Criar Cadeia Dinâmica - Armazenar. Em Variável: Mensagem de log


Ações & gt; Parar fluxo de trabalho - Parar o fluxo de trabalho e log Variável: Mensagem de log


E lá você tem, comportamento dinâmico que leva muito tempo para soletrar em uma postagem no blog, mas vai um longo caminho rumo à riqueza e robustez do seu aplicativo do SharePoint. Levamos algumas decisões-chave para chegar aqui, e por isso, na terceira parte, aprenderemos quais são as conseqüências para o sistema de front-end, que é direcionado pelas visualizações e formulários do SharePoint. Vejo você, então!


No comments:

Post a Comment