Search posterous

Search all posts and users. Type a name, type a favorite song title, whatever! See what comes up.
  

More posterous blogs











More recommended blogs »

Here are posterous posts filed under ibm...

prkworld says...

For those of you who missed this announcement 

IBM Research and SAP Demonstrate New Cloud Technology: Real-Time Application Mobility

In this innovative merger of company values and large scale product offerings IBM and SAP are coming to market with a very clear Crowd computing solution.

In this technology demonstration, IBM and SAP show how users can run enterprise applications in the cloud, in particular demonstrating the migration of workloads across physical servers and across data centers. This demonstration is another instance of IBM working with partners across the IT industry to gain insights about creating and configuring workloads, and help companies move to the clouds as smoothly as possible.

This opens the door to a ‘if the big guys can do it, so can we’ methodology and mentality which means the Cloud will not only get to be more innovative faster, but it definitely looks like we can be looking forward to a pretty aggressive and crowded set of Cloud offerings in the Enterprise space.

In this demonstration, the migration of SAP workloads across the cloud is supported by IBM’s POWER6 systems, which enable users to run separate applications on different virtual machines, called logical partitions, on the same physical server. The IBM POWER6 system’s Live Partition Mobility capability further allows for the movement of a partition from one POWER6-based server to another POWER6-based server in the data center with no application downtime, resulting in better system utilization, improved application availability, and energy savings.

Application mobility, often one of the top of mind discussions around ‘Where does my app go” and “is it portable” is becoming more of a reality and less of a concern with the big as well as the small players.

 

Don’t think that the big blue getting involved will in anyway squelch the opportunity in this exploding market.  Infact quite the opposite.  IBM’s steps here today have likely increased the opportunity 100fold and that’s only touching on the surface of the offerings which so far are present in this otherwise very immature market.

Are you ready for Crowd computing?

Filed under: Cloud Computing, Crowdsourcing, IBM, Technology

For those of you who missed this announcement IBM Research and SAP Demonstrate New Cloud Technology: Real-Time Application Mobility

In this innovative merger of company values and large scale product offerings IBM and SAP are coming to market with a very clear Crowd computing solution.

In this technology demonstration, IBM and SAP show how users can run enterprise applications in the cloud, in particular demonstrating the migration of workloads across physical servers and across data centers. This demonstration is another instance of IBM working with partners across the IT industry to gain insights about creating and configuring workloads, and help companies move to the clouds as smoothly as possible.

This opens the door to a ‘if the big guys can do it, so can we’ methodology and mentality which means the Cloud will not only get to be more innovative faster, but it definitely looks like we can be looking forward to a pretty aggressive and crowded set of Cloud offerings in the Enterprise space.

In this demonstration, the migration of SAP workloads across the cloud is supported by IBM’s POWER6 systems, which enable users to run separate applications on different virtual machines, called logical partitions, on the same physical server. The IBM POWER6 system’s Live Partition Mobility capability further allows for the movement of a partition from one POWER6-based server to another POWER6-based server in the data center with no application downtime, resulting in better system utilization, improved application availability, and energy savings.

Application mobility, often one of the top of mind discussions around ‘Where does my app go” and “is it portable” is becoming more of a reality and less of a concern with the big as well as the small players.

 

Don’t think that the big blue getting involved will in anyway squelch the opportunity in this exploding market.  Infact quite the opposite.  IBM’s steps here today have likely increased the opportunity 100fold and that’s only touching on the surface of the offerings which so far are present in this otherwise very immature market.

…Are you ready for Crowd computing? Your enterprise will be

 

=========================================================

Is Crowd Computing the Future?

With Microsoft's announcement at PDC this fall and with the continued growth of Amazon's EC2 service and Google's AppEngine service, the industry seems to have people's heads up in the clouds. With this shift of focus, though, comes a myriad of questions about reliability, security, and portability. Potential customers of the cloud want to know that it can indeed be depended on. Executives want to know that the security of data in the cloud will not be compromised. Software engineers want to know that if a certain provider evaporates into thin air, minimal effort will be required to move deployed assets and keep mission critical apps moving.

With so many questions about elastic hosted services, and an as of yet unclear track record for the same, I cannot help but wonder if the cloud computing model will really take hold, or if it will just be a bridge to an even more impressive generation of computing architectures to follow. Maybe it will be both. This discussion then begs the question -- of what that generation will look like that does follow.

Nearly 10 years ago, a program was created that would compel sci-fi geeks, amateur astronomers, scientists, programmers, and scholars to change their screensaver. SETI@home launched in 1999 and over the next 9 years would bring grid computing into the living rooms and dorm rooms of over 5 million people. The original software was an app and screen saver that would use idle computer time to drive the search for extraterrestrial intelligence. It harnessed the untapped power of millions of computers with unrealized potential. It was built as an experiment, to break free of the constraints imposed by a supercomputer. Even hosted clusters have their limits, and some problems go beyond those limits.

With cloud computing the sky is the limit, but what if this world is not enough? What if a single company's data centers won't cut it? What if you want to maintain your data center, while still being able to tap additional resources on demand? What if you wanted to maximize and monetize under-utilized computational resources, instead of just writing them off as depreciating assets each year?

That seemed to be the aim of now defunct CPUShare. It offered users the opportunity to sell their idle CPU time to people who needed computational resources. What if the spirit of this project was matched with the vision of Windows Azure, or the ease of entry of Amazon's EC2. What if it added storage into the mix, RAM, and even bandwidth? What if each of these was currency in a new economy? This new economy would not be comprised of just one company's slice of the cloud; it would be the whole thing.

Crowd sourcing CPU hours might very well be the future, or it may be a pipe dream that will never be possible. It has the same questions of reliability, security, and portability, and it brings with it the question of control. The way the industry deals with the questions about cloud computing today, could very well pave the way for crowd computing to be the driving force behind Web 4.0 and beyond.

Filed under: cloud computing, Crowdsourcing, IBM

spyretto says...

What's a megatrend, you ask? It's something big. I'm talking really big.

Think of a giant unstoppable tsunami of change transforming society as we know it. Think global warming scale -- then apply it to mass human behavior. Think glaciers carving the grand canyon of consumer sentiment.

Compare and contrast. Here are some regular trends:

"Everyone is on Twitter these days."
"Boomers are investing more in home renovations as they approach retirement."
"Green is 'in' this season."

All of these are important. None are mega.

Here's a megatrend:

"Social media has permanently transformed the way people connect and share information."

See? Big.

Much of the planning that goes into positioning a brand takes into account product attributes, competitive differentiation, and target insights. These are all critically important considerations. But they're not what I'm talking about here.

I'm talking about what is so often left on the table -- the elephant in the room. Megatrends. Latching onto these tectonic shifts can surge an entire brand strategy forward way ahead of the curve. Google caught on to an access-to-information megatrend. Facebook caught on to people connecting. Yet, these megatrends are rarely leveraged by brands. (This was confirmed for me by the sheer difficulty I had coming up with campaigns for this article).

Most companies wait until a megatrend is so pervasive and obvious that it becomes a minimum standard, a non-differentiating proposition -- so that leveraging them does nothing to differentiate their brand. Case in point: Who doesn't have a "green" message these days?

So what are the new megatrends that I believe will transform society in the coming years? What brands are taking advantage of them? And what can you learn from them?

Read on.

Mass collaboration is powering the new economy

It's no secret among iMedia readers that "user-generated content" was a sucker punch to the jaw of the marketing world over the past several years. A fundamental shift has occurred in which brands have become a conversation -- and audiences have just as much of a say in the shape of that dialogue as marketing directors and agency copywriters.

But, that's just the tip of the iceberg.

In their book, "Wikinomics: How Mass Collaboration Changes Everything," Don Tapscott and Anthony D. Williams describe a new economy where companies are taking advantage of a new collaborative world to foster innovation and grow their enterprises.

Of course, the UGC and social media titans are part of this mass collaboration. YouTube, Facebook, Pandora, and MySpace are all based on the participation of their communities. This new shift encompasses this trend, but extends far beyond how we entertain ourselves online.

Brands like Procter & Gamble, BMW, Lego, Boeing, and Netflix are all actively going outside their walls to find new ways to innovate and better ways to produce their goods and services. These companies are pioneers of the collaborative economy.

And now, Steve Jobs has taken note.

The brand that gets it: Apple
It almost seems cliché to mention Apple in any article about great advertising. But this article isn't about what's great -- it's about massive change reshaping the future. And Apple's iPhone campaign is all about mass collaboration reshaping the future of Apple.

The campaign is in line with most Apple advertising. The product is the hero. The voice is friendly, clever, and straightforward. The ads simply state that whatever you want or need to do with your iPhone, "There's an app for that."

"There's an app for that" refers to the tens of thousands of applications built on the iPhone API that are available for download in the iTunes store. The vast majority of those apps were not built by Apple.

If you're familiar with the history of Apple, you know that relying on outside sources to fuel innovation just hasn't been the way things were done -- until now. You'd also know that Apple doesn't always do things first. (The iPod wasn't the first MP3 player.) But when it sees an opportunity, it goes after it in a bigger and better way than anyone else ever has.

Apple has seen that opportunity in mass collaboration.

Last year Apple announced it would dump Macworld and instead focus on WWDC, its Worldwide Developer Conference. Why? Because developers create apps.

This is where the driving force will come from that will maintain Apple's leadership in innovation in the years to come. This is a major strategic shift for Apple -- and the absolute right one.

Constant connectivity in an on-demand world

I'm wired. Almost every minute of every day, it seems I am connected. Emailing, surfing, Twittering, streaming, gaming, texting, Facebooking, downloading, chatting -- will it ever end?

No. It won't. Constant connectivity is a megatrend.

More and more, we are relentlessly connected to one another. We weren't when I was a kid. We weren't five years ago. But you can bet we're not going to stop anytime soon.

Why? A new generation is growing up and entering the workforce in droves. The Millennial Generation is the largest this country has ever seen -- bigger than the baby boomers -- and it is the first generation that has grown up with technology and connectivity ubiquitous in their lives. To them, it's all they've ever known.

I am incessantly networked, but I think something's wrong with me. This massive new wave of population has no such hang-ups.

What these people do have are expectations borne of their condition. They live in an on-demand world. They know no other. Want a song? Download it. Want to know something? Google it. Want to tell Susie what Bobby said? Text it. Now, now, now.

The brand that gets it: Sprint
Sprint has zeroed in on this expectation with pinpoint accuracy. It used to be the phone company. But it's no longer selling just phones. It is selling the concept of "now."

The "Now Network" campaign was created for a new product called a mobile broadband card. But it hardly matters. Sprint isn't trying to dominate the mobile broadband card market. It is trying to dominate the space in the consumer's mind where the word "now" lives.

Goodby, Silverstein & Partners -- the agency I affectionately call the "other great creative agency on the California cable car line" -- initiated the campaign online with a microsite at now.sprint.com that featured a mesmerizing array of tiny widgets showing different things that live in the now: top words being used online, current world population, a tiny game of Pong.

This digital experience has been elevated to a brand campaign with TV spots inspired by the online execution. The ever-present "Now Network" message is a consistent presence, diligently working to build a bridge between a constantly connected consumer and the brand that wants to deliver that connection.

Globalization: Making the world a smaller place

Last month, I attended the APEC (Asia-Pacific Economic Cooperation) SME Summit in Hangzhou, China. Former President Bill Clinton addressed the crowd. He told us that the world's greatest hope for financial stability and sustained economic growth is a massive shift in wealth from a handful of precariously balanced and self-interested financial institutions to a multitude of small and medium businesses across the globe doing business with one another -- and technology is the accelerant bringing this change to life.

Bill's words. Not mine.

Globalization is an unstoppable force reshaping our society. The world's economies are inextricably linked. Technology has made geography irrelevant. Businesses around the world are doing business with one another and will continue to do so. This is big. This is mega big.

Many Americans have been slow to realize this. The web has given us all access to a whole new world of markets and partners that we can and should do business with. Technology can make every business a global business.

The recession has left millions of Americans out of work, many wondering what their next move should be. Today, they can start their own global business from the comfort of their living room.

The brand that gets it: Aliababa.com
Alibaba.com is the technology platform that is accelerating globalization. (Full disclosure: Aliababa.com is a client of my agency.) It's a website that helps small and medium-sized businesses around the world find suppliers or manufacturers for virtually any product or service they might need. Alibaba.com makes it possible for virtually anyone with a laptop and an idea to find a supplier half a world away to help them build a business. The site has 42 million members, and the company has grown from 18 employees to 10,000 in a decade.

When I was first introduced to Alibaba.com, I went on its website to check it out. I clicked on an interesting-looking button that said, "Submit a buying lead." Three minutes later, I had filled out a form seeking a supplier to produce 2,000 cashmere sweaters (I have expensive taste).

What happened next was amazing. Within 36 hours, I had 27 people from real companies around the world -- China, India, Egypt, Italy, Vietnam, and Bangladesh -- sending me emails offering to produce my sweaters, to send me samples, to be my partner. If I didn't love this agency gig so much, I'd be in the cashmere business right now.

Alibaba.com faced a tough challenge in the U.S. market this year. The brand was a relatively unknown quantity to most Americans, and the very notion of finding a trusted partner halfway across the world was foreign to a majority of small business owners in the U.S.

Alibaba.com introduced itself to the American with a marketing campaign that summed up everything you're able to do on its site:

Find it. Make it. Sell it.

"It" could be just about anything.

The campaign features stories of entrepreneurs that found partners on Alibaba.com that helped them create successful businesses. An integrated brand narrative used TV, print, and online media to build awareness and drive customers to success.alibaba.com where they could watch "mockumentary" videos of the campaign characters telling their stories, delve into case studies of real-life Alibaba entrepreneurs, and learn how they can get started using Alibaba.com for their businesses.

Pervasive distrust in big corporations

Does our economic situation have you infuriated with corporate America? Do you feel like the jerks on Wall Street and the incompetents in Detroit almost destroyed this country's financial system to line their own pockets? Do you trust big banks to have your best interests in mind?

If you answered "yes, yes, no," to the above, you're not alone.

The impending financial doom this country faced a year ago had a tremendous impact on consumer confidence in America, but even greater damage was done to consumer trust. News reports have created a mass perception of banks hoarding bailout money provided to loosen credit markets in order to boost profits and fund exorbitant executive compensation packages. Despite the hope and good faith many Americans have in our new president (myself included), our government appears incompetent at best, complicit at worst.

This has propelled pervasive distrust to megatrend levels.

The impact of this is not limited to financial institutions and automakers. According to Interbrand's annual assessment of the top 100 global brands, the list's total value fell by 4.6 percent in the past year. While brand valuation is a murky science, those are not good numbers.

Yet, in adversity lies opportunity. As distrust reaches near universal proportions, a brand story based on trust can be a powerful weapon.

The brand that gets it: Ally Bank
Tired of being screwed? Now, you've got an ally. Ally Bank.

"Who?" you ask.

You know how Prince became The Artist Formerly Known as Prince?

Meet your new Ally. The Bank Formerly Known as GMAC.

The duplicity of a giant U.S. bank combined with the ineptitude of a giant U.S. car company. I'd vomit if only this wasn't such a well-crafted brand. Here's the brand's elevator pitch (verbatim from its website):

"We are Ally Bank, built on the foundation of GMAC Financial Services. And with that experience we've learned that these times demand change and a new way of doing business. So we're taking banking in a new direction.

That means talking straight, doing right and being obviously better for our customers."

The tag line for the campaign is simply, "Straightforward."

TV spots show a little girl get shafted by a banker-type guy who didn't tell her she could have had a real pony instead of a toy. "Even kids know it's wrong to hold out on somebody. Why don't banks?" the voiceover asks. Good question.

This straightforward, human tone seems to emanate from every pore of this brand. Copy on the website assures potential customers, "We won't deal in half-truths, kindatruths, or truths only buried in fine print."

Even the brand color, purple, screams, "We're not like the other guys."

It remains to be seen whether past associations can be overlooked, but my suspicion is that Ally Bank's actions will speak louder than its words over the coming years. If it really embraces the values it espouses in the way it does business, people will talk about it, and Ally will become a powerful brand. If the brand doesn't, people will talk about that too.

A global sense of urgency to fix the problems of a modern world

When I started this article, I swore I would not write about "going green" as one of the megatrends. It certainly is a big deal, but it's one that has been thrust so far into the limelight that it's no longer an opportunity to differentiate. Being green is a minimum standard.

What do I mean by minimum standard? Take the airlines. Whoever came up with the concept of frequent flier miles had a great differentiator for business travelers. It was so great, that soon everyone else in the industry followed suit and now having an incentive program for frequent fliers is a minimum standard in the industry. Every airline must have one to compete.

Virtually every brand in every category has a green story these days.

But being green is symptomatic of another megatrend that is influencing the world on a massive scale -- a global sense of urgency.

It's no secret to anyone that... well... we're screwed. The planet is falling apart. We've got global warming, pollution, overcrowded cities, not enough energy, we're running out of water, and running out of fish.

But the eco message is just the tip of the melting iceberg. Advances in technology have put fixes to so many challenges within reach. Conventional wisdom now begs to ask: Why wouldn't we take advantage of solutions available to us? Why wouldn't we digitize health care? Why wouldn't we use smart toll systems to ease traffic jams? Why wouldn't we implement technology to make our school systems more efficient?

Today, governments and enterprises around the world are rushing to play catch-up. They sense the urgency. To wise up. To get smart.

The brand that gets it: IBM
IBM has wrapped its big blue arms around the massive sense of urgency that is sweeping the globe with its campaign for "A Smarter Planet."

The campaign overview page on IBM's website sums it up:

"The technology is here.
The people are ready.
The time is now."

This looks far beyond the important-but-limited scope of coming up with new ways to conserve energy or limit emissions -- the subject of so many campaigns targeting the "think green" mindset. In addition to energy, water, and construction, IBM's "Smarter Planet" campaign encompasses solutions for traffic, cities, banking, retail, education, telecom, and health care.

But the campaign is also about aspiration. About fixing things before it's too late. It's optimistic. It's motivating. It's the kind of message that Americans swarmed to when they elected Barack Obama.

And best of all, it's tangible. Which makes it empowering.

"A less expensive energy bill. A package that gets delivered in two days instead of seven. Quarterly school reports available online. Bit by bit, our planet is getting smarter. By this, we mean the systems that run the way we live and work as a society."

This is how IBM is describing its vision for a smarter planet. It's talking about all the different ways to make a difference from a 10,000-foot view and then bringing it down to tangible solutions provided by IBM to make a smarter planet a reality.

Tactically, I think IBM is also doing a great job integrating this message across every advertising touchpoint and using social media to reinforce thought leadership. It's using Tumblr as part of this effort, a powerful, yet simple tool that I personally think has the potential to be the next big thing in social media. Think of the consumable nature of Twitter, but the ability to post and tag anything -- videos, pictures, and prose.

This is smart marketing. I anticipate that many readers of this article are deep into planning for 2010 right now. Before you close that PowerPoint presentation, I advise you to take a step back and ask yourself, "Am I missing something? Is there a bigger opportunity here?"

We live in a time of tumultuous change. That means there are huge opportunities out there, waiting for marketers with the foresight to find them and the courage to act on them. There just might be a megatrend out there waiting for you.

Adam Kleinberg is CEO of Traction.

On Twitter? Follow Kleinberg at @adamkleinberg. Follow iMedia Connection at @iMediaTweet.

Filed under: Aliababa.com, Ally Bank, Apple, IBM, Marketing, Sprint

Chromeboy says...

Brilliant. This is the future of DNA.

Filed under: Biology, Biotechnology, DNA, IBM, Transistor, Video

Jesus Hoyos says...

IBM anunció que lanzará el servicio de externalización para Customer Relationship Management (CRM), expandiendo con ello sus actuales operaciones locales, contribuyendo al crecimiento económico del país y promoviendo el desarrollo de la IT y las capacidades de negocio locales.

IBM opera en Costa Rica desde el 2004 y actualmente provee administración en servicios de Recursos Humanos (RH), que incluye manejo de nómina, beneficios y compensación, aprendizaje en línea y viajes corporativos, para más de 225.000 empleados de ocho diferentes compañías en cuatro idiomas: inglés, español, francés y portugués. Gracias a las habilidades y fortalezas en los idiomas de sus colaboradores internos y la educación en general, IBM está ahora ampliando sus operaciones más allá de la externalización en Recursos Humanos.

El articulo no menciona que tipo per se de servicios o que tecnología estara ofreciendo IBM con este outsourcing...

http://www.cioal.com/analisis/negocios/ibm-lanza-outsourcing-de-crm-en-costa-rica300/todas-las-paginas.html#

Pero tal parece que Costa Rica se esta llevando parte del pedazo de outsourcing en la región.

Filed under: costa rica, crm, ibm, latin america

I moved my main domain [here] to Posterous. I'll still be using Tumblr (likely more than I have recently), and you can find my Tumblr blog now located at tumblr.ralphthemagician.com. They've been adding new features hand over fist at Tumblr, which is cool, but there's something about the simplicity of Posterous that I've always liked, yet I've never used it. It's even more simple than Tumblr. I particuarly like the part where you can update everything via email. Everyone berates email as being "old," yet everyone has one. In spite of drawing a venn diagriam I'll just say this: You can't sign up for Facebook or Twitter without an email address.

This got me started on thinking about what kind of interactivity you could do simply via email. Why don't we talk about email more? Everyone is keen on finding new ways to integreate with Twitter and Facebook because they amplify an interaction through a person's social network, but if something is interesting people will talk about it anyway. The most engaging (and talkworthy) experiences are often those that require as small a barrier to entry as possible. That's what's so neat about Posterous. You don't even need to sign up to start using it. That, in and of itself, is an interesting twist on user aquisution flow that we don't see much anymore.

One of the other interesting things about email is that it's trackable. Very trackable. On of the more interesting studies I've read this year was the one done by IBM on the value of social networks. IBM has been working with MIT's Sloan Management School and NYU's Stern Business School to find out just how valuable an individual in a person's business address book is. They've done this, not through some out-of-the-box service, but through real regression analysis, and they've come up with a value of $948. You can read more about this research project here.

Some people think that email is dead – that email is being replaced by the inbox on Facebook. I don't think so. If anything, email is evolving. Perhaps what's dead are the POP and IMAP protocols, soon to be replaced by Google Wave or whatever comes next.

Filed under: email, faceook, google wave, ibm, posterous, social media, social networking, tumblr, twitter

theThought says...

SUCCESS

It’s taken a few weeks, in which the company has changed name, the product has changed name (again) and I have been busy getting ready for everything.  But 10:00 am (GMT) today I managed to run my first survey where responses from the survey were posted into a Custom Part within a Word Document so that the Word document is automatically updated.  If nothing else this proves that IBM SPSS Data Collection can integrate with OpenXML.

Although there are a few other things I would like to do, generate a PDF from the document, do all the work in memory so that the document is not actually written to file, send the file as an attachment to an email.  But this is a great start.

So Monday will see me move to my third project (the above being my second, after a very simple manipulation of WordML in my first).  I will be moving from Word to PowerPoint and I will be moving from Collection to analysis.  I would like to be able to show that output from an MRS (Reporting Script) can push data into an existing Powerpoint presentation without losing any formatting.

One work day off then and then back to the grindstone (what I really mean is one day with my Flash project before moving back to OpenXML – but I can pretend it’s a day off.)

I hope you have enjoyed the posts so far and will continue to read about my endeavours in the future.

Filed under: Data Collection, IBM, Microsoft Word, OpenXML, SPSS, WordML

theThought says...

 

So the class required to push data into an OpenXML Word document has now been created (the class), there are just three steps left:

·         Create the DLL wrapper and publish

·         Create a test Chassis to ensure that the DLL works and resolve issues

·         Integrate the DLL into the Data Collection routing and test the final integration

Details of each of these steps is below:

Create the DLL wrapper and publish

Data Collection is able to integrate with processes that are exposed as COM components.  At present the DLL that has been created is not exposed in this way consequently some changes have to be made. This is done by changing the definition of the class and is described by the following article (com objects in vb.net).  Many of these steps have already taken place.  As this particular class does not use or consume events I did not create an Events Id.  Also I used Visual Basic Express 2008 to create my DLL and this does not have the GUID creating tool referenced in the document.  Consequently I used a website to do this (oh the beauty of the internet),  this site is fantastic in its simplicity (create a GUID).

Effectively I did two things:

I replaced the Class definition

Public Class Complaint

with

<System.Runtime.InteropServices.ProgId("cao2.Complaint"), ComClass(Complaint.ClassId, Complaint.InterfaceId)> Public Class Complaint

   Public Const ClassId As String = "CB3F9E3E-D1EB-4852-9C34-7C0A6DC4F7F8"
   Public Const InterfaceId As String = "9C10A919-8E4B-419E-9AAE-3868A1466EC4"

Following this two Constants are generated for the ClassID and InterfaceID GUIDs.  They are kept as constants to make sure that they are the same between compilations of the DLL

Lastly the Properties of the Project are changed so that the Assembly knows it needs to make the assemblies COM visible.  This setting is shown in the following diagram:

Create a test Chassis to ensure that the DLL works and resolve issues

Once the DLL has been constructed it needs to be tested.  A test chassis is needed to be able to define the DLL and pass the UpdateCustomPart method with the necessary details.  I used a project I had created earlier (first project) that I built as a chassis as it has a form interface and already has the right references. I added a RichTextBox so that the output from the survey (survey output) could be copied into the Chassis and passed to the DLL.  The form now like the one shown below:

Once the form was finished the references within the project were changed so that the chassis is aware of the newly created DLL.  The reference can be seen on the second line of the following diagram.  It was created by adding a reference and pointing to the DLL that was created when the DLL was compiled.

Next the start button was re-coded so that it creates a new instance of the RailComplaint class and then calls the UpdateCustomPart passing the relevant information into the method.  The information it passes is the name and location of the Word Document (hard coded for this test), the name of the CustomPart (again hard coded), and the content of the rich text box that should contain the XML string from the survey.

Private Sub pbnStart_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles pbnStart.Click

‘Update Custom Part Test

Dim RailComplaint As New RailComplaint.Complaint
Dim Result As Boolean

Result = RailComplaint.UpdateCustomPart("C:\projects\OpenXML\Samples\RailComplaint\Customer Complaint Test.docx", "item1", rtbXML.Text)

End Sub

Once this is complete IBM SPSS Data Collection – Author Professional is run  and the survey is loaded.  Auto-Answer is used to populate the responses and generate the XML.  The last line of code sends the XML to the output window: Debug.log(xmlPart.xml).  Once the survey is complete the contents of the output window can be copied into the RichTextbox in the test Chassis.  Finally, the start button can be pressed and the code executed.  The script provided in this and other posts has already gone through this process so should work without issue.

Integrate the DLL into the Data Collection routing and test the final integration

The final stage of the process is to call the DLL from the survey.  The code used to do this is very similar to that used in the test harness.  DCScript variables are not typed so the declarations are simpler.  The last line just makes sure that the RailComplaint object is completely removed from memory.

Dim Result
Dim RailComplaint          

                set RailComplaint = CreateObject("cao2.Complaint")
                Result = RailComplaint.UpdateCustomPart("C:\projects\OpenXML\Samples\RailComplaint\Customer Complaint Test.docx", "item1", xmlPart.xml)
                set RailComplaint = null

Once this has been done it is possible to run the survey, complete the two pages of questions and then Open the Customer Complaint Text.docx file to see the result.

Filed under: CreateObject, DCScript, DLL, IBM, OpenXML, PASW DATA Collection, SPSS, WordML

Lars says...




Filed under: Advocates, CNBC, IBM, Internal Communications, SocialMedia, Video

theThought says...

The previous post provided a technical specification for the DLL required to link IBM SPSS Data Collection to the Custom Part in a Word document so that the responses in the survey can be pushed into the Word document.  This post will show the code used to implement that specification.  The code has been broken down into a simplified form to help me learn and to make it easier to explain.  There will be shortcuts that you may want to adopt, you may want less functions preferring to write the code in a single method, however I prefer the small is beautiful approach.

Defining the class:
As OpenXML constructs are going to be manipulated it is necessary to define the right references within the project and to import them into the class itself.  As streams are going to be used to read and write xml files into the Word document System.IO has to be imported.  There is no constructor required as the key actions will be on the main method (UpdateCustomPart). Consequently the class definition is as follows:

Imports DocumentFormat.OpenXml.Packaging

Imports System.IO

Public Class Complaint

End Class

UpdateCustomPart (Public Method)
The first and main method is the UpdateCustomPart, this will receive three parameters and will, for the purpose of this example, output a Boolean indicating success or fail.   The process this method follows is:

Ø  Parse XML string into a new XML Document

Ø  Open the Word Document

Ø  Locate the Custom Part

Ø  Update the Custom Part

Within this process the XML String, the name and location of the Word document and the name of the Custom Part are passed as parameters so that the same class could be used to update any custom part within any Word document.  The code for this method is as follows:

Public Function UpdateCustomPart(ByVal theFileName As String, ByVal theCustomPart As String, ByVal theXML As String) As Boolean

Dim WordDoc As WordprocessingDocument
Dim CustomPart As DocumentFormat.OpenXml.Packaging.OpenXmlPart
Dim xmlUpdate As Xml.XmlDocument

    xmlUpdate = New Xml.XmlDocument

    Try
        xmlUpdate.LoadXml(theXML)
    Catch ex As Exception
        Return False
    End Try

    WordDoc = OpenWordDoc(theFileName)

    If Worddoc Is Not Nothing Then CustomPart = FindCustomPart(WordDoc, theCustomPart)

    If CustomPart Is Not Nothing Then

Return changeCustomPart(CustomPart, xmlUpdate)

   End If

Return True

End Function

In the above function the try … catch is used to capture any errors generated from loading the XML (caused by badly formed xml).  Each of the subsequent functions are detailed below, if any fail the subsequent actions are not performed.

OpenWordDoc (Private Function)
The purpose of this function is to open the Word document identified by the path/filename string and to return the opened document to the calling routine.  Rather than just attempt to open the file (only to have it fail because the file does not exist) the function first uses FindFile to locate the document.  Only if this returns details of the file will the system attempt to open it. 

Private Function OpenWordDoc(ByVal theFileName As String) As WordprocessingDocument

Dim WordDoc As WordprocessingDocument
Dim FindFile As System.IO.FileInfo

    FindFile = New System.IO.FileInfo(theFileName)

    If Not FindFile Is Nothing Then
        WordDoc = WordprocessingDocument.Open(theFileName, True)
        Return WordDoc
    Else
        Return Nothing
    End If

End Function

FindCustomPart (Private Function)
This function was actually quite difficult to work out, it maybe that it is not actually the best way of doing it.  The word document is a package that contains a significant number of XML sub-documents.  It is necessary to find the right XML document to update.  The word document was created from within Word and the Word 2007 Content Control Toolkit.  As a consequence I did not name the Custom Part it was named for me.  Its name is Item1.xml.  It is contained in the customXml folder.  This document can be located using the relationships definition for the Main document part.  If this relationship definition is examined it can be seen that there is a relationship described for the custom part.

<?xml version="1.0" encoding="utf-8"?>
<Relationships xmlns="http://schemas.openxmlformats.org/package/2006/relationships">
                <Relationship Type="http://schemas.openxmlformats.org/officeDocument/2006/relationships/settings" Target="settings.xml" Id="rId3" />
                <Relationship Type="http://schemas.openxmlformats.org/officeDocument/2006/relationships/theme" Target="theme/theme1.xml" Id="rId7" />
                <Relationship Type="http://schemas.openxmlformats.org/officeDocument/2006/relationships/styles" Target="styles.xml" Id="rId2" />
                <Relationship Type="http://schemas.openxmlformats.org/officeDocument/2006/relationships/glossaryDocument" Target="glossary/document.xml" Id="rId6" />
                <Relationship Type="http://schemas.openxmlformats.org/officeDocument/2006/relationships/fontTable" Target="fontTable.xml" Id="rId5" />
                <Relationship Type="http://schemas.openxmlformats.org/officeDocument/2006/relationships/webSettings" Target="webSettings.xml" Id="rId4" />
                <Relationship Type="http://schemas.openxmlformats.org/officeDocument/2006/relationships/customXml" Target="../customXml/item1.xml" Id="R456ea5aec8a94caf" />
</Relationships>

The target attribute is the URI of the part.  Based on the fact that the name of the part is provided by the consumer of the DLL this URI can be constructed through some simple text manipulation (“customXml/” + thename + “.xml”).  There may be several custom parts within a document so the Find function iterates through all the custom parts matching the URI of the custom part with a calculated URI.  When it finds a match it returns the matching part.  If it does not find a matching URI the function returns nothing.

Private Function FindCustomPart(ByVal theDoc As WordprocessingDocument, ByVal theName As String) As DocumentFormat.OpenXml.Packaging.CustomXmlPart

Dim CustomPart As DocumentFormat.OpenXml.Packaging.CustomXmlPart
Dim MainParts As IEnumerable(Of CustomXmlPart)
Dim ID As String
Dim matchURI As Uri
Dim CalculatedLocation As String = "/customXml/" & theName & ".xml"

    MainParts = theDoc.MainDocumentPart.CustomXmlParts

    matchURI = New Uri(CalculatedLocation, UriKind.Relative)

    For Each CustomPart In MainParts
        ID = theDoc.MainDocumentPart.GetIdOfPart(CustomPart)

        If CustomPart.Uri = matchURI Then
            Return CustomPart
        End If

    Next

    Return Nothing

End Function

ChangeCustomPart (Private Function)
This function uses a stream to Create new content for the custom part using the XML document created from the XML string passed to the DLL.  It effectively ties all the pieces together.  The writing of the stream updates the file (effectively saves it) this means that there is no need to save the document itself.

Private Function changeCustomPart(ByVal thePart As DocumentFormat.OpenXml.Packaging.OpenXmlPart, ByVal theXML As Xml.XmlDocument) As Boolean

Dim XMLStream As Stream

    XMLStream = thePart.GetStream(FileMode.Create, FileAccess.ReadWrite)

    Using (XMLStream)
        theXML.Save(XMLStream)
    End Using

End Function

Filed under: IBM, IBM SPSS Data Collection, OpenXML, SPSS, VB.net