sabato 29 dicembre 2012

Untitled by Michele Mondora
Untitled, a photo by Michele Mondora on Flickr.

Untitled by Michele Mondora
Untitled, a photo by Michele Mondora on Flickr.

lunedì 24 dicembre 2012

radiosonda svizzera

radiosonda svizzera by Michele Mondora
radiosonda svizzera, a photo by Michele Mondora on Flickr.

martedì 20 gennaio 2009

apache Ode, JBoss and MySql.

Today topic is installing on JBoss 4.2.3-GA, apache ODE 1,2 using MySql as a db.

A brief search with google and no interesting documentation available, and after going through the apache ode war install for tomcat, I starting deploy.

First of all, get your ode binary war from a mirror.
Unpack zip, and unpack war: you are going to modify the war configuration. Let's assume that the unpack ODE is in "ode" directory.

Under ode/WEB-INF/conf create file ode-axis2.properties with:
ode-axis2.db.mode=EXTERNAL
ode-axis2.db.ext.dataSource=java:comp/env/jdbc/ODEDB
ode.persistence=hibernate

#
# the default tx factory is geronimo. org.apache.ode.il.EmbeddedGeronimoFactory
# change it with the JBoss one.
#
ode-axis2.tx.factory.class=org.apache.ode.axis2.util.JBossFactory
#ode-axis2.dao.factory=org.apache.ode.daohib.bpel.BpelDAOConnectionFactoryImpl

#
# Hibernate configuration
# http://www.hibernate.org/hib_docs/reference/en/html/configuration-optional.html
#

hibernate.dialect=org.hibernate.dialect.MySQL5Dialect
hibernate.hbm2ddl.auto=update
hibernate.show_sql=true
hibernate.current_session_context_class=jta
hibernate.transaction.manager_lookup_class=org.hibernate.transaction.JBossTransactionManagerLookup


Add your Hibernate Configuration, the one provided in the one I use. Using
ode-axis2.db.ext.dataSource=java:comp/env/jdbc/ODEDB
you are going to declare usage of a jdbc pool, through a resource-ref, so please configure the in your web.xml like:
jdbc/ODEDB javax.sql.DataSource Container Shareable


Then you must create a jboss-web to resolve the resource-ref into a concrete jdbc datasource. In WEB-INF, create jboss-web and add:
jdbc/ODEDB javax.sql.DataSource java:/ODEDB

Ensure to have a jdbc/ODEDB concrete datasource, and JBoss is configured with mysql jdbc driver. Ensure also to have the MySql database, with user and grants to access it.

I had some troubles with Hibernate MySQL hbm2ddl.auto and Sql generation with error:
LARGE_DATA (ID bigint not null auto_increment, BIN_DATA blob(2G), INSERT_TIME datetime, MLOCK integer not null, primary key (ID)); ERROR 1064 (42000): You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '2G)

So with some patience (a lot of) I look into source to discover and get all the MySQL DDL to manually create all the tables needed by apache ODE:
CREATE TABLE ODE_ACTIVITY_RECOVERY (ID BIGINT NOT NULL, ACTIONS VARCHAR(255), ACTIVITY_ID BIGINT, CHANNEL VARCHAR(255), DATE_TIME DATETIME, DETAILS TEXT, REASON VARCHAR(255), RETRIES INTEGER, INSTANCE_ID BIGINT, PRIMARY KEY (ID)) TYPE = innodb;

CREATE TABLE ODE_CORRELATION_SET (CORRELATION_SET_ID BIGINT NOT NULL, CORRELATION_KEY VARCHAR(255), NAME VARCHAR(255), SCOPE_ID BIGINT, PRIMARY KEY (CORRELATION_SET_ID)) TYPE = innodb;

CREATE TABLE ODE_CORRELATOR (CORRELATOR_ID BIGINT NOT NULL, CORRELATOR_KEY VARCHAR(255), PROC_ID BIGINT, PRIMARY KEY (CORRELATOR_ID)) TYPE = innodb;
CREATE TABLE ODE_CORSET_PROP (ID BIGINT NOT NULL, PROP_KEY VARCHAR(255), PROP_VALUE VARCHAR(255), CORRSET_ID BIGINT, PRIMARY KEY (ID)) TYPE = innodb;

CREATE TABLE ODE_EVENT (EVENT_ID BIGINT NOT NULL, DETAIL VARCHAR(255), DATA BLOB, SCOPE_ID BIGINT, TSTAMP DATETIME, TYPE VARCHAR(255), INSTANCE_ID BIGINT, PROCESS_ID BIGINT, PRIMARY KEY (EVENT_ID)) TYPE = innodb;

CREATE TABLE ODE_FAULT (FAULT_ID BIGINT NOT NULL, ACTIVITY_ID INTEGER, DATA TEXT, MESSAGE VARCHAR(255), LINE_NUMBER INTEGER, NAME VARCHAR(255), PRIMARY KEY (FAULT_ID)) TYPE = innodb;

CREATE TABLE ODE_MESSAGE (MESSAGE_ID BIGINT NOT NULL, DATA TEXT, TYPE VARCHAR(255), MESSAGE_EXCHANGE_ID VARCHAR(255), PRIMARY KEY (MESSAGE_ID)) TYPE = innodb;

CREATE TABLE ODE_MESSAGE_EXCHANGE (MESSAGE_EXCHANGE_ID VARCHAR(255) NOT NULL, CALLEE VARCHAR(255), CHANNEL VARCHAR(255), CORRELATION_ID VARCHAR(255), CORRELATION_KEYS VARCHAR(255), CORRELATION_STATUS VARCHAR(255), CREATE_TIME DATETIME, DIRECTION INTEGER, EPR TEXT, FAULT VARCHAR(255), FAULT_EXPLANATION VARCHAR(255), OPERATION VARCHAR(255), PARTNER_LINK_MODEL_ID INTEGER, PATTERN VARCHAR(255), PIPED_ID VARCHAR(255), PORT_TYPE VARCHAR(255), PROPAGATE_TRANS BIT, STATUS VARCHAR(255), CORR_ID BIGINT, PARTNER_LINK_ID BIGINT, PROCESS_ID BIGINT, PROCESS_INSTANCE_ID BIGINT, REQUEST_MESSAGE_ID BIGINT, RESPONSE_MESSAGE_ID BIGINT, PRIMARY KEY (MESSAGE_EXCHANGE_ID)) TYPE = innodb;

CREATE TABLE ODE_MESSAGE_ROUTE (MESSAGE_ROUTE_ID BIGINT NOT NULL, CORRELATION_KEY VARCHAR(255), GROUP_ID VARCHAR(255), ROUTE_INDEX INTEGER, CORR_ID BIGINT, PROCESS_INSTANCE_ID BIGINT, PRIMARY KEY (MESSAGE_ROUTE_ID)) TYPE = innodb;

CREATE TABLE ODE_MEX_PROP (ID BIGINT NOT NULL, PROP_KEY VARCHAR(255), PROP_VALUE VARCHAR(255), MEX_ID VARCHAR(255), PRIMARY KEY (ID)) TYPE = innodb;


CREATE TABLE ODE_PARTNER_LINK (PARTNER_LINK_ID BIGINT NOT NULL, MY_EPR TEXT, MY_ROLE_NAME VARCHAR(255), MY_ROLE_SERVICE_NAME VARCHAR(255), MY_SESSION_ID VARCHAR(255), PARTNER_EPR TEXT, PARTNER_LINK_MODEL_ID INTEGER, PARTNER_LINK_NAME VARCHAR(255), PARTNER_ROLE_NAME VARCHAR(255), PARTNER_SESSION_ID VARCHAR(255), SCOPE_ID BIGINT, PRIMARY KEY (PARTNER_LINK_ID)) TYPE = innodb;

CREATE TABLE ODE_PROCESS (ID BIGINT NOT NULL, GUID VARCHAR(255), NUMBER_OF_INSTANCES INTEGER, PROCESS_ID VARCHAR(255), PROCESS_TYPE VARCHAR(255), VERSION BIGINT, PRIMARY KEY (ID)) TYPE = innodb;

CREATE TABLE ODE_PROCESS_INSTANCE (ID BIGINT NOT NULL, DATE_CREATED DATETIME, EXECUTION_STATE BLOB, LAST_ACTIVE_TIME DATETIME, LAST_RECOVERY_DATE DATETIME, PREVIOUS_STATE SMALLINT, SEQUENCE BIGINT, INSTANCE_STATE SMALLINT, FAULT_ID BIGINT, INSTANTIATING_CORRELATOR_ID BIGINT, PROCESS_ID BIGINT, ROOT_SCOPE_ID BIGINT, PRIMARY KEY (ID)) TYPE = innodb;

CREATE TABLE ODE_SCOPE (SCOPE_ID BIGINT NOT NULL, MODEL_ID INTEGER, SCOPE_NAME VARCHAR(255), SCOPE_STATE VARCHAR(255), PARENT_SCOPE_ID BIGINT, PROCESS_INSTANCE_ID BIGINT, PRIMARY KEY (SCOPE_ID)) TYPE = innodb;

CREATE TABLE ODE_XML_DATA (XML_DATA_ID BIGINT NOT NULL, DATA TEXT, IS_SIMPLE_TYPE BIT, NAME VARCHAR(255), SCOPE_ID BIGINT, PRIMARY KEY (XML_DATA_ID)) TYPE = innodb;

CREATE TABLE ODE_XML_DATA_PROP (ID BIGINT NOT NULL, PROP_KEY VARCHAR(255), PROP_VALUE VARCHAR(255), XML_DATA_ID BIGINT, PRIMARY KEY (ID)) TYPE = innodb;

CREATE TABLE OPENJPA_SEQUENCE_TABLE (ID TINYINT NOT NULL, SEQUENCE_VALUE BIGINT, PRIMARY KEY (ID)) TYPE = innodb;

CREATE TABLE STORE_DU (NAME VARCHAR(255) NOT NULL, DEPLOYDT DATETIME, DEPLOYER VARCHAR(255), DIR VARCHAR(255), PRIMARY KEY (NAME)) TYPE = innodb;

CREATE TABLE STORE_PROCESS (PID VARCHAR(255) NOT NULL, STATE VARCHAR(255), TYPE VARCHAR(255), VERSION BIGINT, DU VARCHAR(255), PRIMARY KEY (PID)) TYPE = innodb;

CREATE TABLE STORE_PROCESS_PROP (id BIGINT NOT NULL, PROP_KEY VARCHAR(255), PROP_VAL VARCHAR(255), PRIMARY KEY (id)) TYPE = innodb;

CREATE TABLE STORE_PROC_TO_PROP (ProcessConfDaoImpl_PID VARCHAR(255), element_id BIGINT) TYPE = innodb;

CREATE TABLE STORE_VERSIONS (id BIGINT NOT NULL, VERSION BIGINT, PRIMARY KEY (id)) TYPE = innodb;

CREATE INDEX I_D_CTVRY_INSTANCE ON ODE_ACTIVITY_RECOVERY (INSTANCE_ID);
CREATE INDEX I_D_CR_ST_SCOPE ON ODE_CORRELATION_SET (SCOPE_ID);
CREATE INDEX I_D_CRLTR_PROCESS ON ODE_CORRELATOR (PROC_ID);
CREATE INDEX I_D_CRPRP_CORRSET ON ODE_CORSET_PROP (CORRSET_ID);
CREATE INDEX I_OD_VENT_INSTANCE ON ODE_EVENT (INSTANCE_ID);
CREATE INDEX I_OD_VENT_PROCESS ON ODE_EVENT (PROCESS_ID);
CREATE INDEX I_OD_MSSG_MESSAGEEXCHANGE ON ODE_MESSAGE (MESSAGE_EXCHANGE_ID);
CREATE INDEX I_D_MSHNG_CORRELATOR ON ODE_MESSAGE_EXCHANGE (CORR_ID);
CREATE INDEX I_D_MSHNG_PARTNERLINK ON ODE_MESSAGE_EXCHANGE (PARTNER_LINK_ID);
CREATE INDEX I_D_MSHNG_PROCESS ON ODE_MESSAGE_EXCHANGE (PROCESS_ID);
CREATE INDEX I_D_MSHNG_PROCESSINST ON ODE_MESSAGE_EXCHANGE (PROCESS_INSTANCE_ID);
CREATE INDEX I_D_MSHNG_REQUEST ON ODE_MESSAGE_EXCHANGE (REQUEST_MESSAGE_ID);
CREATE INDEX I_D_MSHNG_RESPONSE ON ODE_MESSAGE_EXCHANGE (RESPONSE_MESSAGE_ID);
CREATE INDEX I_D_MS_RT_CORRELATOR ON ODE_MESSAGE_ROUTE (CORR_ID);
CREATE INDEX I_D_MS_RT_PROCESSINST ON ODE_MESSAGE_ROUTE (PROCESS_INSTANCE_ID);
CREATE INDEX I_D_MXPRP_MEX ON ODE_MEX_PROP (MEX_ID);
CREATE INDEX I_D_PRLNK_SCOPE ON ODE_PARTNER_LINK (SCOPE_ID);
CREATE INDEX I_D_PRTNC_FAULT ON ODE_PROCESS_INSTANCE (FAULT_ID);
CREATE INDEX I_D_PRTNC_INSTANTIATINGCORRELATOR ON ODE_PROCESS_INSTANCE (INSTANTIATING_CORRELATOR_ID);
CREATE INDEX I_D_PRTNC_PROCESS ON ODE_PROCESS_INSTANCE (PROCESS_ID);
CREATE INDEX I_D_PRTNC_ROOTSCOPE ON ODE_PROCESS_INSTANCE (ROOT_SCOPE_ID);
CREATE INDEX I_OD_SCOP_PARENTSCOPE ON ODE_SCOPE (PARENT_SCOPE_ID);
CREATE INDEX I_OD_SCOP_PROCESSINSTANCE ON ODE_SCOPE (PROCESS_INSTANCE_ID);
CREATE INDEX I_D_XM_DT_SCOPE ON ODE_XML_DATA (SCOPE_ID);
CREATE INDEX I_D_XMPRP_XMLDATA ON ODE_XML_DATA_PROP (XML_DATA_ID);
CREATE INDEX I_STR_CSS_DU ON STORE_PROCESS (DU);
CREATE INDEX I_STR_PRP_ELEMENT ON STORE_PROC_TO_PROP (element_id);
CREATE INDEX I_STR_PRP_PROCESSCONFDAOIMPL_PID ON STORE_PROC_TO_PROP (ProcessConfDaoImpl_PID);

# IMPORTED FROM OPENSYMPHONY QUARTZ, SEE NOTICE FILE FOR DETAILS

#
# In your Quartz properties file, you'll need to set
# org.quartz.jobStore.driverDelegateClass = org.quartz.impl.jdbcjobstore.StdJDBCDelegate
#
#
# By: Ron Cordell - roncordell
# I didn't see this anywhere, so I thought I'd post it here. This is the script from Quartz to create the tables in a MySQL database, modified to use INNODB instead of MYISAM.

DROP TABLE IF EXISTS QRTZ_JOB_LISTENERS;
DROP TABLE IF EXISTS QRTZ_TRIGGER_LISTENERS;
DROP TABLE IF EXISTS QRTZ_FIRED_TRIGGERS;
DROP TABLE IF EXISTS QRTZ_PAUSED_TRIGGER_GRPS;
DROP TABLE IF EXISTS QRTZ_SCHEDULER_STATE;
DROP TABLE IF EXISTS QRTZ_LOCKS;
DROP TABLE IF EXISTS QRTZ_SIMPLE_TRIGGERS;
DROP TABLE IF EXISTS QRTZ_CRON_TRIGGERS;
DROP TABLE IF EXISTS QRTZ_BLOB_TRIGGERS;
DROP TABLE IF EXISTS QRTZ_TRIGGERS;
DROP TABLE IF EXISTS QRTZ_JOB_DETAILS;
DROP TABLE IF EXISTS QRTZ_CALENDARS;

CREATE TABLE QRTZ_JOB_DETAILS(
JOB_NAME VARCHAR(80) NOT NULL,
JOB_GROUP VARCHAR(80) NOT NULL,
DESCRIPTION VARCHAR(120) NULL,
JOB_CLASS_NAME VARCHAR(128) NOT NULL,
IS_DURABLE VARCHAR(1) NOT NULL,
IS_VOLATILE VARCHAR(1) NOT NULL,
IS_STATEFUL VARCHAR(1) NOT NULL,
REQUESTS_RECOVERY VARCHAR(1) NOT NULL,
JOB_DATA BLOB NULL,
PRIMARY KEY (JOB_NAME,JOB_GROUP))
TYPE=InnoDB;

CREATE TABLE QRTZ_JOB_LISTENERS (
JOB_NAME VARCHAR(80) NOT NULL,
JOB_GROUP VARCHAR(80) NOT NULL,
JOB_LISTENER VARCHAR(80) NOT NULL,
PRIMARY KEY (JOB_NAME,JOB_GROUP,JOB_LISTENER),
INDEX (JOB_NAME, JOB_GROUP),
FOREIGN KEY (JOB_NAME,JOB_GROUP)
REFERENCES QRTZ_JOB_DETAILS(JOB_NAME,JOB_GROUP))
TYPE=InnoDB;

CREATE TABLE QRTZ_TRIGGERS (
TRIGGER_NAME VARCHAR(80) NOT NULL,
TRIGGER_GROUP VARCHAR(80) NOT NULL,
JOB_NAME VARCHAR(80) NOT NULL,
JOB_GROUP VARCHAR(80) NOT NULL,
IS_VOLATILE VARCHAR(1) NOT NULL,
DESCRIPTION VARCHAR(120) NULL,
NEXT_FIRE_TIME BIGINT(13) NULL,
PREV_FIRE_TIME BIGINT(13) NULL,
TRIGGER_STATE VARCHAR(16) NOT NULL,
TRIGGER_TYPE VARCHAR(8) NOT NULL,
START_TIME BIGINT(13) NOT NULL,
END_TIME BIGINT(13) NULL,
CALENDAR_NAME VARCHAR(80) NULL,
MISFIRE_INSTR SMALLINT(2) NULL,
JOB_DATA BLOB NULL,
PRIMARY KEY (TRIGGER_NAME,TRIGGER_GROUP),
INDEX (JOB_NAME, JOB_GROUP),
FOREIGN KEY (JOB_NAME,JOB_GROUP)
REFERENCES QRTZ_JOB_DETAILS(JOB_NAME,JOB_GROUP))
TYPE=InnoDB;

CREATE TABLE QRTZ_SIMPLE_TRIGGERS (
TRIGGER_NAME VARCHAR(80) NOT NULL,
TRIGGER_GROUP VARCHAR(80) NOT NULL,
REPEAT_COUNT BIGINT(7) NOT NULL,
REPEAT_INTERVAL BIGINT(12) NOT NULL,
TIMES_TRIGGERED BIGINT(7) NOT NULL,
PRIMARY KEY (TRIGGER_NAME,TRIGGER_GROUP),
INDEX (TRIGGER_NAME, TRIGGER_GROUP),
FOREIGN KEY (TRIGGER_NAME,TRIGGER_GROUP)
REFERENCES QRTZ_TRIGGERS(TRIGGER_NAME,TRIGGER_GROUP))
TYPE=InnoDB;

CREATE TABLE QRTZ_CRON_TRIGGERS (
TRIGGER_NAME VARCHAR(80) NOT NULL,
TRIGGER_GROUP VARCHAR(80) NOT NULL,
CRON_EXPRESSION VARCHAR(80) NOT NULL,
TIME_ZONE_ID VARCHAR(80),
PRIMARY KEY (TRIGGER_NAME,TRIGGER_GROUP),
INDEX (TRIGGER_NAME, TRIGGER_GROUP),
FOREIGN KEY (TRIGGER_NAME,TRIGGER_GROUP)
REFERENCES QRTZ_TRIGGERS(TRIGGER_NAME,TRIGGER_GROUP))
TYPE=InnoDB;

CREATE TABLE QRTZ_BLOB_TRIGGERS (
TRIGGER_NAME VARCHAR(80) NOT NULL,
TRIGGER_GROUP VARCHAR(80) NOT NULL,
BLOB_DATA BLOB NULL,
PRIMARY KEY (TRIGGER_NAME,TRIGGER_GROUP),
INDEX (TRIGGER_NAME, TRIGGER_GROUP),
FOREIGN KEY (TRIGGER_NAME,TRIGGER_GROUP)
REFERENCES QRTZ_TRIGGERS(TRIGGER_NAME,TRIGGER_GROUP))
TYPE=InnoDB;

CREATE TABLE QRTZ_TRIGGER_LISTENERS (
TRIGGER_NAME VARCHAR(80) NOT NULL,
TRIGGER_GROUP VARCHAR(80) NOT NULL,
TRIGGER_LISTENER VARCHAR(80) NOT NULL,
PRIMARY KEY (TRIGGER_NAME,TRIGGER_GROUP,TRIGGER_LISTENER),
INDEX (TRIGGER_NAME, TRIGGER_GROUP),
FOREIGN KEY (TRIGGER_NAME,TRIGGER_GROUP)
REFERENCES QRTZ_TRIGGERS(TRIGGER_NAME,TRIGGER_GROUP))
TYPE=InnoDB;

CREATE TABLE QRTZ_CALENDARS (
CALENDAR_NAME VARCHAR(80) NOT NULL,
CALENDAR BLOB NOT NULL,
PRIMARY KEY (CALENDAR_NAME))
TYPE=InnoDB;

CREATE TABLE QRTZ_PAUSED_TRIGGER_GRPS (
TRIGGER_GROUP VARCHAR(80) NOT NULL,
PRIMARY KEY (TRIGGER_GROUP))
TYPE=InnoDB;

CREATE TABLE QRTZ_FIRED_TRIGGERS (
ENTRY_ID VARCHAR(95) NOT NULL,
TRIGGER_NAME VARCHAR(80) NOT NULL,
TRIGGER_GROUP VARCHAR(80) NOT NULL,
IS_VOLATILE VARCHAR(1) NOT NULL,
INSTANCE_NAME VARCHAR(80) NOT NULL,
FIRED_TIME BIGINT(13) NOT NULL,
STATE VARCHAR(16) NOT NULL,
JOB_NAME VARCHAR(80) NULL,
JOB_GROUP VARCHAR(80) NULL,
IS_STATEFUL VARCHAR(1) NULL,
REQUESTS_RECOVERY VARCHAR(1) NULL,
PRIMARY KEY (ENTRY_ID))
TYPE=InnoDB;

CREATE TABLE QRTZ_SCHEDULER_STATE (
INSTANCE_NAME VARCHAR(80) NOT NULL,
LAST_CHECKIN_TIME BIGINT(13) NOT NULL,CHECKIN_INTERVAL BIGINT(13) NOT NULL,
RECOVERER VARCHAR(80) NULL,
PRIMARY KEY (INSTANCE_NAME))
TYPE=InnoDB;

CREATE TABLE QRTZ_LOCKS (
LOCK_NAME VARCHAR(40) NOT NULL,
PRIMARY KEY (LOCK_NAME))
TYPE=InnoDB;

INSERT INTO QRTZ_LOCKS values('TRIGGER_ACCESS');
INSERT INTO QRTZ_LOCKS values('JOB_ACCESS');
INSERT INTO QRTZ_LOCKS values('CALENDAR_ACCESS');
INSERT INTO QRTZ_LOCKS values('STATE_ACCESS');
INSERT INTO QRTZ_LOCKS values('MISFIRE_ACCESS');
commit;


DROP TABLE IF EXISTS ODE_JOB;

CREATE TABLE ODE_JOB (
jobid CHAR(64) NOT NULL DEFAULT '',
ts BIGINT NOT NULL DEFAULT 0,
nodeid char(64) NULL,
scheduled int NOT NULL DEFAULT 0,
transacted int NOT NULL DEFAULT 0,
details blob(4096) NULL,
PRIMARY KEY(jobid),
INDEX IDX_ODE_JOB_TS(ts),
INDEX IDX_ODE_JOB_NODEID(nodeid)
)
TYPE=InnoDB;

create table LARGE_DATA (ID bigint not null auto_increment, BIN_DATA blob, INSERT_TIME datetime, MLOCK integer not null, primary key (ID));

COMMIT;


after creation of tables, but before deploy the new ode custom war delete the jta impelemtation provided in WEB-INF/lib/geronimo-jta_1.1_spec-1.1.jar Simply delete the file.

Repack the war or keep it unpack (as I prefere in this customization) and deploy it copying to your JBoss server deploy directory.

Your apache ode is ready to go.
One more thing:
start your JBOSS with
JAVA_OPTS="-Dode.persistence=hibernate"

And welcome to the open ODE, hosted on JBOSS and MySql.

venerdì 13 giugno 2008

Fourth day of the Enterprise 2.0 conf

Day four is been full of stuff to do and no minutes to waiste. Starting with a ealy breakfast, with a round trip in the lounge and breakfast room to search for and talk with people.

After breakfast Hotel checkout items. Funny, it's first time I do an "express checkout". No human interface. Only check the bill and put the authorization for the expenses into a bowl.
Thinking about how no-social is, and on the other side time and resource save for the infrastructure; however standard checkout is available. I, as a digital social community oriented, choose for express checkout and invoice via e-mail.

The first speech I attend is about opensource and Enterprise 2.0. Three opensource party:
Bob bickel: for ringside. A new company thatis focus on creating a new community open source platform.
John Newton: Alfresco. CMS is transforming. Content as a service, in the enterprise but coming also from customer.
Jeff Whatcodd, acquia. Acquia is building opensource on Drupal. 2.0 success with 2.0 features.
Networking works fine in this session.

Session two is the "Lockeed Martin case study". The hall was over full. No seat available, and no air to breath. I attended, with others 10, all the speech standing up.
Interesting case, but at the end of the day is another "networking" oriented platform. We have wiki, we have blog, we have networking. On top of Sharepoint.

The third and last speech was a panel of bloggers that talk about "Microbologgin". Panel is @chrisbrogan @pistachio @dennishowlett @1938media @rhappe.

Some interensting stuff comes out from that discussion. At first point no one is able to convince on implementation/success case of microblog in enterprise.
Some random notes:
@crisbrogan says brevity scares the enterprise. This tools need serving suggestion. sharing, presence, journalism, styleish ...
@pistachio: sharing business card is superorganize. against community.
twitter allows natural ways to connect and exchange. Culturally shocking allow people communicate at different level. Twitter is not ready for the enterprise
@dennishowlett the most important thing out there for you, if you have one, regardless, is your blog, personal & enterprise. they follow me. I dont care to follow them.
@rhappe: information that go out of the enterprise, cannot be regulated.

I learned the concept of "Continous Partial Attention" that define in a amazing way the approach of microblogging. After the panel, a little break and then in the hall, for a wrap up.

An easy retrospective. Fun is apologize about the awkward wifi (that worked well only when we were leaving) and the request -I agree at all- of more warm environment; we where in a freezer. And it's time to leave, with purpose of join in Enterprise 2009 - will be 2.1 ?

Thankyou all for the great event.

mercoledì 11 giugno 2008

Third day of the Enterprise 2.0 conf

Morning started fine, finally I sleep for more than 4 hours. After a quick shower and a inroom wakecup of starbuck coffee, agent Michele is ready to go.

Breakfast in a meeting room, during while I meet some people from France, one Taiwan and one from Singapore. Everyone has been asked by me: why you are here ? what are you looking for ? But I have been answered always with "confused" response... that I can summarize with "looking for knowledge".
That's it.

everyone is looking for knowledge and other experience in this Enterprise 2.0 hype. The basic needs is to have more communications and socialization
Today, again, network doesn't work, despite to apologize from Westing and technical effort of the internet provider.

The first meet I attend is "Enterprise 2.0 Tools: A Critical Evaluation" by Tony Byrne, Founder CMS watch. It has been really interesting and pointed out, in a structured way which are some issue in evaluating vendor and tools and to match it in business area. Areas are defined in very high level, but really interesting. The most interesting outcome, for me, is that each of the software solution on the market is network oriented and not Social oriented; we are far away from social orientation.

Then I moved in the keynote hall for the big presentation. First to speech is Oracle, talks about "Power to the People: Driving Business Innovation through Communities" by Mark Woollen that point out the "obvius". People in organization are "hierarchy organized".
Then came wachovia, that talks about "context social awareness" and introduce me the concept of "Generation Y worker".
Pfizer talk about his impelemtation of a wikipedia like knowledge base and bring "meet charlie" as example. Interesting and fun a tag cloud showed about their work when the most relevant word is "scrappy".
After some blackout (slides/pc/break) is Sony's turn to speech. They talks about their 3 years plan, started and in progress, to communitize groups. A lot of tools, for a lot of activities.
Then a little break.

The Lunch Panel Finalist. A short advertise, 5 minutes each, to promote his product and ask for voting. In list are: newsgator, groupswim, spaceo.us, socialSite and veodia. Running and live demo from spaceo.us and veodia. The winner is veodia that showed us a realtime streaming from the Panel.

Finally the lunch in Pavillon. During lunch we meet and asked info for a lot of tools. In short we talked to: traction software, veodia and connectbeam.

It's time for a panel about mashup. Sadly this is the worst panel I attended, because no-one of the partecipants ( New Markets, Microsoft and IBM ) demostrated a solid knowledege in mashup and in their implementation. Only marketing knowleadge, good to pre-sale consultancy.

Panel: Title is "Soocial Computing Platforms: Three Alternatives for the Enterprise". Partecipants are nGenera Corporation, sabre Holdings, Microsoft and Jive Software. The discussion has been not so hot, with outstanding Jiva and bad Microsoft attitudes; the say "
people buy from Microsoft because they will be around, like IBM, for quite some time". This is frustrating. Is this Social Microsoft a new Ibm ?
Brian from nGenera indicate a "preference to take customers to an on demand model"; in my opinion we are far forward from this. Maybe Brian is Vintage and nostalgic guy. Outstanding is the moderator, the funniest ever seen in this Conference days. He is Jevon MacDonald and define himself as "Enterprise Irregular Contibutor", runs Firestoker the first low cost social community platform.

After this panel, back to the demo pavillion and contacted Jive and Newsgator. Some drink and then the day is over.

Dinner at Union Oyster House. It's my preferred place, so old and traditional, and so good seafood. Drink a Harpoon dark beer and boiled medium Lobster with potates. But before Lobster a crok of Oyster stew.
Wonderful.

Back to the hotel with a "cab adventure". The taxi driver was in trouble because unable to find his mobile phone. So we went around, in some streets in Boston, to ask friend and collegue if anyone has seen his mobile. After a no sucessfull search he remembered that his phone has been stoled from the back seat from a girl, he take for a drive before me. So went to his brother and get the brother's phone, start calling his mobile, and asking me to hear if it is around the cab. No way. The phone is not there.
After a while of in cab searching he said "I know, that girl has stolen my phone" and called his wife to give her the bad notice. But the phone was at home, in his wife's hands !!

After half an hour of trouble, he bring me to my hotel - and miss the hotel bringing me to another one. An excellent real life, Boston adventure.

And now it's time to rest.

martedì 10 giugno 2008

Second day of the Enterprise 2.0 conf

the morning begin with a powerful headache. Your special agent Michele is ready for action.
After some liters of Starbuck, auto brewed in room, bold coffee I went into the lobby for the breakfast. Light breakfast with a lot of fruit to avoid heavy digestion.

At 8.20 meet a collegue and take place in the big empty and freezed conference room for the keynotes. Network wifi support, here in Westin, become worst every minutes.

After a brief introduction, the first speach is by Fedex that illustrate us how the network evolves. And they are a phisical network, with a lot of IT network, to deliver on time services.
Next google talk us about their network application, and working in the cloud. Temperature goes down, and I must dress me more ! Outside is 35C and inside is 16!

After Google, there is a fun, interesting and more community oriented speech by AIIM that summons on "Age doesn't matter. Culture matters". This has been my preferred morning sketch because presented by two people that interact between them. Not the classical client-server presentation in enterprise 1.0 style.

Meanwhile the wifi network is a yo-yo. Available for seconds and off for minutes. That network instability demonstrated us that connectivity is most important.

The last speech of the morning is from SocialText. Gregory Webb talk about putting Social Software 2.0 to work for organization. I found some of ideas of the developer 2.0, in that speech, especially regarding the Social Spreadsheet. A spreadsheet that is able to host in each cell a wiki page. It's a good starting point to have one-place to create a software product, made up of lot of pieces with different menas ( code, alghoritms, documentation, explanation, test ).

Then the pavillions with demo and stands open, with 2 hours available to visit each stand and have lunch. Offer by Oracle. Today's lunch is cold buffet, with some pasta (ultra-cooked), some mexican like tortillas, chicken and chicken sandwich. No fruits at all, and iced green tea for drinks.

After this, I need and I deserve a Lobster at Oyster Union House. But this is another story.

In the afternoon
, at 13.30 a talk from Thomas Vander Wal. About tags, and usage of tagging in corporation. Some goods idea, some interesting topics that refine my idea of tagging. When tagging focus on "Human, object, related terms".

Next speech is a panel of bloggers that try to describe us the importance of logging, upon their experience. Blogs are very personal, but social creature; blogs are a sort of need to be connected to others. A lesson learned from them is blogging is about telling others how do you live/work/act. A good example is the blog "Running an hospital" that help CEO (the blogger) to communicate with others.

After speechs, back into pavillion to look at demoes (Social Spreadsheet) and tools available.

But the best has to come.

Dinner at Union Oyster House with
"Lazy Man Lobster".

Lazy Man because Lobster is ready to eat, without the difficult part of cut and crunch it (and seems like a tourist).

It has been an hard day, full of new things, thinks and learns. This conference is not so social oriented, it's in standard client-server mode. A really hard part is finding some commons stuff to create interest in peoples to start a discussion or creating a contacts; and not beeing english motherlanguage doesn't help at all.

Boston images available