Archive

Posts Tagged ‘SharePoint Online’

Como buscar informações de status do Workflow no SharePoint Online (365)

November 28, 2018 Leave a comment

CENÁRIO:

Olá!

Nas versões antigas (on-premises) do SharePoint Server é bem fácil obter o status do workflow bastando apenas adicionar uma coluna na view que contém o nome do Workflow.

Entretanto, no SharePoint Online (365) é um pouco diferente. Ainda temos a coluna do workflow (WorkflowColumnStatus), mas ela fica “em branco”. Como fazer para verificar, programaticamente, o status do workflow que foi desenvolvido dentro de um SharePoint Add-in?

ERRO:

Colunas em branco:

wfkcolumn

SOLUÇÃO:

Utilizando o SharePoint CSOM ou JSOM (Javascript Object Model) é possível instanciar o WorkflowServicesManager e obter as informações do workflow.

wfkmanageinstance

Em texto:

var workflowServicesManager = new WorkflowServicesManager(ctx, ctx.Web);

 

// connect to the instance service

var workflowInstanceService = workflowServicesManager.GetWorkflowInstanceService();

 

// get all instances

var workflowInstances = workflowInstanceService.EnumerateInstancesForListItem(listId, itemId);

ctx.Load(workflowInstances, i => i.Include(f => f.Id, f => f.LastUpdated, f => f.Status));

ctx.ExecuteQuery();

foreach (var instance in workflowInstances)

{

try

{

if (instance.Status.ToString() != “Completed”)

{

Console.WriteLine(“{0} – {1} – {2}”,

instance.Id.ToString(),

instance.LastUpdated,

instance.Status.ToString());

 

}

}

catch (Exception ex)

{

_telemetry.TrackException(ex);

}

}

. J

Abraço!

 

Advertisements

Could not load file or assembly Microsoft.VisualStudio.Shell.15.0

January 11, 2018 Leave a comment

CENÁRIO:

Montando o pipeline de Build e Release automático de um projeto SharePoint Add-in (SharePoint App – SharePoint Online 365) descobri que não tem um template de tarefa de build no Visual Studio Online (VSTS).

Então, parti para construir a tarefa de build vazia (Empty) onde colocamos os comandos para realizar o build.

Eis que ao tentar dar build usando o msbuild.exe me deparo com um erro bem estranho.

ERRO:

“C:\Program Files (x86)\Microsoft Visual Studio\2017\Enterprise\MSBuild\Microsoft\VisualStudio\v15.0\SharePointTools\Microsoft.VisualStudio.SharePoint.targets(395,5): Error : Could not load file or assembly ‘Microsoft.VisualStudio.Shell.15.0, Version=15.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a’ or one of its dependencies. The system cannot find the file specified.”

SOLUÇÃO:

Depois de algumas (muitas) pesquisas descobri que é necessário adicionar referências no projeto para fazer o build com sucesso. Passos para resolver:

  1. Adicionar um arquivo “Microsoft.VisualStudio.SharePoint.AddAssemblySearchPaths.targets” na raiz do seu projeto (conteúdo do arquivo mais abaixo)
  2. Adicionar “<Import Project=”Microsoft.VisualStudio.SharePoint.AddAssemblySearchPaths.targets” />” no arquivo .csproj para importar o arquivo adicionado.
  3. Pronto, agora é build com sucesso! 😉

Conteúdo do arquivo “Microsoft.VisualStudio.SharePoint.AddAssemblySearchPaths.targets”:

<Project xmlns=’http://schemas.microsoft.com/developer/msbuild/2003&#8242; >

  <UsingTask TaskName=”AddAssemblySearchPath” TaskFactory=”CodeTaskFactory” AssemblyFile=”$(MSBuildToolsPath)\Microsoft.Build.Tasks.Core.dll”>

    <ParameterGroup>

      <SearchPath ParameterType=”System.String” Required=”true” />

    </ParameterGroup>

    <Task>

      <Using Namespace=”System” />

      <Using Namespace=”System.IO” />

      <Using Namespace=”System.Reflection” />

      <Code Type=”Fragment” Language=”cs”>

        <![CDATA[

AppDomain.CurrentDomain.AssemblyResolve += (sender, e) =>

{

  string assemblySearchPath = Path.Combine(SearchPath, e.Name.Split(‘,’)[0] + “.dll”);

  if (File.Exists(assemblySearchPath)) return Assembly.LoadFrom(assemblySearchPath);

  return null;

};

]]>

      </Code>

    </Task>

  </UsingTask>

  <Target Name=”addAssemblySearchPaths”>

    <AddAssemblySearchPath SearchPath=”$(MSBuildExtensionsPath)\..\Common7\IDE\PrivateAssemblies\” />

    <AddAssemblySearchPath SearchPath=”$(MSBuildExtensionsPath)\..\Common7\IDE\PublicAssemblies\” />

  </Target>

</Project>

Também adicionei o arquivo para download aqui: https://1drv.ms/u/s!Ass2zQvJNjQNguMdQGn53ziBBweFBg

Para resolver essa zica, contei com a ajuda do super http://diegomarques.azurewebsites.net/.

Abraço!