<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	xmlns:georss="http://www.georss.org/georss" xmlns:geo="http://www.w3.org/2003/01/geo/wgs84_pos#" xmlns:media="http://search.yahoo.com/mrss/"
	>

<channel>
	<title>Fabian André Gehrke</title>
	<atom:link href="http://fabiangehrke.com.br/feed/" rel="self" type="application/rss+xml" />
	<link>http://fabiangehrke.com.br</link>
	<description>SharePoint no dia-a-dia</description>
	<lastBuildDate>Mon, 17 Jun 2013 13:53:47 +0000</lastBuildDate>
	<language>pt-br</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.com/</generator>
<cloud domain='fabiangehrke.com.br' port='80' path='/?rsscloud=notify' registerProcedure='' protocol='http-post' />
<image>
		<url>http://s2.wp.com/i/buttonw-com.png</url>
		<title>Fabian André Gehrke</title>
		<link>http://fabiangehrke.com.br</link>
	</image>
	<atom:link rel="search" type="application/opensearchdescription+xml" href="http://fabiangehrke.com.br/osd.xml" title="Fabian André Gehrke" />
	<atom:link rel='hub' href='http://fabiangehrke.com.br/?pushpress=hub'/>
		<item>
		<title>Blog dos PFEs de LATAM</title>
		<link>http://fabiangehrke.com.br/2013/05/23/blog-dos-pfes-de-latam/</link>
		<comments>http://fabiangehrke.com.br/2013/05/23/blog-dos-pfes-de-latam/#comments</comments>
		<pubDate>Fri, 24 May 2013 02:07:12 +0000</pubDate>
		<dc:creator>Fabian André Gehrke</dc:creator>
				<category><![CDATA[Novidades]]></category>

		<guid isPermaLink="false">https://fgehrke.wordpress.com/?p=1670</guid>
		<description><![CDATA[No blog PFE LatinAmerica &#38; ISS você pode conferir os posts dos PFEs de LATAM, também irei utilizar esse canal para publicar meus posts. Recomendo dar uma olhada, tem bastante coisa interessante.<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=fabiangehrke.com.br&#038;blog=16172465&#038;post=1670&#038;subd=fgehrke&#038;ref=&#038;feed=1" width="1" height="1" />]]></description>
				<content:encoded><![CDATA[<p>No blog P<a href="http://blogs.technet.com/b/pfelatam/">FE LatinAmerica &amp; ISS</a> você pode conferir os posts dos PFEs de LATAM, também irei utilizar esse canal para publicar meus posts. Recomendo dar uma olhada, tem bastante coisa interessante.</p>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/fgehrke.wordpress.com/1670/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/fgehrke.wordpress.com/1670/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=fabiangehrke.com.br&#038;blog=16172465&#038;post=1670&#038;subd=fgehrke&#038;ref=&#038;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://fabiangehrke.com.br/2013/05/23/blog-dos-pfes-de-latam/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://1.gravatar.com/avatar/43a149af1253deaba3d17779f3ff640a?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">fgehrke</media:title>
		</media:content>
	</item>
		<item>
		<title>Editando o E-mail da Tarefa Atribu&#237;da do Processo de Aprova&#231;&#227;o do Workflow do SharePoint 2010</title>
		<link>http://fabiangehrke.com.br/2013/05/19/editando-o-email-da-tarefa-atribuda-do-processo-de-aprovao-do-workflow-do-sharepoint-2010/</link>
		<comments>http://fabiangehrke.com.br/2013/05/19/editando-o-email-da-tarefa-atribuda-do-processo-de-aprovao-do-workflow-do-sharepoint-2010/#comments</comments>
		<pubDate>Sun, 19 May 2013 15:43:58 +0000</pubDate>
		<dc:creator>Fabian André Gehrke</dc:creator>
				<category><![CDATA[SharePoint]]></category>
		<category><![CDATA[SharePoint 2013]]></category>
		<category><![CDATA[SharePoint Online]]></category>
		<category><![CDATA[Workflows]]></category>
		<category><![CDATA[SharePoint 2010]]></category>
		<category><![CDATA[SharePointers]]></category>

		<guid isPermaLink="false">https://fgehrke.wordpress.com/?p=1662</guid>
		<description><![CDATA[O workflow do SharePoint 2010 é muito rico em detalhes que muitas vezes são inexplorados. Um deles é o processo de aprovação, que nos permite customizar a interação do usuário com as tarefas de workflow de uma forma mais rica. Neste post vou mostrar como editar o e-mail de tarefa atribuída que o workflow envia, [&#8230;]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=fabiangehrke.com.br&#038;blog=16172465&#038;post=1662&#038;subd=fgehrke&#038;ref=&#038;feed=1" width="1" height="1" />]]></description>
				<content:encoded><![CDATA[<p align="justify">O <a href="http://fabiangehrke.com.br/category/workflows/">workflow</a> do SharePoint 2010 é muito rico em detalhes que muitas vezes são inexplorados. Um deles é o processo de aprovação, que nos permite customizar a interação do usuário com as tarefas de workflow de uma forma mais rica.</p>
<p align="justify">Neste post vou mostrar como editar o e-mail de tarefa atribuída que o workflow envia, mas o conteúdo deste post pode ser utilizado em outras customizações desta atividade.</p>
<p><span id="more-1662"></span>
<p align="justify">Este workflow foi criado e executado no SharePoint Designer 2013 e SharePoint 2013, mas feito com o <a href="http://fabiangehrke.com.br/2013/05/09/sharepoint-2013-workflows-engine-2010-vs-engine-2013/">engine 2010</a>, o que significa que pode ser feito no SharePoint 2010.</p>
<p align="justify">O processo de aprovação que vamos ver neste post é muito rico em seu uso. Ele, e o processo customizado de aprovação, são as únicas formas de customizarmos as mensagens com usuários como título e corpo da tarefa e e-mails. Os demais tipos, como: atribuir uma tarefa ou coletar dado de um usuário são estáticos. A diferença entre o processo customizado e o que vamos utilizar aqui, é que o customizado vem “zerado”, ou seja, você tem que fazer tudo dentro dele. Este aqui já vem pronto e acaba sendo mais fácil editar algo do que criar um novo. Por isso a escolha do processo de aprovação neste post.</p>
<p align="justify">Depois de criado o workflow adicione a atividade “Iniciar Processo de Aprovação”, conforme a imagem 01.</p>
<p><a href="http://fgehrke.files.wordpress.com/2013/05/custamapprovaltask01.png"><img title="CustamApprovalTask01" style="background-image:none;float:none;padding-top:0;padding-left:0;margin:0 auto;display:block;padding-right:0;border-width:0;" border="0" alt="CustamApprovalTask01" src="http://fgehrke.files.wordpress.com/2013/05/custamapprovaltask01_thumb.png?w=604&#038;h=414" width="604" height="414"></a></p>
<p align="center"><em>Imagem 01: Adicionando a tarefa Iniciar Processo de Aprovação</em></p>
<p>&nbsp;</p>
<p>Clique no nome do processo, conforme imagem 02, para editá-lo.</p>
<p><a href="http://fgehrke.files.wordpress.com/2013/05/custamapprovaltask02.png"><img title="CustamApprovalTask02" style="background-image:none;float:none;padding-top:0;padding-left:0;margin:0 auto;display:block;padding-right:0;border-width:0;" border="0" alt="CustamApprovalTask02" src="http://fgehrke.files.wordpress.com/2013/05/custamapprovaltask02_thumb.png?w=604&#038;h=426" width="604" height="426"></a></p>
<p align="center"><em>Imagem 02: Editando o processo de aprovação</em></p>
<p>&nbsp;</p>
<p align="justify">Entre na opção <em>Modificar o comportamento de tarefa única</em>, conforme a imagem 03, que nos permitirá editar o comportamento individual de cada tarefa criada neste processo, caso existam mais.</p>
<p><a href="http://fgehrke.files.wordpress.com/2013/05/custamapprovaltask03.png"><img title="CustamApprovalTask03" style="background-image:none;float:none;padding-top:0;padding-left:0;margin:0 auto;display:block;padding-right:0;border-width:0;" border="0" alt="CustamApprovalTask03" src="http://fgehrke.files.wordpress.com/2013/05/custamapprovaltask03_thumb.png?w=604&#038;h=426" width="604" height="426"></a></p>
<p align="center"><em>Imagem 03: Modificando o comportamento da tarefa do processo de aprovação</em></p>
<p>&nbsp;</p>
<p align="justify">A janela que abriu mostra algumas fases do processo de tarefas, onde podemos editar/adicionar atividades antes da tarefa ser criada, enquanto está pendente, quando expirada e quando completada. Role o scroll até a seção “enquanto está pendente” e procure o trecho selecionado na imagem 04. Veja que tem uma atividade de enviar e-mail para o usuário que está responsável pela tarefa. Clique nesta atividade para alterarmos sua configuração.</p>
<p><a href="http://fgehrke.files.wordpress.com/2013/05/custamapprovaltaska.png"><img title="CustamApprovalTaskA" style="background-image:none;float:none;padding-top:0;padding-left:0;margin:0 auto;display:block;padding-right:0;border-width:0;" border="0" alt="CustamApprovalTaskA" src="http://fgehrke.files.wordpress.com/2013/05/custamapprovaltaska_thumb.png?w=604&#038;h=426" width="604" height="426"></a></p>
<p align="center"><em>Imagem 04: Editando o e-mail para o usuário responsável pela tarefa</em></p>
<p>&nbsp;</p>
<p align="justify">A tela com as configurações do e-mail foi exibida, posicione o cursor no local indicado na imagem e digite “O ID desta tarefa é “ e então clique no botão “Add or Change Lookup”. A tela para adicionar o lookup é exibida, selecione os valores conforme exemplo da imagem 05.</p>
<p align="justify">Muito dificilmente você irá exibir o ID desta forma, é apenas um exemplo, mas você pode criar links customizados utilizando essas informações, editar o e-mail para o usuário e atender diversas necessidades de negócio que não seriam possíveis se não fosse o processo de aprovação.</p>
<p><a href="http://fgehrke.files.wordpress.com/2013/05/custamapprovaltaskb.png"><img title="CustamApprovalTaskB" style="background-image:none;float:none;padding-top:0;padding-left:0;margin:0 auto;display:block;padding-right:0;border-width:0;" border="0" alt="CustamApprovalTaskB" src="http://fgehrke.files.wordpress.com/2013/05/custamapprovaltaskb_thumb.png?w=604&#038;h=426" width="604" height="426"></a></p>
<p align="center"><em>Imagem 05: Adicionando o ID da tarefa no e-mail da tarefa</em></p>
<p>&nbsp;</p>
<p align="justify">Volte ao workflow principal e termine de editar o processo de aprovação, clique em “these users” conforme a imagem 06.</p>
<p><a href="http://fgehrke.files.wordpress.com/2013/05/custamapprovaltask11.png"><img title="CustamApprovalTask11" style="background-image:none;float:none;padding-top:0;padding-left:0;margin:0 auto;display:block;padding-right:0;border-width:0;" border="0" alt="CustamApprovalTask11" src="http://fgehrke.files.wordpress.com/2013/05/custamapprovaltask11_thumb.png?w=604&#038;h=426" width="604" height="426"></a></p>
<p align="center"><em>Imagem 06: Terminando a edição do processo de aprovação</em></p>
<p>&nbsp;</p>
<p align="justify">Edite as informações da tarefa, tais como: responsável, título, corpo e data de vencimento, conforme a imagem 07.</p>
<p><a href="http://fgehrke.files.wordpress.com/2013/05/custamapprovaltask12.png"><img title="CustamApprovalTask12" style="background-image:none;float:none;padding-top:0;padding-left:0;margin:0 auto;display:block;padding-right:0;border-width:0;" border="0" alt="CustamApprovalTask12" src="http://fgehrke.files.wordpress.com/2013/05/custamapprovaltask12_thumb.png?w=604&#038;h=426" width="604" height="426"></a></p>
<p align="center"><em>Imagem 07: Editando o corpo da tarefa</em></p>
<p>&nbsp;</p>
<p align="justify">O processo de customizar o e-mail enviado ao responsável pela tarefa do workflow foi concluído. Agora você pode editar as configurações do workflow, como fazer com que ele seja iniciado automaticamente, publicar o workflow e então testar o e-mail recebido.</p>
<p align="justify">Aqui mostrei apenas algo simples, mas aproveite para aprender mais sobre esta atividade que os resultados serão fantásticos.</p>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/fgehrke.wordpress.com/1662/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/fgehrke.wordpress.com/1662/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=fabiangehrke.com.br&#038;blog=16172465&#038;post=1662&#038;subd=fgehrke&#038;ref=&#038;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://fabiangehrke.com.br/2013/05/19/editando-o-email-da-tarefa-atribuda-do-processo-de-aprovao-do-workflow-do-sharepoint-2010/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
	
		<media:content url="http://1.gravatar.com/avatar/43a149af1253deaba3d17779f3ff640a?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">fgehrke</media:title>
		</media:content>

		<media:content url="http://fgehrke.files.wordpress.com/2013/05/custamapprovaltask01_thumb.png" medium="image">
			<media:title type="html">CustamApprovalTask01</media:title>
		</media:content>

		<media:content url="http://fgehrke.files.wordpress.com/2013/05/custamapprovaltask02_thumb.png" medium="image">
			<media:title type="html">CustamApprovalTask02</media:title>
		</media:content>

		<media:content url="http://fgehrke.files.wordpress.com/2013/05/custamapprovaltask03_thumb.png" medium="image">
			<media:title type="html">CustamApprovalTask03</media:title>
		</media:content>

		<media:content url="http://fgehrke.files.wordpress.com/2013/05/custamapprovaltaska_thumb.png" medium="image">
			<media:title type="html">CustamApprovalTaskA</media:title>
		</media:content>

		<media:content url="http://fgehrke.files.wordpress.com/2013/05/custamapprovaltaskb_thumb.png" medium="image">
			<media:title type="html">CustamApprovalTaskB</media:title>
		</media:content>

		<media:content url="http://fgehrke.files.wordpress.com/2013/05/custamapprovaltask11_thumb.png" medium="image">
			<media:title type="html">CustamApprovalTask11</media:title>
		</media:content>

		<media:content url="http://fgehrke.files.wordpress.com/2013/05/custamapprovaltask12_thumb.png" medium="image">
			<media:title type="html">CustamApprovalTask12</media:title>
		</media:content>
	</item>
		<item>
		<title>Obtendo Pastas Utilizando o WebService Lists.ASMX do SharePoint 2010</title>
		<link>http://fabiangehrke.com.br/2013/05/19/obtendo-pastas-utilizando-o-webservice-lists-asmx-do-sharepoint-2010/</link>
		<comments>http://fabiangehrke.com.br/2013/05/19/obtendo-pastas-utilizando-o-webservice-lists-asmx-do-sharepoint-2010/#comments</comments>
		<pubDate>Sun, 19 May 2013 03:13:34 +0000</pubDate>
		<dc:creator>Fabian André Gehrke</dc:creator>
				<category><![CDATA[Desenvolvimento]]></category>
		<category><![CDATA[SharePoint]]></category>
		<category><![CDATA[SharePoint 2010]]></category>
		<category><![CDATA[SharePointers]]></category>

		<guid isPermaLink="false">https://fgehrke.wordpress.com/?p=1640</guid>
		<description><![CDATA[Lendo um post no fórum do MSDN com o título Recuperar ID de pasta na Biblioteca usando Web Services fiquei curioso com o problema reportado, que era conseguir consultar uma pasta do SharePoint passando o nome dela e retornando o ID, utilizando o webservice Lists.ASMX. Este post tem um exemplo de como implementar esta necessidade. [&#8230;]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=fabiangehrke.com.br&#038;blog=16172465&#038;post=1640&#038;subd=fgehrke&#038;ref=&#038;feed=1" width="1" height="1" />]]></description>
				<content:encoded><![CDATA[<p align="justify">Lendo um post no fórum do MSDN com o título <a href="http://social.msdn.microsoft.com/Forums/pt-BR/sharepointpt/thread/b5d622a1-96d7-4f4b-9e17-05fc365c15d4">Recuperar ID de pasta na Biblioteca usando Web Services</a> fiquei curioso com o problema reportado, que era conseguir consultar uma pasta do SharePoint passando o nome dela e retornando o ID, utilizando o webservice Lists.ASMX.</p>
<p align="justify">Este post tem um exemplo de como implementar esta necessidade.</p>
<p><span id="more-1640"></span>
<p align="justify">Antes de iniciar, vale lembrar que existem outras formas mais recomendas de acessar dados remotamente do SharePoint, como por exemplo o <a href="http://msdn.microsoft.com/en-us/library/ee537247%28v=office.14%29.aspx">Client Object Model</a> ou o serviço REST, mas como a solicitação era via webservice, vou deixar o exemplo na mesma linha. O código deste post foi copiado do post original do fórum e adaptado para que funcione corretamente.</p>
<p>Neste exemplo, a biblioteca do SharePoint possui as pastas na seguinte estrutura:</p>
<ol>
<li>Pasta1
<ol>
<li>PastaA
<ol>
<li>Folder1 </li>
<li>Folder2 </li>
<li>Folder3 </li>
</ol>
</li>
<li>PastaB </li>
<li>PastaC </li>
</ol>
</li>
<li>Pasta2 </li>
<li>Pasta3 </li>
</ol>
<p align="justify">O primeiro passo para começar o desenvolvimento é adicionar a referência do webservice no Visual Studio, que fica no endereço <a href="http://enderesite/_vti_bin/lists.asmx">http://enderesite/_vti_bin/lists.asmx</a>, conforme mostra a imagem 01.</p>
<p><a href="http://fgehrke.files.wordpress.com/2013/05/webservice_caml_getfolderbyname02.png"><img title="WebService_CAML_GetFolderByName02" style="background-image:none;float:none;padding-top:0;padding-left:0;margin:0 auto;display:block;padding-right:0;border-width:0;" border="0" alt="WebService_CAML_GetFolderByName02" src="http://fgehrke.files.wordpress.com/2013/05/webservice_caml_getfolderbyname02_thumb.png?w=604&#038;h=424" width="604" height="424" /></a></p>
<p align="center"><em>Imagem 01: Adicionando a referência do Webservice SharePoint</em></p>
<p>&#160;</p>
<p align="justify">Criei uma classe chamada Pasta para conter a nossa lógica, ela possui as propriedades ID e Nome e o método RecuperaPasta que faz a busca no SharePoint. A listagem 01 tem a implementação completa da classe.</p>
<p><font face="Courier New">public class Pasta     <br />{      <br />&#160;&#160;&#160; public int ID { get; set; }      <br />&#160;&#160;&#160; public string Nome { get; set; }</font></p>
<p><font face="Courier New">&#160;&#160;&#160; /// &lt;summary&gt;     <br />&#160;&#160;&#160; /// Busca a pasta em uma biblioteca do SharePoint utilizando os webservices      <br />&#160;&#160;&#160; /// &lt;/summary&gt;&#160;&#160;&#160;&#160;&#160;&#160; <br />&#160;&#160;&#160; public void RecuperaPasta(string nomePasta, string nomeBiblioteca)      <br />&#160;&#160;&#160; {      <br />&#160;&#160;&#160;&#160;&#160;&#160;&#160; WebServiceLists.Lists service = new WebServiceLists.Lists();      <br />&#160;&#160;&#160;&#160;&#160;&#160;&#160; service.Url = &quot;</font><a href="http://lab-sp04/_vti_bin/lists.asmx&quot;;"><font face="Courier New">http://lab-sp04/_vti_bin/lists.asmx&quot;;</font></a>    <br /><font face="Courier New">&#160;&#160;&#160;&#160;&#160;&#160;&#160; service.Credentials = new System.Net.NetworkCredential(&quot;usuario&quot;, &quot;senha&quot;, &quot;dominio&quot;);     <br />&#160;&#160;&#160;&#160;&#160;&#160;&#160; <br />&#160;&#160;&#160;&#160;&#160;&#160;&#160; XmlDocument xDoc = new XmlDocument();      <br />&#160;&#160;&#160;&#160;&#160;&#160;&#160; XmlNode ndQuery = xDoc.CreateNode(XmlNodeType.Element, &quot;Query&quot;, &quot;&quot;);      <br />&#160;&#160;&#160;&#160;&#160;&#160;&#160; XmlNode ndViewFields = xDoc.CreateNode(XmlNodeType.Element, &quot;ViewFields&quot;, &quot;&quot;);      <br />&#160;&#160;&#160;&#160;&#160;&#160;&#160; XmlNode ndQueryOptions = xDoc.CreateNode(XmlNodeType.Element, &quot;QueryOptions&quot;, &quot;&quot;);      <br />&#160;&#160;&#160;&#160;&#160;&#160;&#160; <br />&#160;&#160;&#160;&#160;&#160;&#160;&#160; ndQuery.InnerXml = &quot;&lt;Where&gt;&quot; +      <br />&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; &quot;&lt;And&gt;&quot; +      <br />&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; &quot;&lt;Eq&gt;&quot; +      <br />&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; &quot;&lt;FieldRef Name=\&quot;FileLeafRef\&quot; /&gt;&quot; +      <br />&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; &quot;&lt;Value Type=\&quot;Text\&quot;&gt;&quot; + nomePasta + &quot;&lt;/Value&gt;&quot; +      <br />&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; &quot;&lt;/Eq&gt;&quot; +      <br />&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; &quot;&lt;Eq&gt;&quot; +      <br />&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; &quot;&lt;FieldRef Name=\&quot;FSObjType\&quot; /&gt;&quot; +      <br />&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; &quot;&lt;Value Type=\&quot;Lookup\&quot;&gt;1&lt;/Value&gt;&quot; +      <br />&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; &quot;&lt;/Eq&gt;&quot; +      <br />&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; &quot;&lt;/And&gt;&quot; +      <br />&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; &quot;&lt;/Where&gt;&quot;;</font></p>
<p><font face="Courier New">&#160;&#160;&#160;&#160;&#160;&#160;&#160; ndViewFields.InnerXml = &quot;&quot;;     <br />&#160;&#160;&#160;&#160;&#160;&#160;&#160; // O RecursiveAll eh fundamental para que a busca seja feita nas subpastas      <br />&#160;&#160;&#160;&#160;&#160;&#160;&#160; ndQueryOptions.InnerXml = &quot;&lt;QueryOptions&gt;&lt;ViewAttributes Scope=&#8217;RecursiveAll&#8217;/&gt;&lt;/QueryOptions&gt;&quot;;</font></p>
<p><font face="Courier New">&#160;&#160;&#160;&#160;&#160;&#160;&#160; XmlNode resultNode = service.GetListItems(nomeBiblioteca, string.Empty, ndQuery, ndViewFields, null, ndQueryOptions, null);</font></p>
<p><font face="Courier New">&#160;&#160;&#160;&#160;&#160;&#160;&#160; // Le os nodes de retorno     <br />&#160;&#160;&#160;&#160;&#160;&#160;&#160; foreach (XmlNode node in resultNode.ChildNodes)      <br />&#160;&#160;&#160;&#160;&#160;&#160;&#160; {      <br />&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; if (node.Name == &quot;rs:data&quot;)      <br />&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; {      <br />&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; for (int i = 0; i &lt; node.ChildNodes.Count; i++)      <br />&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; {      <br />&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; if (node.ChildNodes[i].Name == &quot;z:row&quot;)      <br />&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; {      <br />&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; // Le os atributos dos nodes      <br />&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; foreach (XmlAttribute attr in node.ChildNodes[i].Attributes)      <br />&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; {      <br />&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; if (attr.Name == &quot;ows_ID&quot;)      <br />&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; this.ID = int.Parse(attr.Value);      <br />&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; else if (attr.Name == &quot;ows_FileRef&quot;)      <br />&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; this.Nome = attr.Value;      <br />&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; }      <br />&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; }      <br />&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; }      <br />&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; }      <br />&#160;&#160;&#160;&#160;&#160;&#160;&#160; }      <br />&#160;&#160;&#160; }      <br />}</font></p>
<p align="center"><em>Listagem 01: Implementação da classe Pasta</em></p>
<p>&#160;</p>
<p align="justify">Com a implementação da classe Pasta, agora temos que testá-la. A listagem 02 mostra as chamadas de teste.</p>
<p><font face="Courier New">class Program     <br />{      <br />&#160;&#160;&#160; static void Main(string[] args)      <br />&#160;&#160;&#160; {      <br />&#160;&#160;&#160;&#160;&#160;&#160;&#160; Pasta pasta = new Pasta();</font></p>
<p><font face="Courier New">&#160;&#160;&#160;&#160;&#160;&#160;&#160; Console.WriteLine(&quot;Obtendo Pasta1&quot;);     <br />&#160;&#160;&#160;&#160;&#160;&#160;&#160; pasta.RecuperaPasta(&quot;Pasta1&quot;, &quot;Documentos&quot;);      <br />&#160;&#160;&#160;&#160;&#160;&#160;&#160; Console.WriteLine(string.Format(&quot;ID: {0} &#8211; Pasta: {1}&quot;, pasta.ID.ToString(), pasta.Nome));</font></p>
<p><font face="Courier New">&#160;&#160;&#160;&#160;&#160;&#160;&#160; Console.WriteLine(&quot;Obtendo PastaA&quot;);     <br />&#160;&#160;&#160;&#160;&#160;&#160;&#160; pasta.RecuperaPasta(&quot;PastaA&quot;, &quot;Documentos&quot;);      <br />&#160;&#160;&#160;&#160;&#160;&#160;&#160; Console.WriteLine(string.Format(&quot;ID: {0} &#8211; Pasta: {1}&quot;, pasta.ID.ToString(), pasta.Nome));</font></p>
<p><font face="Courier New">&#160;&#160;&#160;&#160;&#160;&#160;&#160; Console.WriteLine(&quot;Obtendo Folder1&quot;);     <br />&#160;&#160;&#160;&#160;&#160;&#160;&#160; pasta.RecuperaPasta(&quot;Folder1&quot;, &quot;Documentos&quot;);      <br />&#160;&#160;&#160;&#160;&#160;&#160;&#160; Console.WriteLine(string.Format(&quot;ID: {0} &#8211; Pasta: {1}&quot;, pasta.ID.ToString(), pasta.Nome));      <br />&#160;&#160;&#160;&#160;&#160;&#160;&#160; Console.ReadKey();      <br />&#160;&#160;&#160; }      <br />}</font></p>
<p align="center"><font face="Courier New"><em>Listagem 02: Testando a classe Pasta</em></font></p>
<p><font face="Verdana"></font>&#160;</p>
<p>Ao executar o teste, o resultado exibido na imagem 02 é exibido.</p>
<p><a href="http://fgehrke.files.wordpress.com/2013/05/webservice_caml_getfolderbyname01.png"><img title="WebService_CAML_GetFolderByName01" style="background-image:none;float:none;padding-top:0;padding-left:0;margin:0 auto;display:block;padding-right:0;border-width:0;" border="0" alt="WebService_CAML_GetFolderByName01" src="http://fgehrke.files.wordpress.com/2013/05/webservice_caml_getfolderbyname01_thumb.png?w=604&#038;h=302" width="604" height="302" /></a></p>
<p align="center"><em>Imagem 02: Executando a pesquisa das pastas</em></p>
<p align="justify">&#160;</p>
<p align="justify">Verifique que as três chamadas do método foram executadas com sucesso, retornando o ID e o Nome da pasta e apenas uma pasta por vez.</p>
<p align="justify">&#160;</p>
<p align="justify"><strong><font size="3">Referências</font></strong></p>
<ul>
<li>SharePoint 2010 Client Object Model (<a title="http://msdn.microsoft.com/en-us/library/ee537247%28v=office.14%29.aspx" href="http://msdn.microsoft.com/en-us/library/ee537247%28v=office.14%29.aspx">http://msdn.microsoft.com/en-us/library/ee537247%28v=office.14%29.aspx</a>) </li>
<li>SharePoint Foundation REST Interface (<a title="http://msdn.microsoft.com/en-us/library/ff521587%28v=office.14%29.aspx" href="http://msdn.microsoft.com/en-us/library/ff521587%28v=office.14%29.aspx">http://msdn.microsoft.com/en-us/library/ff521587%28v=office.14%29.aspx</a>) </li>
<li>
<p>Search document from document library usin CAML query (<a title="http://sharepoint.stackexchange.com/questions/59323/search-document-from-document-library-usin-caml-query" href="http://sharepoint.stackexchange.com/questions/59323/search-document-from-document-library-usin-caml-query">http://sharepoint.stackexchange.com/questions/59323/search-document-from-document-library-usin-caml-query</a>)</p>
</li>
<li>
<p>Recuperar ID de pasta na Biblioteca usando Web Services (<a title="http://social.msdn.microsoft.com/Forums/pt-BR/sharepointpt/thread/b5d622a1-96d7-4f4b-9e17-05fc365c15d4" href="http://social.msdn.microsoft.com/Forums/pt-BR/sharepointpt/thread/b5d622a1-96d7-4f4b-9e17-05fc365c15d4">http://social.msdn.microsoft.com/Forums/pt-BR/sharepointpt/thread/b5d622a1-96d7-4f4b-9e17-05fc365c15d4</a>)</p>
</li>
</ul>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/fgehrke.wordpress.com/1640/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/fgehrke.wordpress.com/1640/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=fabiangehrke.com.br&#038;blog=16172465&#038;post=1640&#038;subd=fgehrke&#038;ref=&#038;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://fabiangehrke.com.br/2013/05/19/obtendo-pastas-utilizando-o-webservice-lists-asmx-do-sharepoint-2010/feed/</wfw:commentRss>
		<slash:comments>3</slash:comments>
	
		<media:content url="http://1.gravatar.com/avatar/43a149af1253deaba3d17779f3ff640a?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">fgehrke</media:title>
		</media:content>

		<media:content url="http://fgehrke.files.wordpress.com/2013/05/webservice_caml_getfolderbyname02_thumb.png" medium="image">
			<media:title type="html">WebService_CAML_GetFolderByName02</media:title>
		</media:content>

		<media:content url="http://fgehrke.files.wordpress.com/2013/05/webservice_caml_getfolderbyname01_thumb.png" medium="image">
			<media:title type="html">WebService_CAML_GetFolderByName01</media:title>
		</media:content>
	</item>
		<item>
		<title>Altera&#231;&#245;es Permiss&#245;es de Documentos Sob Workflows</title>
		<link>http://fabiangehrke.com.br/2013/05/10/alteraes-permisses-de-documentos-sob-workflows/</link>
		<comments>http://fabiangehrke.com.br/2013/05/10/alteraes-permisses-de-documentos-sob-workflows/#comments</comments>
		<pubDate>Fri, 10 May 2013 19:10:00 +0000</pubDate>
		<dc:creator>Fabian André Gehrke</dc:creator>
				<category><![CDATA[SharePoint]]></category>
		<category><![CDATA[SharePoint Online]]></category>
		<category><![CDATA[Workflows]]></category>
		<category><![CDATA[SharePoint 2010]]></category>
		<category><![CDATA[SharePoint 2013]]></category>
		<category><![CDATA[SharePointers]]></category>

		<guid isPermaLink="false">https://fgehrke.wordpress.com/?p=1626</guid>
		<description><![CDATA[Quando um workflow está sendo executado sobre um documento, qualquer usuário com permissão pode fazer altearções nele. Mas em alguns cenários é importante que o documento seja mantido intacto enquanto a aprovação estiver sendo feita. Imagine que você tem um workflow que possui algumas aprovações, como aprovação pelo gerente e pelo diretor. Enquanto a tarefa [&#8230;]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=fabiangehrke.com.br&#038;blog=16172465&#038;post=1626&#038;subd=fgehrke&#038;ref=&#038;feed=1" width="1" height="1" />]]></description>
				<content:encoded><![CDATA[<p align="justify">Quando um workflow está sendo executado sobre um documento, qualquer usuário com permissão pode fazer altearções nele. Mas em alguns cenários é importante que o documento seja mantido intacto enquanto a aprovação estiver sendo feita. Imagine que você tem um workflow que possui algumas aprovações, como aprovação pelo gerente e pelo diretor. Enquanto a tarefa estiver pendente para eles, somente eles podem alterar o documento. Evitando que eles aprovem algum documento que foi alterado.</p>
<p align="justify">A engine do workflow permite que este comportamento seja feito, então conforme o estágio que o workflow estiver, ele irá alterar as permissões do documento automaticamente, garantindo a integridade das informações.</p>
<p align="justify">Neste post veremos como utilizar atividades do workflows para implementar este comportamento.</p>
<p><span id="more-1626"></span>
<p align="justify">No exemplo deste post vou utilizar o SharePoint 2013 e criar um workflow com engine do SharePoint 2010, o que significa que irá funcionar no SharePoint 2010 também.</p>
<p align="justify">A atividade de alteração de permissões do documento não existe no engine 2013, mas para isso você pode fazer um fluxo auxiliar utilizando o engine 2010, como mostrei recentemente no post <a href="http://fabiangehrke.com.br/2013/05/09/sharepoint-2013-workflows-engine-2010-vs-engine-2013/">SharePoint 2013 Workflows: Engine 2010 versus Engine 2013</a>.</p>
<p align="justify">O nosso case é bem simples, vamos fazer um workflow com dois estágios onde o primeiro será uma tarefa para o gerente aprovar e o outro para o diretor. A diferença é que apenas o gerente e o diretor poderão alterar o documento, em seus respectivos momentos (enquanto a tarefa estiver pendente).</p>
<p align="justify">Para iniciar criei um workflow de lista com o engine 2010 apontando para uma biblioteca de documentos qualquer, como mostra a imagem 01.</p>
<p><a href="http://fgehrke.files.wordpress.com/2013/05/permissionwf01.png"><img title="PermissionWF01" style="background-image:none;float:none;padding-top:0;padding-left:0;margin:0 auto;display:block;padding-right:0;border-width:0;" border="0" alt="PermissionWF01" src="http://fgehrke.files.wordpress.com/2013/05/permissionwf01_thumb.png?w=404&#038;h=296" width="404" height="296"></a></p>
<p align="center"><em>Imagem 01: Criando o workflow com engine do SharePoint 2010</em></p>
<p>&nbsp;</p>
<p align="justify">Posicione o cursos acima do passo padrão “Step 1”, depois clique em “Impersonation Step” para adicioná-lo. Se o cursor não estiver posicionado no local correto, a opção “Impersonation Step” não estará habilitado. A imagem 02 mostra a tela, repare nas flechas. Um “Impersonation Step” é um passo que é executado com as permissões do usuário que fez a publicação do Workflow, o que geralmente é um usuário com nível elevado de acesso no site. Isso é fundamental porque um usuário colaborador não vai ter privilégios para alterar as permissões do documento. Então, rodando com um usuário com acesso, o workflow consegue realizar esta operação.</p>
<p><a href="http://fgehrke.files.wordpress.com/2013/05/permissionwf02.png"><img title="PermissionWF02" style="background-image:none;float:none;padding-top:0;padding-left:0;margin:0 auto;display:block;padding-right:0;border-width:0;" border="0" alt="PermissionWF02" src="http://fgehrke.files.wordpress.com/2013/05/permissionwf02_thumb.png?w=604&#038;h=302" width="604" height="302"></a></p>
<p align="center"><em>Imagem 03: Adicionando um impersonation step</em></p>
<p>&nbsp;</p>
<p align="justify">Ao colocar o cursor dentro do “Impersonation Step” repare que novas atividades será exibidas na opção “Actions”. Selecione a atividade “Substituir Permissões dos Item de Lista”, conforme a imagem 04. Além dessa existem várias outras, mas para o nosso case esta é suficiente.</p>
<p><a href="http://fgehrke.files.wordpress.com/2013/05/permissionwf03.png"><img title="PermissionWF03" style="background-image:none;float:none;padding-top:0;padding-left:0;margin:0 auto;display:block;padding-right:0;border-width:0;" border="0" alt="PermissionWF03" src="http://fgehrke.files.wordpress.com/2013/05/permissionwf03_thumb.png?w=604&#038;h=419" width="604" height="419"></a></p>
<p align="center"><em>Imagem 04: Adicionando a atividade para substrituir as permissões do item</em></p>
<p>&nbsp;</p>
<p align="justify">Para configurar a atividade de substituir permissões, clique em “estas permissões” e a janela para configuração será exibida, conforme imagem 05. Clique em “Add…” para adicionar permissões aos usuários. É possível adicionar vários usuários, como por exemplo o dono da tarefa e um grupo de adminsitradores. </p>
<p><a href="http://fgehrke.files.wordpress.com/2013/05/permissionwf04.png"><img title="PermissionWF04" style="background-image:none;float:none;padding-top:0;padding-left:0;margin:0 auto;display:block;padding-right:0;border-width:0;" border="0" alt="PermissionWF04" src="http://fgehrke.files.wordpress.com/2013/05/permissionwf04_thumb.png?w=604&#038;h=442" width="604" height="442"></a></p>
<p align="center"><em>Imagem 05: Configurando as permissões do item</em></p>
<p>&nbsp;</p>
<p align="justify">A imagem 06 mostra a tela para adicionar as permissões, selecione o usuário e o nível de permissão. Aqui estão sendo exibidos todos os níveis do acesso do site, repare que existe inclusive um tipo chamado “Colaboração sem exclusão”, que é um tipo de permissão customizado. Considere utilizar níveis assim para evitar que o usuário atual do workflow exclua o documento.</p>
<p><a href="http://fgehrke.files.wordpress.com/2013/05/permissionwf05.png"><img title="PermissionWF05" style="background-image:none;float:none;padding-top:0;padding-left:0;margin:0 auto;display:block;padding-right:0;border-width:0;" border="0" alt="PermissionWF05" src="http://fgehrke.files.wordpress.com/2013/05/permissionwf05_thumb.png?w=604&#038;h=454" width="604" height="454"></a></p>
<p align="center"><em>Imagem 06: Adicionando permissão para um usuário</em></p>
<p>&nbsp;</p>
<p align="justify">E por fim, configurar qual o item que receberá as permissões. No nosso caso o item corrente, conforme a imagem 07.</p>
<p><a href="http://fgehrke.files.wordpress.com/2013/05/permissionwf06.png"><img title="PermissionWF06" style="background-image:none;float:none;padding-top:0;padding-left:0;margin:0 auto;display:block;padding-right:0;border-width:0;" border="0" alt="PermissionWF06" src="http://fgehrke.files.wordpress.com/2013/05/permissionwf06_thumb.png?w=604&#038;h=354" width="604" height="354"></a></p>
<p align="center"><em>Imagem 07: Configurando o objeto que irá receber as permissões</em></p>
<p>&nbsp;</p>
<p align="justify">Neste ponto a atividade de substituição das permissões está pronta. Depois disso coloquei um passo chamado “Aprovação Gerente” e uma tarefa para o gerente aprovar, conforme mostra a imagem 08. Após isso fiz o mesmo processo só que para o diretor conforme o case definido. Também fiz as demais configurações no workflow, como fazer com que ele inicie automaticamente e publiquei-o.</p>
<p><a href="http://fgehrke.files.wordpress.com/2013/05/permissionwf07.png"><img title="PermissionWF07" style="background-image:none;float:none;padding-top:0;padding-left:0;margin:0 auto;display:block;padding-right:0;border-width:0;" border="0" alt="PermissionWF07" src="http://fgehrke.files.wordpress.com/2013/05/permissionwf07_thumb.png?w=604&#038;h=442" width="604" height="442"></a></p>
<p align="center"><em>Imagem 08: Finalizando o workflow</em></p>
<p>&nbsp;</p>
<p align="justify">Com o workflow publicado, acessei a biblioteca “Documentos” e adicionei um documento qualquer. Na coluna do workflow podemos ver que ele está em andamento, conforme a imagem 09. Sendo assim, se acessarmos as permissões do documento neste momento, ele estará apenas com as permissões para o gerente poder alterá-lo.</p>
<p><a href="http://fgehrke.files.wordpress.com/2013/05/permissionwf08.png"><img title="PermissionWF08" style="background-image:none;float:none;padding-top:0;padding-left:0;margin:0 auto;display:block;padding-right:0;border-width:0;" border="0" alt="PermissionWF08" src="http://fgehrke.files.wordpress.com/2013/05/permissionwf08_thumb.png?w=604&#038;h=369" width="604" height="369"></a></p>
<p align="center"><em>Imagem 09: Worklow em andamento</em></p>
<p>&nbsp;</p>
<p align="justify">Selecione o item e clique no menu contextual, na opção “Gerenciar Permissões”, conforme a imagem 10.</p>
<p><a href="http://fgehrke.files.wordpress.com/2013/05/permissionwf09.png"><img title="PermissionWF09" style="background-image:none;float:none;padding-top:0;padding-left:0;margin:0 auto;display:block;padding-right:0;border-width:0;" border="0" alt="PermissionWF09" src="http://fgehrke.files.wordpress.com/2013/05/permissionwf09_thumb.png?w=604&#038;h=369" width="604" height="369"></a></p>
<p align="center"><em>Imagem 10: Verificando as permissões do documento</em></p>
<p>&nbsp;</p>
<p align="justify">Verifique na imagem 11 que apenas o usuáro Eleriane, que é o Gerente, possui acesso de colaboração. Sendo assim, concluímos que está passou ocorreu com sucesso. Os demais usuários estão apenas com acesso limitado, o que não vai possibilitar nem o acesso ao documento. Poderia ter sido configurado para os usuários terem acesso de leitura, mas para simplificar foquei só no gerente.</p>
<p><a href="http://fgehrke.files.wordpress.com/2013/05/permissionwf10.png"><img title="PermissionWF10" style="background-image:none;float:none;padding-top:0;padding-left:0;margin:0 auto;display:block;padding-right:0;border-width:0;" border="0" alt="PermissionWF10" src="http://fgehrke.files.wordpress.com/2013/05/permissionwf10_thumb.png?w=604&#038;h=369" width="604" height="369"></a></p>
<p align="center"><em>Imagem 11: Verificando as permissões do gerente</em></p>
<p>&nbsp;</p>
<p align="justify">O workflow foi acessado pelo gerente a a tarefa dele foi concluída. O fluxo seguiu para a aprovação do diretor e agora apenas a permissão de colaboração dele deve existir. A imagem 12 mostra que apenas o Fabian , que é o Diretor, tem acesso de colaboração, o restante apenas de acesso limitado. Sendo assim conseguimos validar as 2 etapas do workflow. </p>
<p><a href="http://fgehrke.files.wordpress.com/2013/05/permissionwf11.png"><img title="PermissionWF11" style="background-image:none;float:none;padding-top:0;padding-left:0;margin:0 auto;display:block;padding-right:0;border-width:0;" border="0" alt="PermissionWF11" src="http://fgehrke.files.wordpress.com/2013/05/permissionwf11_thumb.png?w=604&#038;h=369" width="604" height="369"></a></p>
<p align="center"><em>Imagem 12: Verificando as permissões do diretor</em></p>
<p>&nbsp;</p>
<p align="justify">Neste post vimos como podemos simplificar o gerenciamento de documentos que estão sob workflow qualquer, fazendo com que somente os usuários que estão realizando tarefas no processo&nbsp; tenham acesso ao documento . Desta forma evita-se que o documento seja alterado após a aprovação do gerente, por exemplo. O melhor de tudo é que essa lógica está dentro do próprio workflow, o que facilita bastante o trabalho de quem estiver automatizando este processo.</p>
<p align="justify">A ideia deste post saiu de uma discussão com os amigos <a href="https://www.facebook.com/mareaturbo?fref=ts">Ednei Monteiro</a> e <a href="https://www.facebook.com/jralberich?fref=ts">Juan Alberich</a>, muito obrigado pela inspiração e pelas ideias trocadas. </p>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/fgehrke.wordpress.com/1626/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/fgehrke.wordpress.com/1626/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=fabiangehrke.com.br&#038;blog=16172465&#038;post=1626&#038;subd=fgehrke&#038;ref=&#038;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://fabiangehrke.com.br/2013/05/10/alteraes-permisses-de-documentos-sob-workflows/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
	
		<media:content url="http://1.gravatar.com/avatar/43a149af1253deaba3d17779f3ff640a?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">fgehrke</media:title>
		</media:content>

		<media:content url="http://fgehrke.files.wordpress.com/2013/05/permissionwf01_thumb.png" medium="image">
			<media:title type="html">PermissionWF01</media:title>
		</media:content>

		<media:content url="http://fgehrke.files.wordpress.com/2013/05/permissionwf02_thumb.png" medium="image">
			<media:title type="html">PermissionWF02</media:title>
		</media:content>

		<media:content url="http://fgehrke.files.wordpress.com/2013/05/permissionwf03_thumb.png" medium="image">
			<media:title type="html">PermissionWF03</media:title>
		</media:content>

		<media:content url="http://fgehrke.files.wordpress.com/2013/05/permissionwf04_thumb.png" medium="image">
			<media:title type="html">PermissionWF04</media:title>
		</media:content>

		<media:content url="http://fgehrke.files.wordpress.com/2013/05/permissionwf05_thumb.png" medium="image">
			<media:title type="html">PermissionWF05</media:title>
		</media:content>

		<media:content url="http://fgehrke.files.wordpress.com/2013/05/permissionwf06_thumb.png" medium="image">
			<media:title type="html">PermissionWF06</media:title>
		</media:content>

		<media:content url="http://fgehrke.files.wordpress.com/2013/05/permissionwf07_thumb.png" medium="image">
			<media:title type="html">PermissionWF07</media:title>
		</media:content>

		<media:content url="http://fgehrke.files.wordpress.com/2013/05/permissionwf08_thumb.png" medium="image">
			<media:title type="html">PermissionWF08</media:title>
		</media:content>

		<media:content url="http://fgehrke.files.wordpress.com/2013/05/permissionwf09_thumb.png" medium="image">
			<media:title type="html">PermissionWF09</media:title>
		</media:content>

		<media:content url="http://fgehrke.files.wordpress.com/2013/05/permissionwf10_thumb.png" medium="image">
			<media:title type="html">PermissionWF10</media:title>
		</media:content>

		<media:content url="http://fgehrke.files.wordpress.com/2013/05/permissionwf11_thumb.png" medium="image">
			<media:title type="html">PermissionWF11</media:title>
		</media:content>
	</item>
		<item>
		<title>SharePoint 2013 Workflows: Engine 2010 versus Engine 2013</title>
		<link>http://fabiangehrke.com.br/2013/05/09/sharepoint-2013-workflows-engine-2010-vs-engine-2013/</link>
		<comments>http://fabiangehrke.com.br/2013/05/09/sharepoint-2013-workflows-engine-2010-vs-engine-2013/#comments</comments>
		<pubDate>Thu, 09 May 2013 15:14:00 +0000</pubDate>
		<dc:creator>Fabian André Gehrke</dc:creator>
				<category><![CDATA[Office 365]]></category>
		<category><![CDATA[SharePoint 2013]]></category>
		<category><![CDATA[Workflows]]></category>
		<category><![CDATA[SharePointers]]></category>

		<guid isPermaLink="false">https://fgehrke.wordpress.com/?p=1601</guid>
		<description><![CDATA[O SharePoint 2013 trouxe um novo engine de workflows e com isso novas possibilidades, já fiz alguns posts sobre o assunto Workflow. Mas, mesmo com isso, não está claro se devemos utilizar um engine ou outro, o engine 2013 faz tudo que o 2010 faz? Posso utilizar os dois em conjunto? Neste post vamos discutir [&#8230;]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=fabiangehrke.com.br&#038;blog=16172465&#038;post=1601&#038;subd=fgehrke&#038;ref=&#038;feed=1" width="1" height="1" />]]></description>
				<content:encoded><![CDATA[<p align="justify">O SharePoint 2013 trouxe um novo engine de workflows e com isso novas possibilidades, já fiz alguns posts sobre o assunto <a href="http://fabiangehrke.com.br/category/workflows/">Workflow</a>. Mas, mesmo com isso, não está claro se devemos utilizar um engine ou outro, o engine 2013 faz tudo que o 2010 faz? Posso utilizar os dois em conjunto?</p>
<p align="justify">Neste post vamos discutir algumas coisas relacionadas a este assunto. Não pretendo falar sobre tudo, apenas algumas ideias iniciais. Para pessoas que estão iniciando com o SharePoint 2013, o novo engine trouxe muitos recursos que vão revolucionar a forma de fazer workflows no SharePoint 2013, mas não vamos falar sobre isto neste post. O objetivo é falar como utilizar o poder do engine 2013 junto com o engine 2010.</p>
<p><span id="more-1601"></span>
<p align="justify">Para começar, recomendo a leitura das referências sobre as atividades existentes em cada engine <a href="http://msdn.microsoft.com/en-us/library/jj822977.aspx">Workflow actions quick reference (SharePoint 2010 Workflow platform)</a> e <a href="http://msdn.microsoft.com/en-us/library/jj164026.aspx">Workflow actions quick reference (SharePoint 2013 Workflow platform)</a>. Com isso é possível concluir que o Engine 2013 trouxe muitas coisas novas, mas várias atividades existentes no 2010 foram removidas. Talvez por causa da nova arquitetura, que não está mais dentro do SharePoint como a engine 2010, mas vamos ver como resolver algumas coisas que só podem ser feitas com o engine 2010.</p>
<p align="justify">Uma atividade que utilizo muito no engine 2010 é a <em>Send Document <font style="background-color:#ffffff;">Set to Repository</font></em><font style="background-color:#ffffff;">, que move/copia um documento para o organizador de conteúdo aplicar as regras de roteamento de documentos (para saber mais sobre o organizador de conteúdo, veja as referências)</font>. No engine 2013 essa atividade não existe. Algo que seria similar é a atividade <em>Copy Document</em>, mas o comportamento dela é estático, copiando o documento sempre para o mesmo lugar. Com o organizador de conteúdo temos várias regras que podem ser configuradas sem alterar o workflow, apenas via configuração das regras. Sem o organizador de conteúdo, precisamos colocar as regras diretamente no workflow, o que pode <font style="background-color:#ffffff;">ser muito trabalhoso, deixando o fluxo ilegível e fazendo com que sofra muitas alterações para regras novas. </font>Se utilizamos a atividade <em>Copy Document</em> para copiar um documento para a biblioteca de redistribuição, o evento do organizador de conteúdo não é executado, tornando este o endereço final do documento.</p>
<p align="justify">Como resolver isso? O engine 2010 faz algo que eu preciso, o engine 2013 faz coisas que eu preciso também. Não consigo fazer um fluxo com ambos ao mesmo tempo? Como resolver?</p>
<p align="justify">Pelos workflows que já fiz com o engine 2013, digo que este cenário vai ser comum e para resolver isso utilizei a atividade <em>Start a List Workflow</em>, que serve para iniciar um outro workflow. Esta atividade é nova e veio muito a calhar. Com ela eu posso fazer o meu workflow com o engine 2013 e chamar workflows auxiliares com o engine 2010 para realizarem tarefas específicas, como utilizar o organizador de conteúdo. Com isso, tenho o melhor dos dois mundos. Só que preste atenção, esta atividade é nova no engine 2013, se você fizer o workflow no engine 2010 e tentar chamar um workflow no 2013, não vai conseguir.</p>
<p align="justify">Gostei muito da possibilidade de poder chamar workflows com engine 2010 a partir de workflow engine 2013. Isso nos dará uma flexibilidade muito grande, podendo associar recursos exclusivos do engine 2010 com os novos recursos do engine 2013. É importante exclarecer que apenas workflows do engine 2013 podem chamar workflows do engine 2010, é a única combinação possível.</p>
<p align="justify">&nbsp;</p>
<p align="justify"><strong><font size="3">Referências</font></strong></p>
<ul>
<li>
<div align="left">Configurar o Organizador de Conteúdo para rotear documentos (<a title="http://office.microsoft.com/pt-br/sharepoint-server-help/configurar-o-organizador-de-conteudo-para-rotear-documentos-HA010378237.aspx" href="http://office.microsoft.com/pt-br/sharepoint-server-help/configurar-o-organizador-de-conteudo-para-rotear-documentos-HA010378237.aspx">http://office.microsoft.com/pt-br/sharepoint-server-help/configurar-o-organizador-de-conteudo-para-rotear-documentos-HA010378237.aspx</a>)</div>
<li>
<div align="left">Criar regras do Organizador de Conteúdo para circular documentos (<a title="http://office.microsoft.com/pt-br/sharepoint-server-help/criar-regras-do-organizador-de-conteudo-para-circular-documentos-HA101807927.aspx" href="http://office.microsoft.com/pt-br/sharepoint-server-help/criar-regras-do-organizador-de-conteudo-para-circular-documentos-HA101807927.aspx">http://office.microsoft.com/pt-br/sharepoint-server-help/criar-regras-do-organizador-de-conteudo-para-circular-documentos-HA101807927.aspx</a>)</div>
<li>
<div align="left">Introduzindo Gerenciamento de Conteúdo da Web no SharePoint 2010 (<a title="http://blogs.msdn.com/b/sharepoint_br/archive/2010/11/25/introduzindo-gerenciamento-de-conte-250-do-da-web-no-sharepoint-2010.aspx" href="http://blogs.msdn.com/b/sharepoint_br/archive/2010/11/25/introduzindo-gerenciamento-de-conte-250-do-da-web-no-sharepoint-2010.aspx">http://blogs.msdn.com/b/sharepoint_br/archive/2010/11/25/introduzindo-gerenciamento-de-conte-250-do-da-web-no-sharepoint-2010.aspx</a>)</div>
<li>
<div align="left">Workflow actions quick reference (SharePoint 2010 Workflow platform) (<a title="http://msdn.microsoft.com/en-us/library/jj822977.aspx" href="http://msdn.microsoft.com/en-us/library/jj822977.aspx">http://msdn.microsoft.com/en-us/library/jj822977.aspx</a>)</div>
<li>
<div align="left">Workflow actions quick reference (SharePoint 2013 Workflow platform) (<a title="http://msdn.microsoft.com/en-us/library/jj164026.aspx" href="http://msdn.microsoft.com/en-us/library/jj164026.aspx">http://msdn.microsoft.com/en-us/library/jj164026.aspx</a>)</div>
<li>
<p align="left">Understanding Coordination actions in SharePoint Designer 2013 (<a title="http://msdn.microsoft.com/en-us/library/jj554503.aspx" href="http://msdn.microsoft.com/en-us/library/jj554503.aspx">http://msdn.microsoft.com/en-us/library/jj554503.aspx</a>)</p>
</li>
</ul>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/fgehrke.wordpress.com/1601/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/fgehrke.wordpress.com/1601/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=fabiangehrke.com.br&#038;blog=16172465&#038;post=1601&#038;subd=fgehrke&#038;ref=&#038;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://fabiangehrke.com.br/2013/05/09/sharepoint-2013-workflows-engine-2010-vs-engine-2013/feed/</wfw:commentRss>
		<slash:comments>3</slash:comments>
	
		<media:content url="http://1.gravatar.com/avatar/43a149af1253deaba3d17779f3ff640a?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">fgehrke</media:title>
		</media:content>
	</item>
		<item>
		<title>Material &#8211; Developing Applications for SharePoint 2010</title>
		<link>http://fabiangehrke.com.br/2013/05/07/material-developing-applications-for-sharepoint-2010/</link>
		<comments>http://fabiangehrke.com.br/2013/05/07/material-developing-applications-for-sharepoint-2010/#comments</comments>
		<pubDate>Tue, 07 May 2013 19:23:16 +0000</pubDate>
		<dc:creator>Fabian André Gehrke</dc:creator>
				<category><![CDATA[Dicas]]></category>
		<category><![CDATA[Material]]></category>
		<category><![CDATA[SharePoint 2010]]></category>

		<guid isPermaLink="false">https://fgehrke.wordpress.com/?p=1599</guid>
		<description><![CDATA[Estava revisando o material que tinha estudado para o SharePoint 2010 e encontrei um que me ajudou muito no entendimento do SharePoint como uma plataforma de desenvolvimento. Ele trás muita informação importante que mudou a minha visão sobre o SharePoint e ensinou as fazer as customizações de uma forma bem melhor do que fazia antes. [&#8230;]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=fabiangehrke.com.br&#038;blog=16172465&#038;post=1599&#038;subd=fgehrke&#038;ref=&#038;feed=1" width="1" height="1" />]]></description>
				<content:encoded><![CDATA[<p align="justify">Estava revisando o material que tinha estudado para o SharePoint 2010 e encontrei um que me ajudou muito no entendimento do SharePoint como uma plataforma de desenvolvimento. Ele trás muita informação importante que mudou a minha visão sobre o SharePoint e ensinou as fazer as customizações de uma forma bem melhor do que fazia antes. É o <a href="http://www.microsoft.com/en-us/download/details.aspx?id=23919">Developing Applications for SharePoint 2010</a>, recomendo muito!</p>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/fgehrke.wordpress.com/1599/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/fgehrke.wordpress.com/1599/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=fabiangehrke.com.br&#038;blog=16172465&#038;post=1599&#038;subd=fgehrke&#038;ref=&#038;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://fabiangehrke.com.br/2013/05/07/material-developing-applications-for-sharepoint-2010/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://1.gravatar.com/avatar/43a149af1253deaba3d17779f3ff640a?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">fgehrke</media:title>
		</media:content>
	</item>
		<item>
		<title>Certifica&#231;&#245;es do SharePoint 2013</title>
		<link>http://fabiangehrke.com.br/2013/04/05/certificaes-do-sharepoint-2013/</link>
		<comments>http://fabiangehrke.com.br/2013/04/05/certificaes-do-sharepoint-2013/#comments</comments>
		<pubDate>Sat, 06 Apr 2013 00:28:00 +0000</pubDate>
		<dc:creator>Fabian André Gehrke</dc:creator>
				<category><![CDATA[Certificações]]></category>
		<category><![CDATA[SharePoint 2013]]></category>
		<category><![CDATA[SharePointers]]></category>

		<guid isPermaLink="false">https://fgehrke.wordpress.com/?p=1116</guid>
		<description><![CDATA[Foram anunciadas as provas de infra do SharePoint 2013, neste post vou falar um pouco sobre este assunto e as alterações que foram realizadas, o que por sinal foram muito significativas. As provas seguem o mesmo padrão adotado para as demais provas da Microsoft, que é o retorno da nomenclatura Microsoft Certified Solutions Expert (MCSE). [&#8230;]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=fabiangehrke.com.br&#038;blog=16172465&#038;post=1116&#038;subd=fgehrke&#038;ref=&#038;feed=1" width="1" height="1" />]]></description>
				<content:encoded><![CDATA[<p align="justify">Foram anunciadas as provas de infra do SharePoint 2013, neste post vou falar um pouco sobre este assunto e as alterações que foram realizadas, o que por sinal foram muito significativas.</p>
<div align="justify"><span id="more-1116"></span></div>
<p align="justify">As provas seguem o mesmo padrão adotado para as demais provas da Microsoft, que é o retorno da nomenclatura Microsoft Certified Solutions Expert (MCSE). Essa nomenclatura já foi utilizado a algumas gerações atrás das certificações, mas sofreu uma enorme alteração nos requisitos para ter o nível professional da carreira SharePoint 2013: passou a exigir a certificação MCSA em Windows Server, esse assunto será tratado no tópico MCSE: SharePoint mais abaixo.</p>
<p align="justify">A data estimada da publicação das provas é dia 05 de fevereiro de 2013, mas antes disso estará disponível as provas betas, que ainda não tem informação de data.</p>
<p align="justify">As provas de desenvolvimento ainda não estão disponíveis, mas assim que estiverem, publicarei aqui.</p>
<p align="justify">As provas de infra agora estão divididas em Core e Advanced e englobam outros assuntos relacionados ao SharePoint e não apenas o SharePoint. Vejam abaixo:</p>
<p align="justify">&#160;</p>
<p><strong><font size="3"><a href="http://www.microsoft.com/learning/en/us/certification/cert-sharepoint-server.aspx">MCSE: SharePoint</a></font></strong></p>
<p align="justify">Foi uma grande surpresa ver que os requisitos da certificação professional foram alterados, agora ficou muito mais trabalhoso ter esse nível de certificação. Isso porque foi adicionado o requisito da carreira MCSA: Windows Server 2012. O que na minha opinião faz total sentido. Como administrador de SharePoint é comum precisar de conhecimentos avançados de Windows Server, mas como não era obrigatório, acabava ficando em segundo ou terceiro plano. Agora para ser especialista de infra de SharePoint, o profissional vai conhecer profundamente a infra estrutura do Windows Server, além da de SharePoint. Mais difícil, mas muito mais valoroso. Isso implicará diretamente nos esforços das empresas em conseguir as competências Gold, que <em>imagino, </em>irão cobrar o MCSE, mas irá aumentar em mais ainda o respeito e confiança em quem é Gold.</p>
<p align="justify">A imagem 01 mostra o caminho para a obtenção do MCSE SharePoint.</p>
<p><a href="http://fgehrke.files.wordpress.com/2012/10/mcse-sharepoint.png"><img title="mcse sharepoint" border="0" alt="mcse sharepoint" src="http://fgehrke.files.wordpress.com/2012/10/mcse-sharepoint_thumb.png?w=600&#038;h=118" width="600" height="118" /></a></p>
<p align="center"><em>Imagem 01: Caminho da certificação MCSE SharePoint</em></p>
<p align="justify">&#160;</p>
<p align="justify"><font size="3"><strong><a href="http://www.microsoft.com/learning/pt/br/exam.aspx?ID=70-331">70-331: Core Solutions of Microsoft SharePoint Server 2013</a></strong></font></p>
<p align="justify">Esta prova é o <em>upgrade</em> da prova <a href="http://www.microsoft.com/learning/pt/br/exam.aspx?ID=70-667">70-667: TS – Microsoft SharePoint 2010, Configuring</a> para o Sharepoint 2013. Possui tópicos diferentes, mas acredito que será muito parecida com ela, só esperando as betas para ter certeza.</p>
<p align="justify">Os tópicos principais desta prova são:</p>
<ul>
<li>
<div align="justify"><strong>Desing a SharePoint Topology:</strong> design da arquitetura da informação, design da arquitetura lógica, desing da arquitetura física e planejamento do SharePoint Online;</div>
</li>
<li>
<div align="justify"><strong>Plan Security:</strong> planejamento e configuração da autenticação, planejamento e configuração da autorização, planejamento e configuração da plataforma de segurança e planejamento e configuração do nível de segurança da farm;</div>
</li>
<li>
<div align="justify"><strong>Install e Configure SharePoint Farms:</strong> planejamento da instalação, planejamento e configuração da farm, criação e configuração da busca, criação e configuração do serviço de metadados gerenciados, criação e configuração do serviço de sincronição de usuários;</div>
</li>
<li>
<div align="justify"><strong>Create and Configure Web Applications and Site Collections:</strong> provisionamento e configuração de aplicações web, criação e manutenção de coleções de sites, gerenciamento da segurança de sites e coleções de sites, gerenciamento da busca, gerenciamento da taxonomia;</div>
</li>
<li>
<div align="justify"><strong>Maintaing Core SharePoint Environment:</strong> monitoração do ambiente SharePoint, tunando e otimizando o ambiente SharePoint, solucionando problemas do ambiente SharePoint.</div>
</li>
</ul>
<p align="justify">&#160;</p>
<p align="justify"><a href="http://www.microsoft.com/learning/pt/br/exam.aspx?ID=70-332"><font size="3"><strong>70-332: Advanced Solutions of Microsoft SharePoint Server 2013</strong></font></a></p>
<p align="justify">Esta prova é o <em>upgrade</em> da prova <a href="http://www.microsoft.com/learning/pt/br/exam.aspx?ID=70-668">70-668: PRO – Microsoft SharePoint 2010, Administrator</a>, possui tópicos e alguns assuntos mais abrangentes, mas deve seguir a mesma linha.</p>
<p align="justify">Os tópicos principais desta prova são:</p>
<ul>
<li>
<div align="justify"><strong>Plan Business Continuity Management:</strong> planejamento de alta disponibilidade com SQL e recuperação de desastres, planejamento de alta disponibilidade do SharePoint, planejamento de backup e restore;</div>
</li>
<li>
<div align="justify"><strong>Plan SharePoint Environment:</strong> planejamento da workload social, planejamento e configuração da workload de busca, planejamento e configuração da workload de gerenciamento de conteúdo web (WCM), planejamento da workload de gerenciamento de conteúdo corporativo (ECM);</div>
</li>
<li>
<div align="justify"><strong>Upgrade and Migrate a SharePoint Environment:</strong> avaliar o conteúdo e customizações, planejamento do processo de upgrade, upgrade de coleções de sites;</div>
</li>
<li>
<div align="justify"><strong>Create and Configura Service Applications:</strong> criando e configurando o gerenciamento de aplicativos (Apps), criando e configurando serviços de produtividade, configurando serviço de aplicativo de federação, criando e configurando BCS e Secure Store Application;</div>
</li>
<li>
<div align="justify"><strong>Manage SharePoint Solutions, BI, and System Integration:</strong> gerenciamento de soluções e aplicações SharePoint, planejamento e configuração da infraestrutura de BI, criando e configurando gerenciamento de trabalho (tarefas).</div>
</li>
</ul>
<p align="justify"><em></em>&#160;</p>
<p align="justify"><strong><font size="3"><a href="http://www.microsoft.com/learning/en/us/certification/cert-sharepoint-server.aspx">MCSD: SharePoint</a></font></strong></p>
<p align="justify">As certificações de desenvolvimento do SharePoint 2013 também tiveram bastante mudanças evolutivas. Os requisitos agora existem e a princípio são duas provas de desenvolvimento, a <a href="http://www.microsoft.com/learning/en/us/exam.aspx?id=70-480">70-480: Programming in HTML5 with JavaScript and CSS3</a> e outra que ainda não foi divulgada. Com isso, para receber o título Microsoft Certified Solutions Developer SharePoint, é necessário fazer as duas provas de desenvolvimento e as provas de desenvolvimento do SharePoint 2013 70-488 e 70-489, que podem ser vistas nos tópicos abaixo.</p>
<p align="justify">Seguindo a mesma linha das provas de infra, o desenvolvimento para SharePoint vem cobrando mais coisas básicas (desenvolvimento “normal”) e com isso, mostra também uma maior abertura nas customizações. Com os recursos de apps, o SharePoint 2013 está muito mais natural para ser customizado por desenvolvedores ASP.NET ou qualquer tecnologia. Com os serviços REST qualquer desenvolvedor de qualquer tecnologia que suporte REST, pode interagir com os dados do SharePoint. Além disso, como o padrão dos apps é html, javascript e css, a curva de aprendizado de qualquer desenvolvedor web é bem menor.</p>
<p align="justify">Na minha opinião, mais um ponto positivo para as certificações de SharePoint 2013;</p>
<p align="justify">&#160;</p>
<p align="justify"><font size="3"><strong><a href="http://www.microsoft.com/learning/en/us/exam.aspx?id=70-488">70-488: Developing Microsoft SharePoint Server 2013 Core Solutions</a></strong></font></p>
<p align="justify">Com a quantidade de novidades em desenvolvimento do SharePoint 2013, não me arrisco a dizer que está prova é a evolução da <a href="http://www.microsoft.com/learning/en/us/exam.aspx?id=70-573">70-573</a> do SharePoint 2010. Mas, não deixa de ser um upgrade, só que com mais conteúdo novo.</p>
<p align="justify">Os tópicos desta prova são:</p>
<ul>
<li>
<div align="justify"><strong>Plan and Design SharePoint Sites</strong>: manage the site life cycle, create content types, manage content type behaviors, implement site provisioning;</div>
</li>
<li>
<div align="justify"><strong>Implement Authorization and Authentication</strong>: implement user authentication, implement application authentication and authorization, plan and implement user authorization;</div>
</li>
<li>
<div align="justify"><strong>Access and Manage Data</strong>: design solutions to handle large amounts of data, access data contained in SharePoint, store configuration data;</div>
</li>
<li>
<div align="justify"><strong>Implement SharePoint Solutions</strong>: Manage SharePoint Object Life Cycle, Upgrade solutions and features, Determine a solution structure, Create sandbox solutions, Create a no-code solution;</div>
</li>
<li>
<div align="justify"><strong>Implement the User Experience and Information Architecture</strong>: Implement branding, Implement navigation, Customize UI elements;</div>
</li>
<li>
<div align="justify"><strong>Create Business Processes</strong>: Create event receivers and timer jobs, Create SharePoint Designer workflows, Create and deploy Microsoft Visual Studio workflows;</div>
</li>
<li>
<div align="justify"><strong>Create Office Apps</strong>: Plan and design applications, Create applications, Package and deploy Apps, Manage the App life cycle.</div>
</li>
</ul>
<p align="justify"><strong><font size="3"></font></strong>&#160;</p>
<p align="justify"><font size="3"><strong><a href="http://www.microsoft.com/learning/en/us/exam.aspx?id=70-489">70-489: Developing Microsoft SharePoint Server 2013 Advanced Solutions</a></strong></font></p>
<p align="justify">Esta prova é algo como a evolução da prova <a href="http://www.microsoft.com/learning/en/us/exam.aspx?id=70-576">70-576</a> do SharePoint 2010.</p>
<p align="justify">Os tópicos desta prova são:</p>
<ul>
<li>
<div align="justify"><strong>Design and Implement Search</strong>: Query Search, Customize search results, Customize content processing.</div>
</li>
<li>
<div align="justify"><strong>Implement&#160; BCS (Business Connectivity Services)</strong>: Create a model, Create external content types,&#160; Implement authorization and authentication, Create custom connectors, Access BCS data, Implement client-side BCS.</div>
</li>
<li>
<div align="justify"><strong>Implement User Profiles and Customize Social Workload</strong>: Manage user profile properties, Manage feeds, Access user profile data.</div>
</li>
<li>
<div align="justify"><strong>Implement ECM (Enterprise Content Management) and WCM (Web Content Management)</strong>: Implement a multi-lingual site, Implement E-discovery, Implement SEO (Search Engine Optimization), Implement content management, Implement a publishing page.</div>
</li>
<li>
<div align="justify"><strong>Design for Performance and Troubleshooting</strong>: Design solutions to handle a high-traffic site, Design client applications for performance, Monitor and mitigate performance and scalability issues. </div>
</li>
<li>
<div align="justify"><strong>Implement Managed Metadata Service (MMS)</strong>: Manage term sets, Create solutions by using MMS, Use an MMS API.</div>
</li>
</ul>
<p align="justify">&#160;</p>
<p align="justify"><font size="3"><strong>Referências</strong></font></p>
<p align="justify"><a href="http://hezequiasvasconcelos.blogspot.com.br/2012/09/sharepoint-2013-certificacoes-microsoft.html">Hezequias Vanconcelos: SharePoint 2013 – Certificações Microsoft</a></p>
<p align="justify"><a href="http://social.technet.microsoft.com/Forums/en-US/sharepointadminlegacy/thread/c1f7db18-42ed-4c7f-a483-5d72e218145c">SharePoint 2013 Certification Overview</a></p>
<p align="justify">&#160;</p>
<p align="justify"><em>Atualizado em 19/10/2012 com informações sobre a certificação MCSE SharePoint.</em></p>
<p align="justify"><em>Atualizado em 04/04/2013 com informações sobre a certificação MCSD SharePoint.</em></p>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/fgehrke.wordpress.com/1116/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/fgehrke.wordpress.com/1116/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=fabiangehrke.com.br&#038;blog=16172465&#038;post=1116&#038;subd=fgehrke&#038;ref=&#038;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://fabiangehrke.com.br/2013/04/05/certificaes-do-sharepoint-2013/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
	
		<media:content url="http://1.gravatar.com/avatar/43a149af1253deaba3d17779f3ff640a?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">fgehrke</media:title>
		</media:content>

		<media:content url="http://fgehrke.files.wordpress.com/2012/10/mcse-sharepoint_thumb.png" medium="image">
			<media:title type="html">mcse sharepoint</media:title>
		</media:content>
	</item>
		<item>
		<title>Os Workflows do SharePoint 2013 Sumiram!</title>
		<link>http://fabiangehrke.com.br/2013/04/04/os-workflows-do-sharepoint-2013-sumiram/</link>
		<comments>http://fabiangehrke.com.br/2013/04/04/os-workflows-do-sharepoint-2013-sumiram/#comments</comments>
		<pubDate>Fri, 05 Apr 2013 02:50:00 +0000</pubDate>
		<dc:creator>Fabian André Gehrke</dc:creator>
				<category><![CDATA[Dicas]]></category>
		<category><![CDATA[SharePoint 2013]]></category>
		<category><![CDATA[Workflows]]></category>

		<guid isPermaLink="false">https://fgehrke.wordpress.com/?p=1582</guid>
		<description><![CDATA[Imagine você receber um email do usuário falando: “Os usuários estão adicionando os documentos no portal mas não estão recebendo as tarefas de aprovação deles”. Então você abre o SharePoint e analisa o que está acontecendo, e constata que realmente o workflow não foi executado. Você abre o SharePoint Designer 2013 e verifica as configurações [&#8230;]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=fabiangehrke.com.br&#038;blog=16172465&#038;post=1582&#038;subd=fgehrke&#038;ref=&#038;feed=1" width="1" height="1" />]]></description>
				<content:encoded><![CDATA[<p align="justify">Imagine você receber um email do usuário falando: “Os usuários estão adicionando os documentos no portal mas não estão recebendo as tarefas de aprovação deles”. Então você abre o SharePoint e analisa o que está acontecendo, e constata que realmente o workflow não foi executado. Você abre o SharePoint Designer 2013 e verifica as configurações do seu workflow mas, ao abrir a seção de workflows do SharePoint Designer, você só vê workflows feitos com o engine 2010.</p>
<p align="justify">A primeira coisa que vem à sua cabeça é um monte de palavrão e começa a pensar quem foi a pessoa que exclui os workflows. Pensa se tem backup e como irá justificar para o seu chefe ou outras pessoas como que o workflow sumiu. Cadê os logs? O backup vai funcionar? Quem foi que apagou? Em quem vou colocar a culpa (menos né, essa já é demais).</p>
<p align="justify">Neste post vamos discutir algumas coisas que podem ocasionar este comportamento, veremos que provavelmente não será por exclusão e sim por outros motivos.</p>
<p><span id="more-1582"></span>
<p align="justify">Como já vimos em outros posts <a href="http://fabiangehrke.com.br/category/workflows/">neste blog</a>, o SharePoint 2013 possui um novo engine de workflow, que roda de forma isolada ao SharePoint. Quando uso o termo “forma isolada” quero dizer em uma estrutura separada e não mais “dentro” do SharePoint. Este conceito muda muita coisa sobre a forma com que os administradores vão interagir e configurar com esses serviços.</p>
<p align="justify">Com base nisso, se tivermos problemas com o serviço de workflow, muito provavelmente os workflows não irão aparecer no SharePoint Designer e nem no site SharePoint. Dependendo do problema.</p>
<p align="justify">Então, se os workflows não tiverem aparecendo, o primeiro passo é verificar se o serviço está configurado adequadamente. Para isso, existem um artigo muito útil chamado <a href="http://technet.microsoft.com/en-us/library/jj193529.aspx">Troubleshooting Workflow Manager 1.0 Management and Execution</a>.</p>
<p align="justify">Outra dica que pode ser útil é verificar se o service application do workflow está associado ao web application. Caso você tenha mais de um service group, isso se torna muito relevante e pode lhe economizar muito tempo e dor de cabeça.</p>
<p align="justify">As principais dicas eram essas, espero que ajudem você a ganhar algum tempo e evitar dores de cabeças.</p>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/fgehrke.wordpress.com/1582/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/fgehrke.wordpress.com/1582/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=fabiangehrke.com.br&#038;blog=16172465&#038;post=1582&#038;subd=fgehrke&#038;ref=&#038;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://fabiangehrke.com.br/2013/04/04/os-workflows-do-sharepoint-2013-sumiram/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
	
		<media:content url="http://1.gravatar.com/avatar/43a149af1253deaba3d17779f3ff640a?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">fgehrke</media:title>
		</media:content>
	</item>
		<item>
		<title>Novo Layout</title>
		<link>http://fabiangehrke.com.br/2013/03/06/novo-layout/</link>
		<comments>http://fabiangehrke.com.br/2013/03/06/novo-layout/#comments</comments>
		<pubDate>Wed, 06 Mar 2013 19:50:35 +0000</pubDate>
		<dc:creator>Fabian André Gehrke</dc:creator>
				<category><![CDATA[Novidades]]></category>

		<guid isPermaLink="false">https://fgehrke.wordpress.com/?p=1574</guid>
		<description><![CDATA[Com o objetivo de melhorar o espaço útil do conteúdo, estou mudando template aplicado neste blog. Agora terei mais espaço para imagens maiores e código menos quebrado. Se alguém tiver uma sugestão de tema mais flexível, por favor me avise.<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=fabiangehrke.com.br&#038;blog=16172465&#038;post=1574&#038;subd=fgehrke&#038;ref=&#038;feed=1" width="1" height="1" />]]></description>
				<content:encoded><![CDATA[<p align="justify"><font size="2">Com o objetivo de melhorar o espaço útil do conteúdo, estou mudando template aplicado neste blog. Agora terei mais espaço para imagens maiores e código menos quebrado. Se alguém tiver uma sugestão de tema mais flexível, por favor me avise.</font></p>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/fgehrke.wordpress.com/1574/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/fgehrke.wordpress.com/1574/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=fabiangehrke.com.br&#038;blog=16172465&#038;post=1574&#038;subd=fgehrke&#038;ref=&#038;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://fabiangehrke.com.br/2013/03/06/novo-layout/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
	
		<media:content url="http://1.gravatar.com/avatar/43a149af1253deaba3d17779f3ff640a?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">fgehrke</media:title>
		</media:content>
	</item>
		<item>
		<title>Utilizando o SPSecurity.RunWithElevatedPrivileges</title>
		<link>http://fabiangehrke.com.br/2013/02/04/utilizando-o-spsecurity-runwithelevatedprivileges/</link>
		<comments>http://fabiangehrke.com.br/2013/02/04/utilizando-o-spsecurity-runwithelevatedprivileges/#comments</comments>
		<pubDate>Mon, 04 Feb 2013 23:20:00 +0000</pubDate>
		<dc:creator>Fabian André Gehrke</dc:creator>
				<category><![CDATA[Desenvolvimento]]></category>
		<category><![CDATA[SharePoint]]></category>
		<category><![CDATA[SharePoint 2010]]></category>
		<category><![CDATA[SharePoint 2013]]></category>
		<category><![CDATA[SharePointers]]></category>

		<guid isPermaLink="false">https://fgehrke.wordpress.com/?p=1547</guid>
		<description><![CDATA[Imagine o seguinte cenário: os usuários do site SharePoint utilizam uma web part customizada para trabalhar com os dados de uma lista, mas se eles tentarem alterar os dados pela interface do SharePoint, ao invés dessa web part, o SharePoint não pode deixar eles fazerem essas alterações. Uma forma simples de resolver isso é tirar [&#8230;]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=fabiangehrke.com.br&#038;blog=16172465&#038;post=1547&#038;subd=fgehrke&#038;ref=&#038;feed=1" width="1" height="1" />]]></description>
				<content:encoded><![CDATA[<p align="justify">Imagine o seguinte cenário: os usuários do site SharePoint utilizam uma web part customizada para trabalhar com os dados de uma lista, mas se eles tentarem alterar os dados pela interface do SharePoint, ao invés dessa web part, o SharePoint não pode deixar eles fazerem essas alterações. Uma forma simples de resolver isso é tirar o acesso de colaboração desta lista para todos os usuários e fazer toda a interação da lista pela web part. Mas se o usuário não tem acesso, a web part não irá dar mensagem de acesso negado?</p>
<p align="justify">Outro cenário: a lista possui um event receiver que altera as permissões do item e, se necessário, cria um grupo de usuários no site SharePoint. Dificilmente os usuários comuns terão acesso no site para a criação de grupos.</p>
<p align="justify">Neste post vamos discutir esses pontos e ver como resolvê-los.</p>
<p><span id="more-1547"></span>
<p align="justify">Os cenários acima são diferentes, mas caem no mesmo ponto: os componentes como web parts, event receiver e alguns outros são executados com a identidade do usuário logado no site, ou seja, se o usuário atual não tem permissão de editar um item de lista ou criar um grupo de usuários, essa permissão será respeitada.</p>
<p align="justify">Mas se eu precisar realmente fazer isso, não tem como? Tem sim, para isso temos o método RunWithElevatedPrivileges que permite que o código seja executado com privilégios de controle total dentro do site, o que resolveria os problemas apresentados nos cenários anteriores.</p>
<p align="justify">Isso não seria uma falta de segurança, permitir que o usuário tenha essa permissão total via componentes de desenvolvimento? Depende da governança existente, se qualquer um poder subir componente é sim, senão não. Por que é a melhor forma de resolver este problema.</p>
<p align="justify">A sintaxe básica para utilizar o SPSecurity.RunWithElevatedPrivileges está descrita na listagem 01. Repare que é necessário criar um delegate e colocar todo o código que será executado com privilégio elevado dentro dele, o que pode ser chamada de métodos.</p>
<blockquote style="height:101px;width:573px;"><p><font face="Courier New">SPSecurity.RunWithElevatedPrivileges(delegate ()<br />{<br />&nbsp;&nbsp; // implementation details ommited<br />}</font></p>
</blockquote>
<p align="center"><em>Listagem 01: Forma de execução do RunWithElevatedPrivileges</em></p>
<p align="justify">&nbsp;</p>
<p align="justify">É comum utilizar os objetos SPSite e SPWeb do contexto, através do SPContext, mas neste cenário não se deve utilizar o contexto. Isso porque o contexto está com a identidade do usuário logado no site SharePoint, mas não é isso que queremos, sendo assim é necessário criar um novos objetos SPSite e SPWeb, como mostra a listagem 02, que está pegando o ID do site e lista a partir de um objeto SPListItem.</p>
<blockquote style="height:231px;width:583px;"><p><font face="Courier New">SPSecurity.RunWithElevatedPrivileges(delegate ()<br />{<br />&nbsp;&nbsp; using (SPSite site = new SPSite(listItem.Web.Site.ID))<br />&nbsp;&nbsp; {<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; using (SPWeb web = site.OpenWeb(listItem.Web.ID))<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; {<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; // implementation details omitted<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }<br />&nbsp;&nbsp; }<br />}</font></p>
</blockquote>
<p align="center"><em>Listagem 02: Criando objetos SPSite e SPWeb</em></p>
<p>&nbsp;</p>
<p align="justify">Com o uso do SPSecurity.RunWithElevatedPrivileges conseguimos executar código que necessita de permissão elevada dentro do conteúdo do SharePoint, sem que o usuário logado tenha os níveis de permissão necessários.</p>
<p>&nbsp;</p>
<p><strong><font size="3">Referências:</font></strong></p>
<ul>
<li><a title="http://msdn.microsoft.com/en-us/library/microsoft.sharepoint.spsecurity.runwithelevatedprivileges.aspx" href="http://msdn.microsoft.com/en-us/library/microsoft.sharepoint.spsecurity.runwithelevatedprivileges.aspx">SPSecurity.RunWithElevatedPrivileges method</a> </li>
</ul>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/fgehrke.wordpress.com/1547/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/fgehrke.wordpress.com/1547/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=fabiangehrke.com.br&#038;blog=16172465&#038;post=1547&#038;subd=fgehrke&#038;ref=&#038;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://fabiangehrke.com.br/2013/02/04/utilizando-o-spsecurity-runwithelevatedprivileges/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
	
		<media:content url="http://1.gravatar.com/avatar/43a149af1253deaba3d17779f3ff640a?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">fgehrke</media:title>
		</media:content>
	</item>
	</channel>
</rss>
