terça-feira, 27 de setembro de 2011

Ocultar Section no InfoPath 2010

Explicarei aqui como ocultar um section (seção) de controles do InfoPath 2010 através do preenchimento de outro item do formulário.

Começo criando um modelo de formulário em branco e então os campos necessários.


Após criar todos os campos e seções, devemos agora criar a regra para que a seção seja exibida ou não.
No exemplo criado, a seção será exibida somente se o Estado Civil for Casado, caso contrário, não deverá apresentar a seção contendo o nome do cônjuge.
Para isso, clique em Manage Rules.


Aparecerá uma aba à sua direta, agora selecione a seção.
Adicione uma nova regra do tipo Formatting, você poderá informar um nome qualquer para a regra.
Em seguida clique em None abaixo de Condition e faça a condição como a imagem abaixo.


Pressione OK, ainda na regra selecione “Hide this control”, pois assim ele ocultará o controle quando a regra for satisfeita, ou seja, quando o estado civil não for “Casado(a)”.
Agora pressione F5 para testar a regra criada.

segunda-feira, 26 de setembro de 2011

Lista de Indicadores de Status no SharePoint 2010


Um indicador de status nada mais é que um relatório visível em uma linha. De maneira simples e direta, o indicador retorna 3 estados relativos a regra informada através de símbolos, sendo assim mais rápida sua visualização e entendimento.
Explicarei aqui como criar uma lista de indicadores de status no SharePoint 2010 utilizando como fonte de dados uma lista do SharePoint.
Para este exemplo criei uma lista de alunos com suas respectivas notas e frequências.





Após ter criado a lista, devemos criar a Lista de Status, localizada em Listas na categoria Acompanhamento.


Agora acesse sua lista, para adicionar um novo indicador, clique em Novo e Indicador de Status baseado em Lista do SharePoint.



Aparecerá uma tela onde você deverá informar um nome (obrigatório).
Após essas informações, seguimos para a regra que atuará no indicador.
Nesse exemplo, criei a regra de maneira a estabelecer uma meta para a média das notas de todos os alunos da lista para que seja possível analisar o situação do conjunto de alunos, como um todo.
Informei uma valor de aviso 60, e um valor de meta 75.
Caso contrário, se o valor for mais baixo, ele será indicado com um símbolo vermelho.


Após criar o indicador, temos a visualização do mesmo como item de uma lista com o nome do Indicador, Meta, Valor encontrado, Status com o símbolo referente á definição criada na regra.




Em nosso exemplo obtivemos o valor 63,83 e segundo nossa regra, este valor já está com o símbolo de aviso pois está entre 60 e 75.
Podemos analisar que o grupo de alunos está razoavelmente bom simplesmente ao ver o símbolo que indica seu Status.



Criação de Workflows no Visio para SharePoint Server 2010 com SharePoint Designer

Neste post explicarei como exportar Wworkflows criados no Visio 2010 para utilização em seus sites do SharePoint Server 2010 utilizando SharePoint Designer.
Começamos escolhendo o modelo de “Fluxo de Trabalho do Microsoft SharePoint” para a criação do workflow no Visio 2010.



Com o modelo escolhido, você terá diversas formas para criar seu workflow. Neste post criarei um simples workflow, pois o objetivo é a integração Visio - SharePoint Server. Para isso adicionei a ação de “Start”, “Processo de aprovação” e por último o “Stop” que define o fim do fluxo, conectando as formas como mostrado abaixo:


Com o seu fluxo criado, você deve ir até a aba “Processo” e em seguida pressionar o botão “Exportar”.


Agora com o seu workflow exportado, você deve abrir o SharePoint Designer 2010 para fazer a importação para o seu site.
No SharePoint Designer, clique em Workflows onde você terá todos os workflows existentes em seu site e selecione “Import from Visio”.




Selecione agora o arquivo exportado do Visio e pressione “Next”.


Na tela seguinte, você definirá o nome do workflow e também qual lista o seu workflow utilizará.



Pressione “Finish” , você terá que salvar seu workflow no SharePoint Designer e após salvar em seu site.
Com isso você terá o seu workflow criado no Visio 2010 importado para o SharePoint Server 2010.



Criação de Custom Timer Jobs no SharePoint Server 2010

Neste post mostrarei como criar Timer Jobs customizados no SharePoint 2010, ou seja, Timer Jobs que executam linhas de código da maneira como quisermos.

Bom, para isso você deve criar um projeto vazio de SharePoint 2010 ("Empty SharePoint Project").






Com o projeto criado, você deve criar agora uma classe que irá ser consumida pelo Timer Job, para isso basta fazer com que sua classe herde de SPJobDefinition.Veja o código do nosso exemplo:

namespace NameSpace

{
class TimerJobClass : SPJobDefinition
{
public TimerJobClass(): base()


{
}
public TimerJobClass(string jobName, SPService service, SPServer server, SPJobLockType targetType): base(jobName, service, server, targetType)
{}

public TimerJobClass(string jobName, SPWebApplication webApplication): base(jobName, webApplication, null, SPJobLockType.ContentDatabase)
{
this.Title = "My Custom Timer Job";
}

public override void Execute(Guid contentDbId)
{
//AQUI VOCÊ INSERE TODO O CÓDIGO QUE SEU TIMER JOB EXECUTARÁ NO TEMPO

PLANEJADO
}
}
}
Após criar a classe você deve adicionar uma Feature:




E após adicionar também um Feature Event Receiver, que terá os métodos quando nossa feature for ativada e também desativada.




Agora você deve inserir o código necessário para ativar e desativar o Timer Job.

namespace NameSpace.Features.Feature1
{
[Guid("9a724fdb-e423-4232-9626-0cffc53fb74b")]
public class Feature1EventReceiver : SPFeatureReceiver
{
const string List_JOB_NAME = "My Custom Timer Job";

public override void FeatureActivated(SPFeatureReceiverProperties properties){
SPSite site = properties.Feature.Parent as SPSite;

foreach (SPJobDefinition job in site.WebApplication.JobDefinitions)
{
if (job.Name == List_JOB_NAME)
job.Delete();
}

TimerJobClass timerjob = new TimerJobClass(List_JOB_NAME, site.WebApplication);
SPMinuteSchedule schedule = new SPMinuteSchedule();
schedule.BeginSecond = 0;schedule.EndSecond = 59;
schedule.Interval = 5;
timerjob.Schedule = schedule;
timerjob.Update();
}

public override void FeatureDeactivating(SPFeatureReceiverProperties properties)
{
SPSite site = properties.Feature.Parent as SPSite;
foreach (SPJobDefinition job in site.WebApplication.JobDefinitions)
{
if (job.Name == List_JOB_NAME)
job.Delete();}
}

}
}

Caso seu projeto esteja dando o seguinte erro:

"Error ocurred in deployment step 'Activate Features': Object reference not set to na instance of na object"


Mude o "Scope" da feature para "Site":

Agora você já poderá fazer o deploy de sua solução.

Para ver seu Timer Job criado, basta ir em Central Administration -> Monitoring -> Review job definitions.







Detectar dispostivos Bluetooth em .NET


Neste post veremos como detectar dispostivos bluetooth através do C# utilizando um projeto WPF do Visual Studio 2008.
Criarei aqui um projeto WPF no Visual Studio 2008 onde será possível detectar dispositivos bluetooth.


Primeiro você deve baixar o arquivo que está no link abaixo:
Após baixar e instalar o aplicativo acima, você deve criar seu projeto e assim adicionar como referência:
Na aba “.NET”, escolha “InTheHand.Net.Personal”.
Crie uma classe chamada Dispositivo, com o seguinte código.
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using InTheHand.Net.Sockets;
namespace BluetoothClient
{
public class Dispositivo
{
public string NomeDoDispositivo { get; set; }
public uint Sap { get; set; }
public Dispositivo(BluetoothDeviceInfo dispositivo_info)
{
this.NomeDoDispositivo = dispositivo_info.DeviceName;
this.Sap = dispositivo_info.DeviceAddress.Sap;
}
public override string ToString()
{
return this.NomeDoDispositivo;
}
}
}
Esta classe cria dois atributos: NomeDoDispositivo e Sap sendo possível atribuir um valor à elas e/ou pegar este valor.
Também é criado um método que sobescreve (override) o método ToString() para retornar o nome do dispositivo.
Agora você deve criar os controles na tela.
Como este é um exemplo, não alterei os nomes dos controles, somente os adicionei.
-Button (button1)
-ListBox (listBox1)
-ProgressBar (progressBar1)


O código abaixo deve ser inserido no arquivo .cs da sua tela.
Neste código temos 4 procedimentos:
- Windows1
A função principal, a qual fará a chamada das funções.
- bg_RunWorkerCompleted
Irá inserir a lista de Dispositivos em nosso listBox ao fim do processo.
- bg_DoWork
Cria uma lista de Dispositivos a qual será “populada” com as suas informações (em nosso exemplo, NomeDoDispositivo e Sap).
- button1_Click
Este é o evento de clique do botão que irá “Buscar os dispositivos”, tornando visível a barra de progresso e chamando a função RunWorkerAsync.
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Windows;
using System.Windows.Controls;
using System.Windows.Data;
using System.Windows.Documents;
using System.Windows.Input;
using System.Windows.Media;
using System.Windows.Media.Imaging;
using System.Windows.Navigation;
using System.Windows.Shapes;
using System.ComponentModel;
namespace BluetoothClient
{
///

/// Interaction logic for Window1.xaml
///

public partial class Window1 : Window
{
BackgroundWorker bg;
public Window1()
{
InitializeComponent();
bg = new BackgroundWorker();
bg.DoWork += new DoWorkEventHandler(bg_DoWork);
bg.RunWorkerCompleted += new RunWorkerCompletedEventHandler(bg_RunWorkerCompleted);
}
void bg_RunWorkerCompleted(object sender, RunWorkerCompletedEventArgs e)
{
listBox1.ItemsSource = (List<Dispositivo>)e.Result;
progressBar1.Visibility = Visibility.Hidden;
}
void bg_DoWork(object sender, DoWorkEventArgs e)
{
List<Dispositivo> devices = new List<Dispositivo>();
InTheHand.Net.Sockets.BluetoothClient bc = newInTheHand.Net.Sockets.BluetoothClient();
InTheHand.Net.Sockets.BluetoothDeviceInfo[] array = bc.DiscoverDevices();
int count = array.Length;
for (int i = 0; i < count; i++)
{
Dispositivo device = new Dispositivo(array[i]);
devices.Add(device);
}
e.Result = devices;
}
private void button1_Click(object sender, RoutedEventArgs e)
{
if (!bg.IsBusy)
{
progressBar1.Visibility = Visibility.Visible;
bg.RunWorkerAsync();
}
}
}
}
Bom, agora você poderá compilar seu projeto (F5) e ver o resultado.
Lembrando que você deverá ter um dispositivo Bluetooth na máquina onde for executado o software, caso contrário aparecerá um erro.
Após clicar no botão, aguarde até 20 segundos para que sejam mostrados na lista os dispositivos bluetooth ativos.