Arquivo da tag: Add-ins

Registrando um Add-in e concedendo permissões utilizando PowerShell

Olá SharePointers,

Muitas vezes é necessário criarmos Add-ins no SharePoint. Entretanto, nem sempre é possível utilizar o modelo SharePoint-hosted.

Para facilitar o processo, podemos utilizar um script powershell para criar um Client ID e fazer o deploy do .app.

$targetWeb = “https://site.sharepoint.com”
$appDisplayName = “App”
$clientID = [Guid]::NewGuid().ToString()

$authRealm = Get-SPAuthenticationRealm -ServiceContext $targetWeb
$AppIdentifier = $clientID + “@” + $authRealm

Write-Host “Creating the new app principal registration…”
Register-SPAppPrincipal -NameIdentifier $AppIdentifier -Site $targetWeb -DisplayName $appDisplayName
$appPrincipal = Get-SPAppPrincipal -Site $targetWeb -NameIdentifier $AppIdentifier

write-host “Display Name:” $appPrincipal.DisplayName
write-host “Name Identifier:” $appPrincipal.NameIdentifier
write-host “ClientID:” $clientID

Write-Host “Uploading the app…”
$spapp = Import-SPAppPackage -Path D:\MyApp.app -Site $targetWeb –Source ObjectModel
$instance = Install-SPApp -Web $targetWeb -Identity $spapp
Write-Host “Granting permissions…”
$web = Get-SPWeb $targetWeb

Set-SPAppPrincipalPermission -Site $web -AppPrincipal $appPrincipal -Scope SiteCollection -Right FullControl

$web.Dispose()

Esse script substitui aquelas operações que temos que fazer nas páginas [SiteUrl]/_layouts/AppRegNew.aspx e [SiteUrl]/_layouts/AppInv.aspx.

 

Esse script funciona tanto para SharePoint On-Premises quanto para SharePoint Online.

 

Referências

http://www.manasbhardwaj.net/powershell-alternative-sharepoint-2013-appregnew-aspx/

SharePoint Workflows–Acessando dados de um outro site

Olá SharePointers,

Hoje vou falar de uma dica muito útil: como acessar dados de um outro site, utilizando workflows. Nesse exemplo, acessarei uma lista do site pai.

O Workflow manager veio para simplificar a forma como os workflows são feitos. De forma declarativa, ficou bem mais simples.

Internamente,  a engine de workflows converte todas as ações em chamadas REST. Resumindo, tudo o que podemos fazer utilizando workflows, podemos fazer utilizando as APIs REST disponíveis.

Introdução

O Workflow roda como um add-in. Dessa forma, ao criar um workflow, ele é autorizado a executar naquele site. Mas, você pode dar permissões para o Add-in e rodar algumas ações em contexto app-only.

Para rodar o exemplo abaixo, é necessário ativar uma feature (de Web) no site que o workflow será criado:

image

Após isso, vá em Configurações do Site e clique  em Permissões de Aplicativo de Site

image

Copie o Id do aplicativo

image

Abra o outro site que deseja consultar informações e abra a página http://[site]/_layouts/15/appinv.aspx

Cole o Id do aplicativo e clique em pesquisa.

image

Cole o xml abaixo no último campo e clique em criar.

Atenção: O xml abaixo está dando permissão Manage em uma lista que você selecionará na próxima tela. Altere o xml conforme a sua necessidade de negócio.

<AppPermissionRequests AllowAppOnlyPolicy="true"> <AppPermissionRequest Scope="http://sharepoint/content/sitecollection/web/list" Right="Manage" /> </AppPermissionRequests>

Aparecerá uma tela para você confiar no Workflow e escolher a lista que deseja extrair informações.

image

 

Workflow

Crie o workflow e adicione um App Step.

image

Coloque uma ação Build Dictionary

Coloque duas entradas no Build Dictionary: Accept e Content-Type com o mesmo valor

image

e outra Call HTTP Web Service

image

Faça a sua chamada REST, clique nas propriedades da ação REST

image

e configure o RequestHeaders para ter o valor da variável que você criou no Build Dictionary

image

Pegue o valor da resposta e utilize-o conforme desejar.

image

 

Conclusão

Demonstrei como acessar dados, via REST, de outro site utilizando o workflow manager. Muitas vezes, por questões de organização e estruturação dos dados, precisamos acessar dados que não estão no site que estamos trabalhando e as APIs REST nos permitem isso de maneira bem simples. Entretanto, pode ser um pouco complicado fazer o passo-a-passo para fazer com que o mesmo processo funcione dentro do workflow.

 

Abraços Smile

Aumentando a produtividade com SharePoint Add-ins – Parte 2 (A beleza do Upgrade)

Olá SharePointers,

Fiz um novo post falando de como aumentar a produtividade do desenvolvimento utilizando Add-Ins e publiquei o documento no DOCS.com da Microsoft.

O link para o documento é: https://doc.co/GGzdmo

O projeto está publicado no GitHub.. O link do repositório é: https://github.com/RARomano/SharePointHostedUpdateApp

 

Abraços!

Aumentando a produtividade com SharePoint Add-Ins – Parte 1

Olá SharePointers,

Para quem tem acompanhado os direcionamentos que a Microsoft vem apresentando para modelo de desenvolvimento do SharePoint, principalmente quando o assunto é o SharePoint Online, percebe que o direcionamento é muito forte para os chamados “Add-Ins“.

Já fiz um post falando dos modelos de desenvolvimento disponíveis no SharePoint (http://rodrigoromano.net/2015/01/27/sharepoint-2013-e-seus-modelos-de-desenvolvimento/ e dos “novos” modelos de provisionamento de objetos http://rodrigoromano.net/2015/07/04/modelo-de-provisionamento-de-objetos-no-sharepoint/), mas o foco desse post é falar sobre como tirar proveito dessa nova orientação e criar soluções de negócios que de fato agreguem valor ao negócio do cliente.

Para (re)lembrar: Quando falamos de add-ins (antigamente conhecido como Apps), eles podem ser: SharePoint-hosted ou Provider-hosted.

Muitos desenvolvedores podem falar/pensar assim “Mas eu já tinha um framework que acelerava o meu desenvolvimento utilizando Farm Solutions e agora preciso alterar toda a arquitetura para esse modelo novo?” e a resposta é:

SIM, mas podemos fazer isso utilizando algumas vantagens que esse modelo de add-ins nos apresenta e compensar esse trabalho que teremos (somente na primeira vez).

Pensando nisso, farei alguns posts explicando em como tirar proveito do modelo de add-ins.

 

Contexto

A Microsoft fez vários anúncios recentes que demonstram que a visão dela está mudando, ou melhor, está mudada. Vimos que o código do .NET virou open-source (código disponível no github: https://github.com/dotnet), vimos a apresentação da hololens, do continuum e uma série de novidades que deixaram todos boquiabertos (falei um pouco desse posicionamento nesse post: http://rodrigoromano.net/2015/05/24/novo-posicionamento-da-microsoft-e-projeto-oxford/).

Com tudo isso, podemos notar que a estratégia é simples: permitir a interoperabilidade, ou seja, qualquer plataforma/linguagem poder interagir com recursos Microsoft.

SharePoint-Hosted Add-ins

Quando o assunto é SharePoint-Hosted add-ins, a primeira coisa que vem a nossa cabeça é que nesse modelo não podemos colocar código server-side. Há algum tempo atrás isso era um paradigma, mas acredito que isso já tenha mudado um pouco.. 

Em contrapartida, por só permitir código JavaScript, HTML e CSS, esse modelo nos permite (ou força) a abrirmos os olhos para o movimento do mercado. Para quem trabalha com aplicações front-end, JavaScript é uma ferramenta de trabalho diário. Para facilitar a vida dos desenvolvedores front-end, várias bibliotecas (ou “mini-frameworks”) foram criados e (são criados a todo momento!). É muito provável que enquanto estou escrevendo esse post, tenha alguma biblioteca nova sendo criada 😉

Uma dessas bibliotecas é o Knockout JS.

O Knockout JS é uma biblioteca que facilita (e muito) a vida de um desenvolvedor front-end. Com essa biblioteca, você pode colocar tags no seu código HTML para fazer o “BIND” automático entre um objeto do DOM e uma variável e, dessa forma, quando esse campo for alterado, a variável seja atualizada automaticamente (ou vice-versa). Recomendo a leitura da documentação: http://knockoutjs.com/documentation/introduction.html

Utilizando essa biblioteca, fiz um exemplo (não levou mais de 1 hora para fazer) que demonstra como utilizar o Knockout JS, REST APIs e SharePoint JSOM (JavaScript Object Model) para construir uma App pode ser bem simples e disponibilizei no GitHub: https://github.com/RARomano/KnockoutJSandSharePointHostedApp.

 

Próximos Passos

O meu próximo post apresentará como fazer o upgrade de SharePoint-Hosted add-ins e ver como os recursos que a Microsoft disponibiliza pode ajudar a salvar muito tempo e sermos mais produtivos.

 

Abraços! 😀