arquivos Mensais: Março 2008

Determinar rápido indexer Porto

Para se comunicar com busca rápida através de sua API, Precisamos saber a porta em que está executando o indexer.

Eu segui estes passos para localizá-lo:

  1. Entrar no site admin rápido (http://server:port/admin).
  2. Navegue para a visão geral do sistema.
  3. Localize "busca Dispatcher" e clique no ícone de binóculo:

    imagem

  4. Eu usei com sucesso o valor, 15100 para nome de informação"" = "http":

    imagem

Notas:

1. Porto 15100 Parece ser o número da porta de fora-de--caixa padrão para o indexer.

2. Use este código semelhante ao seguinte para instanciar uma conexão rápida:

     ISearchFactory searchFactory;
    
        NameValueCollection nameValueCollection = Novo NameValueCollection();
    
        NameValueCollection("fastsearchengine", "Com.FastSearch.Esp.Search.Http.HttpSearchFactory");
        NameValueCollection("Com.FastSearch.Esp.Search.Http.QRServers", "fastdemoback:15102");
        NameValueCollection("Com.FastSearch.Esp.Search.Http.RequestMethod", "GET");
    
        searchFactory = SearchFactory.NewInstance(nameValueCollection);

3. Se você escolher uma porta descontroladamente incorreta, Você receberá uma mensagem de erro útil:

imagem

4. No entanto, Se você escolher o número de porta sobre a visão (15102) Não te essa mensagem de erro útil. Em vez disso, mais tarde, quando você tenta acessar quaisquer dados através de uma pesquisa ou referência a uma vista rápida, Você obterá um erro. Depuração mostra que do searchFactory vista counté zero. Você receberá a mensagem "Falha ao buscar a lista de exibição de pesquisa".

</fim>

Technorati Tags:

Subscreva ao meu blog.

No sentido de padrões de Design técnico de SharePoint: Fluxo de trabalho do SharePoint Designer + Receptor de eventos = coquetel de alta potência

Um dos padrões emergentes de que encontrar na elaboração de soluções do SharePoint utiliza o fluxo de trabalho do SharePoint Designer e um receptor de eventos.

Aqui está um cenário de negócios para colocá-lo no contexto:

  • Enviar um documento para uma lib doc.
  • Eu chutar fora várias etapa de fluxo de trabalho criado usando o SharePoint Designer.
  • Em algum momento durante o processo de, fluxo de trabalho atribui uma tarefa a alguém (através de coletar dados de usuário ou atribuir uma tarefa).
  • Queremos usar um KPI para controlar quanto tempo essa tarefa está aguardando conclusão. O KPI mostra verde para tarefas que são concluídas ou devida mais de 3 daqui a dias. Ele mostra amarelo se a tarefa é pra amanhã ou hoje. Ele mostra vermelho se a tarefa é vencida.
  • Aqui está o kicker: Eu quero a data que impulsiona o KPI para estar ciente de férias.

Não posso imaginar um devido reconhecimento de férias muito facilmente a data no fluxo de trabalho do SharePoint Designer. Eu teria que criar uma ação personalizada ou usar uma ferramenta de festa 3. No entanto, é fácil de calcular uma data em um receptor de eventos. Mesclar os dois juntos e obtemos um padrão como este:

  • Definir um oculto Sim/nenhuma coluna de site na biblioteca de documento rotulada "DoCalcualteDueDate".
  • Inicializá-lo para false.
  • No momento apropriado do fluxo de trabalho (EG. pouco antes os "coletar dados" ação), atribuir esse valor como True.
  • Um ItemUpdate() receptor de eventos procura para ver se "DoCalculateDueDate" é verdade. Desde que o receptor de evento é executado em cada atualização, "DoCalculateDueDate" é normalmente false.
  • Quando o fluxo de trabalho atribui DoCalculateDueDate para true, o receptor de evento calcula o devido reconhecimento de férias data.
  • Quando o receptor de evento é que este cálculo, Ele define o sinalizador DoCalculateDueDate para false.

No final, Fluxo de trabalho do SPD é comunicado com um receptor de eventos através do sinal de DoCalculateDueDate e temos reconhecimento de férias devido as datas que são atribuídas no momento exatamente correto na vida do fluxo de trabalho. Controles de SharePoint Designer quando é atribuída a data de vencimento, mas o receptor de evento executa o cálculo real e atribuição.

</fim>

Subscreva ao meu blog.

Comportamento observado: Fluxos de trabalho SPD se movendo dentro de um conjunto de sites

ATUALIZAÇÃO: Estive pesquisando como a incorporação de um fluxo de trabalho do SPD em uma definição de site. Esta cadeia de fórum MSDN tem algumas informações interessantes. Não é conclusivo, mas aponta para o caminho através da selva.

Eu estou dando este post um pouco excêntrico comportamento observado"" chumbo, desde que eu estou um pouco desconfiado de tirar conclusões a partir dele. Fluxos de trabalho do SPD são … temperamental.

As pessoas muitas vezes perguntam / querendo saber / se preocupar com movendo os fluxos de trabalho do SPD de um lugar para outro. Hoje, Segui estes passos e fez estas observações:

  • Eu criei um fluxo de trabalho usando o SharePoint Designer em um site ligado a uma biblioteca de documentos.
  • A biblioteca de documentos associada já abrigou diversos documentos.
  • Guardei o site como um modelo.
  • Quando eu salvo o site como um modelo, Salvei o conteúdo, bem como.
  • Eu criei um novo site na mesma coleção site usando esse modelo.

Neste ponto, Eu tentei executar o fluxo de trabalho. Ele prontamente se finalizado com a mensagem de log, "Falha ao iniciar".

Eu esperava por isso. Eu tenho poucas expectativas quando se trata de fluxos de trabalho do SPD se movendo.

Eu continuei:

  • Inaugurado o site no SharePoint Designer.
  • Tinha uma espiada no fluxo de trabalho. Pareceu-me bem.
  • Cliquei em "Concluir".
  • Eu corri o fluxo de trabalho.

Desta vez, funcionou muito bem.

Vou acrescentar que este fluxo de trabalho usado a "coleta de dados de usuário" ação que é uma ação relativamente complexa sob o capô.

Concluo, provisoriamente, que o processo de "acabamento" o fluxo de trabalho causou SPD associar o fluxo de trabalho do SPD corretamente a nova biblioteca de documentos. Também concluir que o XOML e outros artefatos XML são razoavelmente "soltos". Eles não são super rigidamente acoplados na biblioteca de documentos.

O que isso significa? Supondo que é um processo confiável e reprodutível, Há pelo menos um método áspero que podemos usar para movê-los. Não sei se isso iria funcionar se cruzamos fronteiras de coleção do site ou até mesmo mais drasticamente, fazendas novas inteiras (EG. dev para estágio para prod).

Se você está lendo isso e inclinado, por favor, postar um comentário ou correio eletrónico a mim sua história de migração SharePoint Designer. Eu alegremente vou atualizar esta postagem com opiniões assim oferecidos.

</fim>

Subscreva ao meu blog.

Rápido e simples: Campo de atualização somente para fluxo de trabalho

Geralmente é útil armazenar informações de status em uma lista personalizada como um código de aprovação que nunca deve ser diretamente manipulado pelos usuários finais. Este é um cenário comum de negócios. Eu tenho trabalhado em um projeto deste ano que gera várias datas de status e lembrete via fluxos de trabalho do SharePoint Designer que então dirigir KPIs e geralmente suportam processos de negócios críticos-tempo.

Use um tipo de conteúdo de site / coluna para conseguir esse efeito.

Criar um tipo de conteúdo do site com a coluna de status conforme mostrado:

imagem

Observe o Status" (para Demo)" campo na parte inferior.

Próximo, Clique no nome da coluna para acessar as propriedades da coluna. Selecione "escondido (Não aparecerá em formas)" na seção Configurações de coluna, como mostrado:

imagem

Isto remove o campo de formulários padrão Editar/atualizar. No entanto, está ainda disponível nos modos de exibição, KPIs, o modelo de objeto e em nenhum outro lugar você quer usá-lo, incluindo o fluxo de trabalho do SPD.

</fim>

Subscreva ao meu blog.

Domingo engraçados: “Eu pensei que isto era suposto ser uma cidade de Rich”

Há um pouco mais de três anos, minha esposa e eu assinado meu filho para uma actividade de Verão, Os jogadores de Midland Park. Este é um grupo de teatro que gasta cerca de três ou quatro semanas se preparando para uma peça e em seguida, mostrando-o aos pais, amigos e parentes. Sempre foi muito bem feito.

Não sei se a criança é assim, Mas meu filho é extremamente relutante em experimentar coisas novas. Sabendo disso, Nós assinou-o para o programa. Nós achamos que é melhor para alertá-lo para esses tipos de coisas mais cedo e muitas vezes. Assim, a fim de superar sua relutância natural, Nós dissemos-lhe mais cedo e fiz o nosso melhor para fazê-lo soar como diversão, etc. Mesmo com uma campanha publicitária de vários meses, Ele ainda não estava convencido. Nós forçou a fazer, Embora, e como é o caso, Ele tinha um grande tempo.

Quando rolou o segundo ano, Ele tinha mais uma vez convencido de que ele não queria participar. Mas, nós tinha oferecido e no dia zero, Deixei uma manhã na escola onde eles praticam. Quando fui buscá-lo depois do almoço, Ele estava muito animado, Só sorrisos e anunciou, "A peça é a Coelho de pelúcia e eu quero ser o coelho". Ele tinha passado literalmente meses carregando (às vezes histericamente) sobre como ele não queria ter nada a ver com os jogadores do parque e depois do primeiro dia, Ele quer ser o papel principal na peça. Já vimos este padrão antes.

(Para nossa surpresa, Ele conseguiu o papel de coelho e ele era incrível.)

Rápido para a frente alguns anos. Ele esteve no parque jogadores três vezes agora, Então, ele é algo de um veterano. Este verão (2008), Os jogadores começa de novo. Nesse meio tempo, Ele finalmente convenceu-nele realmente Não quer jogar futebol e ele nunca gostou de basquete. Que o deixou com nenhuma atividade extra curricular para o final do inverno / início da Primavera. Um cliente com quem eu trabalhava mencionou que sua filha estava em um programa chamado estágio direito. À direita do palco é uma versão ligeiramente mais cara do Parque jogadores e não é na minha cidade, Mas adjacente a ele. Perfeito.

O que podemos saber sobre aquela cidade é que é praticamente um outro país em termos de riqueza. Tem um trem de alta-frequência para Wall Street e NYC em geral. É um lugar rico. Dentre os temas de discussão familiar em curso é que se deve ter mudamos para aquela cidade em vez de onde vivemos agora. É uma cidade maior, suas escolas para oferecer mais programas para as crianças, etc. Minha esposa cresceu naquela cidade, e os pais dela moram lá, Então nós são "viciadas em" Apesar de não viver lá. Eu pessoalmente cresci em diferentes circunstâncias em Massachusetts, Então não tenho muito a dizer sobre isso durante a conversa do jantar em família. Isso não quer dizer que não somos felizes onde vivemos.... Só sabemos que essa cidade está um nível acima de nossa cidade economicamente.

Próximo programa de estágio da direita começou muito cedo para nos lançar nossa campanha de publicidade normal para superar a relutância do meu filho. Isto é, quando ele veio com um meus pessoais favoritos argumentos contra a fazer algo: "Noites de sexta-feira são Prime noites para dormir excessos!" À direita do palco ia interferir com seus encontros de fim de semana.

Chega o dia, Podemos trazê-lo de lá e soltar no-lo fora e como tudo o resto, assumiu seu amor natural de estar vivo e ele está tendo um bom tempo com isso.

Este fim de semana passado minha mulher estava falando com ele e pela primeira vez, Acho que ele está costurando suas discussões com precisão para o seu público. Ela pediu-lhe como palco compara a Midland Park jogadores. Ele diz a ela que "no parque os jogadores, Temos que nos ajudam adolescentes. Não existem em qualquer um no palco. No parque os jogadores, adolescentes fazem todos os adereços. No palco, Temos que trazer nossos próprios adereços. Temos que fazer tudo. E então ele torce a faca: "Eu pensei que isto era suposto para ser uma cidade rica."

Todos estes anos, Nunca pensei que ele estava ouvindo ou entender alguma coisa, como relacionado com a "cidade rica". No entanto, Acontece que ele era.

</fim>

Subscreva ao meu blog.

Technorati Tags:

SharePoint não fornece calendário Roll-ups; Possíveis soluções

ATUALIZAÇÃO: Uma pessoa anônima nos comentários postos neste link: http://www.atidan.com/atidan-collaboration-kit.php

Os usuários do fórum muitas vezes uma perguntam como esta:

"Eu gostaria de ter um calendário no nível do site que é preenchido por eventos de calendários de subsite. Idealmente, usuários em subsites irão criar calendário de eventos, e terá a opção de marcando-os como ' público.’ Eventos marcados como pública dinamicamente aparecerá no calendário site compartilhado. Assim, o calendário do site compartilhado é um roll-up de todos os eventos públicos de todos os calendários de subsite."

É WSS 3.0 ou MOSS 2007, Não é possível configurar diretamente um "roll-up" calendário. Calendários existem na própria, independente de qualquer outro calendário.

Para criar um calendário de enrolar, Siga um desses caminhos:

  1. Usar uma Web Part de consulta de conteúdo. Esta é a solução mais fácil para os usuários do MOSS (WSS não fornece CQWP). CQWP, Infelizmente, não fornece uma exibição de calendário de dados fora da caixa. Ele fornece flexibilidade de processamento enorme (Veja aqui um exemplo) Mas, por padrão, mostra seus resultados em formato de lista simples. Em muitos casos, CQWP provavelmente uma boa escolha.
  2. Uma solução mais orientado para a programação seria usar receptores de eventos. Implementar a receptores de eventos sobre os calendários de subsite que mantém seus eventos públicos em sincronia com o calendário do mestre. Como um calendário determinado subsite é modificado, chegar até o mestre calendário e atualizá-lo conforme necessário. Esta opção está disponível em ambos WSS 3.0 e musgo.

Há provavelmente outras soluções inteligentes para este problema. Se você tem um ou sabe de um, por favor, deixe um comentário ou correio eletrónico a mim e vou atualizar este post.

</fim>

Subscreva ao meu blog.

Criar Sites (SPWeb) através do fluxo de trabalho do SharePoint Designer

Esta entrada de blog é mais um "no Reino do possível" entrada vs. informação concreta.

Nós temos um projeto técnico que chama por nós criar um site em um conjunto de sites através de um processo de fluxo de trabalho manualmente lançado. Basicamente, usuários inserir dados em um "novo cliente" lista personalizada e, em seguida, quando eles têm terminado e validado o processo de entrada de dados, Precisamos criar um site para que o cliente.

Eu sou um grande fã de fluxo de trabalho declarativo, bem como um programador de fluxo de trabalho do studio visual fraco, Então eu queria cumprir a exigência usando o SharePoint Designer.

Eu pretendo escrever sobre isso mais detalhadamente (e esperemos que apresentar para um grupo de usuários ou duas no ano que vem), Mas aqui está a solução global:

  • Criar uma ação personalizada que se integra com o SPD.
  • A ação personalizada permite SPD para invocar um serviço web e passá-lo uma seqüência de caracteres de XML.
  • Serviço Web localiza a linha na lista personalizada e cria um novo site de acordo com os dados para esse novo cliente usando uma definição de site personalizada.
  • Serviço da Web, em seguida, atualiza a lista personalizada com algumas informações, como um link para o novo site.

Consideramos outras abordagens, como manipuladores de eventos e fluxo de trabalho do visual studio com base. A abordagem do SPD dá nossos usuários finais um pouco mais controle sobre o processo de. Concedida, Há um monte de código c# nesta solução, Mas ele é encapsulado dentro de um fluxo de trabalho declarativo, Então pegamos alguns dos benefícios do fluxo de trabalho declarativo enquanto enganchando para o serviço de criação de site.

All we need now is an easy tool to automatically migrate SPD workflows around as easily as we can for visual studio workflows and we’ll really be cooking with gas 🙂 I understand that some folk are out there working on this problem and I hope they have some good success with it soon.

</fim>

Subscreva ao meu blog.

Technorati Tags: ,

Rápido e simples: Provisionar um Web Site utilizando o modelo de objeto SharePoint em c#

Eu tentei procurar por um pequeno trecho de código que iria mostrar como pode criar um novo SPWeb t: Microsoft.SharePoint.SPWeb em um conjunto de sites. Não encontrá-lo como rapidamente ou facilmente, como eu esperava, então eu pensei que eu daria um tapa juntos uma pequena entrada sobre o assunto.

Esse código cria um novo site Wiki:

 SPSite t: Microsoft.SharePoint.SPSite siteCollection;

    siteCollection = Novo SPSite t: Microsoft.SharePoint.SPSite("http://conchang-o9l8qi");

    SPWeb w = siteCollection.OpenWeb();

    w.Webs.Add("xyzzy", "xyzzy título",
        "xyzzy descrição", 1033, SPWebTemplate.WebTemplateWIKI, falso, falso);

Minhas buscas iniciais falharam porque eu estava procurando por frases como "configurar um web site utilizando o modelo de objeto sharepoint" e afins.

Se você pesquisa para Webs.Add"()", Você encontrará um número de entradas de blog muito útil, Artigos da MSDN e a documentação do SDK que entram em profundidade sobre este assunto. Eu definitivamente recomendo Este site.

</fim>

Subscreva ao meu blog.

Technorati Tags:

Integrar os fluxos de trabalho do SharePoint Designer com serviços Web

Eu fui brincar com ações personalizadas para SharePoint Designer há algum tempo (Consulte aqui para algumas coisas detalhadas, Se isso lhe interessa.).

No meu projeto atual, Precisamos fazer um trabalho bastante pesado e queremos usar o fluxo de trabalho declarativo SPD para gerenciar o processo de negócios associados.

Longa história curta, Isso é inteiramente possível.. Eu estendi o meu projeto do Codeplex para invocar um serviço de auxiliar"" e agora podemos invocar um serviço web diretamente a partir de um fluxo de trabalho do SPD.

Aqui está a assinatura:

 público Cadeia de caracteres Despachante(
        GUID WebID, // Passou pelo ambiente de tempo de execução
        GUID SiteID, // Passou pelo ambiente de tempo de execução
        Cadeia de caracteres ListID, // Passado pelo RTE (Não sei por que isso é uma seqüência de caracteres, Não um GUID.)
        int ListItemID, // Passado pelo RTE.
        Cadeia de caracteres XmlMessage) // Passado pelo usuário conforme declarado no SPD.

Este aproveita o facto de conseguirmos a informação importante de fluxo de trabalho, como o site, ID da lista, etc. Isto está bem documentado em vários lugares para aqueles interessados na criação de suas próprias ações personalizadas. A idéia é extrair a cadeia de caracteres XML conforme fornecido pelo usuário para despachar um processo adequado. Coisas divertidas!

Infelizmente, Esta é obviamente uma passagem só de ida para baixo para "Loosey Goosey." anti-pattern terra, but it’s better than hitting a brick wall 🙂

Se você fizer isso, mesmo sabendo que é um antipadrão é um antipadrão?

Espero resolver isto dentro Codeplex em um futuro próximo. Se você está interessado em mim fazê-lo, me dê um puxão (Email ou deixe um comentário) and I’ll be that more enthusiastic about doing it 🙂

</fim>

Subscreva ao meu blog.

Technorati Tags: ,

Domingo engraçados: “Gostaria de saber se sua senha for …”

Eu comprei recentemente o almoço para meu irmão (como de costume) e acabamos conversando sobre coisas engraçadas que fizemos em nossas respectivas faculdades. Na minha alma mater, Lafayette College, o departamento de apoio acadêmico tinha uma forma muito abrangente sobre isso. Deram-nos muita corda e eu me aproveitei às vezes.

Dois minhas memórias favoritas referem-se ao meu bom amigo, Gabe. Ele tinha feito o erro terrível de dizer as pessoas que "Eu sou um calouro calouro, Mas eu tenho o segundo ano em pé" devido as várias classes de colocação avançada, que ele tinha tomado, etc. Da mesma forma que muitos de nós estavam situados, mas não falamos muito sobre isso. Seu ano sênior, Quando nós o apresentou a pessoas, Nós diríamos "Este é Gabe. Ele é um Senior, Mas ele tem no segundo pé ".

O colégio tinha uma estação de trabalho/servidores Sun executando o X-Window. Eles tinham monitores gigantes e os engenheiros usaram para CAD e outras coisas chatas do engenheiro. Nós CS pessoas usaram-os para aprender programação e, É claro, jogar jogos.

Não que os engenheiros computador indefeso a muito por uma das nossas coisas favoritas a fazer seria de telnet para a caixa eles estavam na e correr X-eye sobre eles. Isso apareceria um par de olhos que seguia o mouse na tela. Você poderia aparecer ainda mais e ter literalmente uma dúzia ou mais das aplicações X-olho correndo. Try not to laugh out loud when a hapless engineer is trying to close X-eye after X-eye and muttering under his breath about it 🙂

Também jogamos X-trek sobre essas caixas. Para fazer isso, Você tinha que baixar a fonte, se várias dependências onde poderia encontrá-los e construí-lo. Eu não era um programador de C sofisticado, Mas eu podia ler arquivos de cabeçalho. Eu estava olhando através destes e encontrei directivas como "#DEFINE MAX_TORPEDO_DISTANCE 10". Eu brinquei com isso aumentar o alcance e poder para as fases e torpedos, re-construído e destruída na próxima vez que jogámos Gabe.

Gabe também era um grande fã de um programa de TV chamado Blake 7. Eu nunca tinha visto, Mas isso não me impede de insistir que o Dr. Quem é o show superior. The arguments would get heated at times 🙂

Um dia, ocorreu-me que eu provavelmente poderia adivinhar sua senha UNIX. Eu sentei ao lado de um dia e anunciou em tom alto, "Eu vou adivinhar sua senha agora, Gabe." "Sim, direito" foi a resposta dele. Então eu entrei, entrou seu id de usuário, virou-se para enfrentá-lo, digitado e disse em voz alta, "Gostaria de saber se é B-L-A-K-E-7" ? Dactilografar tem nunca tão bem pago como fez naquele dia.

Na próxima semana (ou em breve): Mais palhaçadas de quarto de computador da faculdade.

Você tem alguma para compartilhar? Deixe um comentário ou e-mail me e eu vou publicá-las aqui.

</fim>

Subscreva ao meu blog.

Technorati Tags: