Running Eclipse Helios on Windows 7 (64 bit)

Posted by Troy on July 4, 2010 under Eclipse, IT, Open Source, Web | Be the First to Comment

 

If you have installed Eclipse Helios (64-bit) on Windows 7 (64-bit), make sure the correct version of java (64-bit) is installed on the computer:

http://www.java.com/en/download/manual.jsp

If you have java installed and you get the error shown below when you try to run Eclipse chances are you have the 32-bit version of Java installed:

"Failed to load the JNI shared library "C:\Program Files(x86)…”

Thanks to this post from the Eclipse Community Forums

http://www.eclipse.org/forums/index.php?t=msg&goto=542940&#msg_542940

 

Troy

Creating an External Content Type in SharePoint 2010

Posted by Troy on July 2, 2010 under Business Intelligence, IT, Microsoft, Performance Management, SQL Server, SharePoint | Be the First to Comment

In a previous post I created a simple weekly sales forecasting table which will be used as a starting point to create an External Content Type.  Below is some sample data from the table:

image

When a External Content Type is created the data source can be a table, view, store procedures or a web services.  The External Content support various operation but you must provide functionality for the following two operations:

  • Read List
  • Read Item

These two operations must defined in order to use the External Content Type as an External List in SharePoint 2010.  For this example I am going to create two stored procedures for the operations:

  • dbo.BcsSalesForecastReadList
  • dbo.BcsSalesForecastReadItem

Before the External Content Type Operations can be created we need to create the stored procedures that will be used to read an item from the external content type and list all items in the external content type.    The Read List stored procedure for our sales forecast data is fairly simple.  The stored procedure simple needs to return all the rows and columns we want to be available in the External Content Type.  Why use a stored procedure then for this operation?   For simple lists of information a using a table or view is fine but if you want to have a high level of flexibility and control then a store procedure is probably a better choice.    A Web Service would provide even more power and platform independence but for our sales forecast application our approach will suffice.

dbo.BcsSalesForecastReadList

create procedure dbo.BcsSalesForecastReadList as set nocount on select EnglishMonthName + '-' + WeekNumber + '-' + SalesTerritoryRegion + '-' + Category ID, EnglishMonthName MonthName, WeekNumber, SalesTerritoryGroup SalesGroup, SalesTerritoryRegion SalesRegion, Category ProductCategory, LastYearAmount, ForecastAmount from dbo.WeeklySalesForecast

dbo.BcsSalesForecastReadItem

create procedure dbo.BcsSalesForecastReadItem @ID nvarchar(255) as set nocount on select fcst.ID, fcst.MonthName, fcst.WeekNumber, fcst.SalesGroup, fcst.SalesRegion, fcst.ProductCategory,  fcst.LastYearAmount, fcst.ForecastAmount from ( select EnglishMonthName + '-' + WeekNumber + '-' + SalesTerritoryRegion + '-' + Category ID, EnglishMonthName MonthName, WeekNumber, SalesTerritoryGroup SalesGroup, SalesTerritoryRegion SalesRegion, Category ProductCategory, LastYearAmount, ForecastAmount from dbo.WeeklySalesForecast) fcst where ID = @ID

For the purposes of this demo I have created a unique Business Key (ID) which concatenates (joins) the following fields:

  • EnglishMonthName
  • WeekNumber
  • SalesTerritoryRegion
  • Category

This combination uniquely identifies each row in the forecast table.   Ideally you could used an identity column or create proper indexes using the 4 columns. 

Connect to the site that was created in the last post or you can use one of your existing sites.  Open SharePoint Designer and open the following site:

image

Click on the External Content Types site object in the Navigation Pane on the right hand side.  Create a New External Content Type.  You should see the following screen:

image

Enter the following:

  • Name: BcsSalesForecast
  • Display Name: Bcs Sales Forecast

In the External Content Type Operation section click “Click here to discover external data sources and define operations” .  You should see a screen similar to this:

image

Click “Add Connection” and select the Data Source Type as SQL Server.  Enter in the following items:

  • Database Server: (server name)
  • Database Name: AdventureWorksDW2008R2
  • Name (optional): Adventure Works

For this example you can connect with the User’s Identity.  Look under the “Routines” section and you should see the stored procedures that were created above:

image

Right click on the BcsForecastReadList procedure and select “New Read List Operation”.  Keep the default settings for Operation Name and Display Name.  Below is a summary of the Read List wizard:

image image
1. Operation Properties 2. Input Parameters
image image
3. Return Parameter 4. Read List is created

Follow a similar process for the Read Item Operation.  Right-click on the BcsForecastReadItem procedure and select “New Read Item Operation”.  Below is a summary of the Read Item wizard:

image image
1. Operation Properties 2. Input Parameters
image image
3. Return Parameter 4. Read Item is created

 

You have now created your first External Content Type.  But we cannot use it yet.  In the next post I will show you how to enable security on the External Content Type and create an External List which will be displayed in the Ops Forecast site.    Below is a screen shot of the External Content Type being used as an External list:

image image
1. List View 2. View Item

 

Troy

Building BI Application’s with SharePoint 2010

Posted by Troy on July 1, 2010 under Business Intelligence, IT, Microsoft, SharePoint, Web | Be the First to Comment

 

SharePoint 2010 is an excellent Platform for creating enterprise applications that leverage your current Business Intelligence infrastructure and operational systems.  Of course your not going to build mission critical applications like POS or Supply Chain Ordering system but what about tracking weekly sales and expenses or building a pricing model that requires data from multiple data sources.    Using a combination of SharePoint 2010 and the Office 2010 products it is possible to create robust enterprise applications with a reasonable amount of effort.

Business Connectivity Services (BCS) in SharePoint 2010 and SharePoint Designer 2010 is what makes these applications possible.  Sure you could build your application using native SharePoint list but this approach is limited and does not allow you to leverage existing systems like your corporate data warehouse.    Below is a simple diagram which show how BCS allows business user’s to access external data:

image

The best way to learn about how these tools work is to work through a practical example.    Over the next few blog posts I will walk through how to create a simple sales forecasting application.   I am assuming that you have access to a desktop machine or server with at least the following software:

  • SQL Server Express 2008 R2
    • Adventure Works DW R2
  • SharePoint 2010 Foundation Server
  • SharePoint 2010 Designer

In this scenario the business users want to create a weekly forecasting model which will forecast Internet Sales by Territory by Product Category.  Execute the following to create a forecasting table in the Adventure Works DW R2 database:

select fcst.* into dbo.WeeklySalesForecast from ( select dt.CalendarYear,'Week ' + convert(nvarchar(2),dt.WeekNumberOfYear) WeekNumber , dt.MonthNumberOfYear, dt.EnglishMonthName, ter.SalesTerritoryGroup, ter.SalesTerritoryRegion, cat.EnglishProductCategoryName Category, sum(fct.OrderQuantity) LastYearQuantity, sum(fct.SalesAmount) LastYearAmount, null ForecastQuantity, null ForecastAmount from dbo.FactInternetSales fct inner join dbo.DimDate dt on fct.OrderDateKey = dt.DateKey inner join dbo.DimProduct prd on fct.ProductKey = prd.ProductKey inner join dbo.DimSalesTerritory ter on fct.SalesTerritoryKey = ter.SalesTerritoryKey inner join dbo.DimProductSubcategory sub on prd.ProductSubcategoryKey = sub.ProductSubcategoryKey inner join dbo.DimProductCategory cat on sub.ProductCategoryKey = cat.ProductCategoryKey where dt.CalendarYear = 2008 group by dt.CalendarYear,dt.WeekNumberOfYear, dt.MonthNumberOfYear, dt.EnglishMonthName, ter.SalesTerritoryGroup, ter.SalesTerritoryRegion, cat.EnglishProductCategoryName) fcst

This will create a table that can be used for building the BCS.   In this post we are going to simply create a SharePoint site using SharePoint Designer to host our SharePoint application using SharePoint Designer 2010.   Open SharePoint Designer 2010 and open the Main Site.  In my case my main site is on my laptop and can be accessed at http://localhost.  From the Site Actions menu select “New Site”:

image

 

We are now going to create a new Site called Ops Forecast (http://localhost/opsforecast) use the Team Site template:

  • Title: Ops Forecast
  • Url Name:  opsforecast

image

Now click Create and the site will be created.  In the next post we will build 2 stored procedures and create an External Content Type which will be used as a list to view the forecast data in SharePoint.

 

Troy

Error Installing the Blackberry Plug-in for Eclipse

Posted by Troy on July 13, 2009 under BlackBerry, IT, Mobile, Web | Read the First Comment

 

If you try installing the BlackBerry JDE Plug-in for Eclipse using the BlackBerry update site you will probably receive the following error:

An error occurred while collecting items to be installed Error closing the output stream for net.rim.EclipseJDE/org.eclipse.update.feature/1.0.0.67 on repository file:/C:/eclipse-SDK-3.4.1-win32/eclipse/. Error unzipping C:\DOCUME~1\scottt\LOCALS~1\Temp\net.rim.EclipseJDE_1.0.0.674162146521096327961.jar: Invalid zip file format Problems ...

 

There is a post on the BlackBerry support forum which says that the issue is related to their update site and that you need to download the plug-in:

http://na.blackberry.com/eng/developers/javaappdev/javaeclipseplug.jsp

It is also important to make sure that you have a valid version of Eclipse.  You need Ganymede 3.4 or 3.4.1.  You can download it here.  

I didn’t have much luck with the Full Installer.  I downloaded one of the component packs instead and manually added the packages to Eclipse.  When I ran the full installer the video display on my computer froze.

image

Go to Windows/Preferences once you have copied the correct files to the features and plugins folders in Eclipse.

Troy

Installing Google App Engine SDK on Windows

Posted by Troy on April 12, 2008 under Google, IT, Microsoft | Read the First Comment

Installing the Google App Engine SDK for Windows is fairly straightforward.  You can download the SDK here.   Before installing it on Windows make sure you have python 2.5 installed:

http://www.activestate.com/solutions/python/

It is a free download from ActiveState.  The Google App Engine SDK install will fail if python is not installed first.

image

By default the installer will install python in C:\Python2.5\ .  Once the install is complete double click on the Windows Installer application for the SDK (GoogleAppEngine.msi).

image

By default  it installs the SDK in :

C:\Program Files\Google\google_appengine\

But I prefer to have it installed at:

C:\google_appengine

image

After you set the directory for the SDK the installer should complete.  Now you can go to the command line and go to the google_appengine directory.

image

The SDK comes with a simple application called guestbook.  To see if your installation succeeded type the following from the google_appengine directory:

> dev_appserver demos/guestbook

You will then be prompted to check for updates on startup.  Respond “n” for the test.   If you have a firewall like Windows OneCare you may be prompted to allow python.exe to access the Internet.  Click “Allow this program”.

image

You can now access the guestbook application by going to your browser and entering:

http://localhost:8080

image

Type something in the text box and click the button to try out the guest book application.

Troy