Here's a transcript of today's IRC chat.
[09:19:29] <boisvert> Alright, let's get started
[09:19:44] <boisvert> What shall we talk about first?
[09:19:50] <boisvert> deployment state terminology?
[09:19:58] <mszefler> ooh. that sounds like fun.
[09:19:59] <lance> that would be great
[09:20:19] <lance> I think Assaf has an oustanding question
[09:21:33] <assaf> then I don't remember what it was :-)
[09:21:48] <mszefler> why would i want to deploy and not install
[09:21:53] <mszefler> i think that is the question
[09:21:53] <boisvert> i think so far we had the following for process
definitions:
[09:21:58] <boisvert> active/retired
[09:22:01] <lance> you where asking about the distinction between
"deployed" and "installed"
[09:22:01] <boisvert> started/stopped
[09:22:17] <assaf> yep
[09:22:37] prb_ [EMAIL PROTECTED] has joined #apache-ode
[09:22:43] <prb_> Hi, All.
[09:22:47] <boisvert> isn't stopped the equivalent of "deployed" but not
"installed" ?
[09:22:54] <mszefler> ok , before we get any further we should nail down
all those things that are not controversial
[09:23:10] <mszefler> if i may, i can summarize.
[09:24:19] <mszefler> deploy and undeploy have the conventional meaning.
by deploying, a user makes a certain deployment unit known to the server.
[09:24:34] <mszefler> undeploying has the opposite effect. it removes
all traces of the deployment unit from the server.
[09:24:45] <mszefler> everyone ok with that?
[09:24:56] <lance> I am
[09:24:59] <assaf> so far
[09:25:08] <mszefler> ok. next one is activated/retired
[09:26:03] <mszefler> A process is activated if it can create new
instances. if it cannot create new instances it is considered retired.
So ,work can occur on behalf of retired and activated process, but only
activated processes can "createInstance"
[09:26:14] <mszefler> ok?
[09:26:24] <assaf> +1
[09:26:41] <lance> I think we have skipped a state
[09:26:57] <mszefler> Which one?
[09:27:13] <lance> before it can be active does it need to be
"started"/"installed"?
[09:27:16] <mszefler> ok..
[09:27:22] <mszefler> that is what i consider "controversial"
[09:27:31] <mszefler> i want to get the agreed definitions down
[09:28:05] <mszefler> (first)
[09:28:16] <lance> sorry - I thought we were walking a state transition
as well - so - I'm okay with the active definition
[09:28:40] <mszefler> alright. so lets agree to use deploy/undeploy,
active/retire only when referring to these states
[09:28:44] <mszefler> otherwise it get confusing.
[09:28:57] <lance> yep - I agree with those definitions
[09:29:23] <mszefler> now I see another use case that our present
definitions dont cover.
[09:29:52] <mszefler> i.e. the user wants to temporarily prevent work
from being performed on behalf of a process
[09:30:07] <mszefler> that is, no process instances will make any
progress when the process is in this state
[09:31:21] <mszefler> comments welcome at this point.
[09:31:53] <assaf> bulk suspend process instances?
[09:32:04] <mszefler> kind of
[09:32:10] <mszefler> more like an on/off switch for the process
[09:32:18] <lance> so - based on the mailing list - I think we have been
calling this state - "started"/"stopped"
[09:32:21] <mszefler> no current instances proceed, no new instances
created.
[09:32:34] <assaf> shouldn't we keep it that way?
[09:32:35] <mszefler> we've been using all sorts of terminology
[09:32:54] <mszefler> i actually don't like start/stop for reasons i
will describe in a second.
[09:33:17] <boisvert> how about enabled/disabled ?
[09:33:21] <assaf> regardless of terminology, we're adding a state for
what is already covered by two other states
[09:33:42] <lance> enabled/disabled is fine with me
[09:34:05] <mszefler> what is covered by what assaf?
[09:34:28] <boisvert> i see a slight semantic difference between
suspending all instances + retiring the process definition and
"disabling" the process definition
[09:34:29] <assaf> retire + suspend => no instance is executed or started
[09:34:59] <mszefler> you mean retire + (forall isntances) suspend
[09:35:08] <lance> I don't think we have introduced suspend yet?
[09:35:17] <mszefler> exactly.
[09:35:54] <boisvert> Ode currently has suspend/resume on instances, yes
[09:36:13] <boisvert> (which hasn't been discussed yet)
[09:36:23] <mszefler> but not on the process as a whole.
[09:36:31] <boisvert> Correct
[09:37:01] <mszefler> we could include this new state on the same state
dimension, i.e. process can be active, retired, or suspended
[09:37:45] <boisvert> I think that's a good idea
[09:37:53] <lance> can we talk about scope on that
[09:38:00] <mszefler> sure
[09:38:23] <lance> I have been thinking the scope of active/retired was
at the PID+version level
[09:39:12] <lance> where enabled/disabled or suspend ( not sure were we
are on that ) was at the PID level
[09:39:36] <mszefler> or process level vs deployment unit level
[09:40:17] <lance> yeah - perhaps it makes sense to finish the
definitions and then apply scope
[09:41:16] <mszefler> ok. so whatever scope we use, lets reserve
enabled/disabled and suspended for this use case
[09:41:32] <mszefler> i.e. user wants to prevent work from happening
[09:41:35] <lance> agreed
[09:42:19] <mszefler> Now i think there is a completely separate
dimension that I like to call started/stopped
[09:42:43] <lance> did we agree on "enabled"/"disabled"?
[09:42:44] <mszefler> this is unlike the other dimensions in that it is
there for the benefit of the IL, not the user.
[09:43:06] <mszefler> i'm good with reserving all three terms
[09:43:25] <mszefler> dependning on the scope either disabbled or
suspened may turn out to be more appropriate
[09:43:34] <lance> okay
[09:44:01] <mszefler> ok. so back to start/stoped.
[09:44:38] <mszefler> unlike the other dimensions, this state is
transient, and unknown to the user
[09:45:11] <mszefler> it is necessary in order to facilitate an orderdly
startup to the intergration layer
[09:45:28] <mszefler> for example:
[09:46:34] <mszefler> an il may deploy a binding together with a
process, it may need to ensure that before work starts on behalf of a
process that the necessary sockets are created. so the bpelserver
provides a way the IL to defer startup of processes
[09:47:21] <mszefler> these are the start(..), startAll().. methods i
suggested
[09:47:30] <mszefler> does this make sense?
[09:48:11] <lance> are processes availble to the management API prior to
start()?
[09:48:36] <mszefler> i would think so yes.
[09:49:33] <lance> so there would need to be some state implied - no?
[09:50:04] <lance> can a process be "enabled" prior to start()?
[09:50:07] <mszefler> yes
[09:50:09] <mszefler> definately
[09:50:10] <assaf> like a starting state
[09:50:46] <mszefler> enabled survives shutdown, "started" does not.
[09:51:15] <mszefler> so if a process were enabled, and the system came
back up the process would continue to be enabled, although it would not
be started until the IL chose to start it
[09:52:32] <lance> right - but if I were to query the repository - would
I know that a particular process was not running because it was not started?
[09:53:26] <mszefler> depends if we want to expose this
[09:54:03] <lance> if I am trying to figure out why my messages a
bouncing I think we need to
[09:54:21] <mszefler> yeah good point.
[09:54:47] <mszefler> theoretically, the il should make sure that all
processes are started.
[09:55:11] <mszefler> but i guess that could be violated.
[09:55:11] <Matthieu> are there use cases where we wouldn't have an
error and this state would last more than a second?
[09:55:28] <mszefler> they are kind of degenerate use cases
[09:55:32] <mszefler> if for example in jbi
[09:55:49] <mszefler> I undepoy the SA, but for some reason, the server
is not notified of the undeployment
[09:56:03] <mszefler> then the JBI IL might not start a process even if
it is deployed on the server
[09:56:47] <mszefler> although i could imagine more legitimate use cases too
[09:57:36] <assaf> can the user fix that?
[09:57:48] <mszefler> they can undeploy using the PMAPI
[09:58:18] <mszefler> or maybe not.... lets see
[09:58:24] <assaf> but they can't fix the JBI code the way you flip a
process from activated to retired?
[09:59:01] <assaf> that definitely should end up as an error in the log
[09:59:13] <assaf> but unless we expect it to happen frequently ...
[09:59:23] <mszefler> yeah. it seems like if the IL is written correctly
everything will start
[09:59:52] <Matthieu> or fail with an error
[09:59:55] <mszefler> yeah
[10:00:21] <assaf> then I suggest we don't expose it, API or UI
[10:01:28] <lance> so I am hearing that we internally have this state
"started"/"stopped" however it is not exposed to the client ( other than
implicitly through the start() to the IL )?
[10:01:46] <mszefler> yeah. the problem you pointed out should happen
only if the deployment state of the server and IL gets out of synch.
Which of course, should not happen.
[10:02:17] <lance> and the recourse is to restart the IL?
[10:02:41] <mszefler> Well if the IL is written poorly, then there is no
recourse.
[10:02:49] <assaf> undeploy the process?
[10:02:57] <mszefler> yeah, hard undeploy
[10:03:12] <mszefler> i view this as an IL bug though.
[10:03:24] <mszefler> since the IL has a lot of methods that can inspect
the deployment state of the server
[10:03:28] <mszefler> it has no excuse for messing it up
[10:03:33] <lance> right - I should have said - fix the IL and retart
[10:05:07] <lance> this sounds okay to me
[10:06:29] <mszefler> Ok, any other comments on this issue?
[10:07:12] <lance> when you say "since the IL has a lot of methods ..."
- it would not see this "stopped" state - correct?
[10:07:35] <mszefler> no. implicitly it knows the process is stopped
(because it has not started it)
[10:08:02] <mszefler> every process is stopped when the IL starts up.
[10:08:23] <lance> right "implicitly" - there is no way for the IL to
explicitly ask using some management method - correct?
[10:08:28] <mszefler> correct
[10:08:38] <lance> okay - thanks for the clarification
[10:10:16] <Matthieu> cool, any other state? like "maybe started"?
[10:10:26] <lance> do folks have time to talk about scope or should we
save that? I think Alex has a few things to discuss as well?
[10:10:27] <mszefler> So I think now we have the terminology we can all
agree on (active,retired) (enabled/disabled|suspended) and
(started,stopped). and hopefully we'll all know what we mean from now on .
[10:10:45] <lance> agreed
[10:10:55] <mszefler> scope seems like a natural next step
[10:11:06] <mszefler> alex what did you have on the agenda?
[10:11:32] <assaf> I'm lost: deployed undeployed?
[10:12:02] <mszefler> huh?
[10:12:31] <boisvert> We could talk about the Content API next --
assuming we are clear on the deployment terminology :)
[10:12:46] <mszefler> is assaf really lost?
[10:13:08] <lance> I would rather finish out the scope discussion before
moving on the to Content API.
[10:13:11] <assaf> what happened to deployed/undeployed?
[10:13:19] <mszefler> oh. forgot about that.
[10:13:34] <mszefler> should be on the list
[10:13:43] <boisvert> Yes, I think it's a good idea to complete the
scope discussion
[10:13:45] <assaf> I'm counting how many things I can do with a process
definition
[10:14:03] <assaf> and wondering, where's the cheatsheet :-)
[10:14:29] <boisvert> Maciej, could you summarize your understanding for
Assaf?
[10:14:43] <boisvert> (and the rest of us!)
[10:14:57] <mszefler> in an email i take it?
[10:15:12] <boisvert> i think it would help before we move on to scope
[10:15:34] <mszefler> OK.
[10:15:35] <mszefler> summary
[10:15:41] <mszefler> User-Level Process States
[10:15:59] <mszefler> - Undeployed - Process is unknown to the server.
Blissful ignorance.
[10:16:48] <mszefler> Deployed - Process has been made available to the
BpelServer by the user (mediated by the IL). Process is in server's
persistent storage and accessible to PMAPI methods.
[10:17:29] <mszefler> Active - Process is acting "normally". Can create
new instances.
[10:17:52] <mszefler> Retired - existing instances of a process can
execute, but new instances cannot be created.
[10:18:21] <mszefler> Disabled/Suspended - Existing instances of a
process cannot execute, new instances cannot be created.
[10:18:43] <mszefler> INTEGRATION LAYER STATES
[10:19:20] <mszefler> Stopped - No activity occurs on behalf of the
process regardless of USER-level state
[10:19:36] <mszefler> Started - Activity occurs on behalf of process per
USER-level state restriction.
[10:20:11] <mszefler> When BPelServer is started, all processes are in
the STOPPED state. IL must start each process, by invoking the
start(PID), start(DU), or startAll methods.
[10:20:21] <mszefler> -fin-
[10:20:48] <boisvert> (i'm digesting)
[10:22:24] <assaf> I'm clear
[10:23:51] <lance> sorry - just had a few more thoughts - when the IL is
starting up wouldn't it starve a process of events until everything (
i.e. sockets ) is ready?
[10:24:24] <lance> perhaps timers would not fall into that
[10:24:26] <mszefler> there may be timer events in the engine
[10:24:32] <lance> :)
[10:24:52] <lance> I'm done
[10:24:59] <lance> with questions
[10:25:40] <h2o> I have one.. what about some auto-start after IL startup?
[10:26:05] <mszefler> autostart?
[10:26:38] <h2o> you said - "IL must start each process, by invoking..."
etc.
[10:26:55] <mszefler> well, instead of autostart. it can call startAll()
[10:27:08] <mszefler> depending on the IL, that may be all that is necessary
[10:27:20] <h2o> and having the IL call startAll would be external or a
prefs setting
[10:27:30] <mszefler> it would be up to the IL implementation.
[10:27:45] <h2o> OK, thats it
[10:28:18] <h2o> was thinking about unattended operation and rebooting etc.
[10:28:53] <mszefler> the theory is that the IL will call start on all
the things that need starting. So after reboot, the IL would do this.
[10:29:35] <mszefler> again, these are not user-visible states, so a
restart will be indistinguishable from a normal startup
[10:30:20] <mszefler> ok. scope?
[10:30:33] <lance> yep
[10:32:08] <lance> can we define the different scope levels ( i.e.
Package,PID,PID+version)?
[10:32:37] <mszefler> Sounds good, go ahead.
[10:33:14] <lance> I noticed that you/Matthieu have defined something
called a DeploymentUnit?
[10:34:00] <mszefler> i thought that was from the deployment spec.
[10:34:08] <lance> so the scope levels would be DeploymentUnit,process
definition,process definition + version
[10:34:28] <boisvert> Yes
[10:34:51] <boisvert> how about "package", "process" and "version" scope ?
[10:35:13] <boisvert> to simplify the terminology
[10:35:37] <boisvert> Am I correct to say that a package (deployment
unit) can have multiple processes?
[10:35:38] <mszefler> did we come to a conclusion on the concept of
version as distinct from process?
[10:35:46] <lance> yes - I did define a deployment unit however I was
thinking it would not be maintained by the ODE process definition
repository. If folks think it makes sense to retain the concept in the
repository I'm okay with a that
[10:36:29] <lance> my understanding is that a package can have n processes
[10:36:39] <assaf> I think it does
[10:36:42] <mszefler> yes
[10:37:00] <lance> yes - I think version is distinct from process
[10:37:33] <mszefler> does version n+1 of a process have the same PID
and version n
[10:37:34] <mszefler> ?
[10:37:53] <boisvert> i think we go back to the definition of a version
[10:37:53] <mszefler> (s/and/as/)
[10:37:54] <lance> that has been my thinking
[10:38:15] <assaf> PID no, process name yes?
[10:38:36] <mszefler> process name is kind of an ambiguous concept
[10:38:43] <mszefler> there is the process definition name
[10:38:46] <mszefler> then there is the PID
[10:38:50] <mszefler> often the two are the same
[10:40:06] <lance> In this context I was thinking PID = process QName
[10:40:27] <mszefler> as distinct from process definition qname?
[10:40:38] <mszefler> or you mean PID=process definition qname?
[10:40:40] <lance> so when talking about scope (package,PID,version) I
am thinking about what is visible to the user
[10:41:02] <mszefler> ok perhaps we should have a naming interlude here
[10:41:33] <mszefler> the way PID is used in the API right now is
distinct from the process definition qname
[10:41:58] <mszefler> you can for example deploy the same process
definition in two deployment units (or in the same unit for that matter)
under different PIDs
[10:42:30] <mszefler> so to use the Java Analogy, Process Definition
QName is like a class. PID is like an object.
[10:43:07] <boisvert> Wouldn't this be confusing for the user?
[10:43:16] <lance> right - however the PID is user defined - correct?
[10:43:20] <mszefler> yes
[10:43:32] <mszefler> although it defaults to the process definition
namespace
[10:43:46] <mszefler> s/namespace/QName
[10:44:10] <lance> right - but its not some ID assigned by the
engine/compiler
[10:44:21] <mszefler> correct
[10:44:59] <mszefler> i think reuse of process requires this distinction
[10:45:06] <boisvert> given a PID, I can retrieve a unique process qname
and version?
[10:45:24] <lance> so when the user is interacting with the PMAPI they
will want to manage things through this PID
[10:45:30] <mszefler> lance- yes
[10:45:36] <mszefler> boisvert- no version in the api yet
[10:45:51] <mszefler> boisvert- but yes you could get the definition
qname given the pid
[10:46:22] <lance> so from a scoping standpoint that is why I see a PID
having multiple versions
[10:46:30] <boisvert> is it the intent to have a one-to-one mapping
between PID <-> Process QName + Version ?
[10:46:47] <mszefler> i dont think so
[10:47:05] <lance> I think its one to many
[10:47:12] <boisvert> so if I undeploy a process through the PM-API, do
I pass PID (only) or PID + Version ?
[10:47:13] <mszefler> i think its PID+version 1-->*Process QNAME
[10:47:22] <mszefler> right now PID
[10:47:25] <mszefler> future ?
[10:47:48] <boisvert> I thought we agreed that multiple versions of a
process have the same process qname
[10:48:11] <mszefler> i doubt that
[10:48:18] <mszefler> perhaps the same pid
[10:48:32] <mszefler> the process definition would change from version
to version, so it will have a different name
[10:48:38] <mszefler> or should at least
[10:48:39] <lance> yes - same PID but the process QName could change
[10:48:39] <assaf> how many names can a process have?
[10:49:11] <mszefler> well. one
[10:49:12] <boisvert> I'm confused here; given a PID can I retrieve a
single process definition?
[10:49:18] <boisvert> if not, I don't see the need for the PID
[10:49:38] <mszefler> of course you can.
[10:49:45] <mszefler> given a pid you can get the definition
[10:49:53] <boisvert> not if it has multiple versions
[10:50:20] <mszefler> well in that case you need pid+version
[10:50:21] <assaf> so two processes can have different names but the
same pid name, that's three names
[10:51:44] <lance> I have been thinking that the PID is what the IL uses
for the EPR - the process name doesn't matter
[10:52:07] <mszefler> No, PIDs dont really matter to the IL
[10:52:20] <mszefler> the partnerlinks are given arbitrary qnames
[10:52:27] <mszefler> that have no relation to the PID
[10:53:14] <mszefler> assaf: There is one name for a process its the PID
[10:53:40] <mszefler> the process definition qname is not the same thing
[10:54:19] <assaf> then what is it?
[10:54:28] <mszefler> its the name of the definition.
[10:54:39] <mszefler> i can create a process definition to model a fifo
queue call it "FIFO"
[10:54:56] <mszefler> then i create a PID "ReservationFIFO" that uses
defintiont "FIFO"
[10:55:04] <mszefler> is that not clear?
[10:55:12] <assaf> the use case is not clear
[10:55:25] <mszefler> reuse of process definitions
[10:55:29] <mszefler> is the use case
[10:56:03] <assaf> isn't that just like extending one class to another
without changing a single method?
[10:56:13] <mszefler> no
[10:56:18] <mszefler> its not extension
[10:56:20] <mszefler> its instantiation
[10:56:25] <mszefler> (the analogy)
[10:56:46] <mszefler> each PID can be connected to different endpoint
[10:56:52] <mszefler> it can have different process properties
[10:57:06] <mszefler> only the behavior is the same
[10:57:41] <assaf> that's a deployment
[10:57:53] <mszefler> yep
[10:58:03] <mszefler> depoyment ~ instantitation
[10:58:16] <mszefler> process definition ~ type
[10:58:20] <mszefler> pid ~ instance
[10:58:24] <assaf> (and I'm not too big on deploying the same process
twice either)
[10:59:03] <mszefler> same process definition, different process
[11:00:11] <boisvert> can't you achieve the same thing by copying a
definition and changing the process qname ?
[11:01:05] <mszefler> of course. but thats like rewriting a class
everytime we neeed a new object.
[11:01:16] <mszefler> if we want that, we dont need deploy.xml
[11:01:25] <boisvert> an object is the instantiation of a class
[11:01:26] <mszefler> we can stick all sorts of stuff in .bpel
[11:01:52] <boisvert> same as a process instance being the instantiation
of a process definition, no?
[11:02:01] <mszefler> no
[11:02:14] <mszefler> a process is the instantiation of a process definition
[11:02:38] <mszefler> a process instance is more like a thread
[11:03:37] <boisvert> if a process is the instantiation of a process
definition, what is a process instance?
[11:04:03] <mszefler> a process instance is more like a thread
[11:04:56] <boisvert> i understand want you mean, but i'm uncomfortable
with the concepts
[11:05:20] <boisvert> am i the only one having this issue here?
[11:06:06] <assaf> I'm comfortable with the concepts, just worried that
I'll need a pilot license to deploy my first process
[11:07:54] <lance> I understand the concepts and think we are injecting
flexibility over complexity
[11:08:26] <mszefler> as far as i can tell there are two alternatives:
[11:08:52] <mszefler> 1) process definition is a reusable definition
[11:09:10] <mszefler> 2)process definition is the instantitation of a
process
[11:09:27] <boisvert> process definition ==(instantiate)=> process
==(instantiate)=> instance?
[11:09:29] <mszefler> if you want (2), and want simplicity, you need to
get rid of deploy.xml
[11:09:35] <boisvert> do you see were it gets confusing?
[11:09:58] <mszefler> that's because we're using instantiate twice
[11:10:07] <mszefler> conceptually its not complciated
[11:10:16] <mszefler> its like loading a db schema twice
[11:10:27] <mszefler> and then having multiple rows
[11:10:31] <boisvert> In Java you don't have this difference, AFAIK
[11:10:34] <mszefler> pretty routine concepts.
[11:10:43] <lance> From a development lifecycle standpoint I think 1 is
the better option
[11:11:18] <assaf> you don't have that different in SQL either
[11:11:22] <Matthieu> I think if you replace the "process" step in
Maciej's diagram with process definition+version that instantly gets
more clear
[11:11:29] <assaf> the table schema will always generate the same table
[11:11:54] <mszefler> I can load the same DB schema twice into different
databases
[11:11:58] <mszefler> its exactly the same
[11:12:04] <assaf> different databases
[11:12:10] <mszefler> different processes
[11:12:13] <boisvert> or difference namespaces
[11:12:18] <boisvert> (different)
[11:13:14] <boisvert> i thought the "version" was supposed to get us
this flexibility
[11:13:16] <Matthieu> so are we talking about reusable process
definitions or versioning here? the first can overlap the second but it
also introduces additional complexity
[11:13:36] <boisvert> process => version => instance
[11:13:51] <Matthieu> yep
[11:13:54] <boisvert> a process would be abstract
[11:14:05] <boisvert> a version would be the instantiation of a process
[11:14:18] <boisvert> and an instance (for lack of a better term) would
be the instantiation of a version
[11:15:16] <boisvert> but the problem here is that people say "version"
to mean different process definitions
[11:15:43] <boisvert> which wouldn't necessarily be the case
[11:15:45] <mszefler> different versions of a process definition
necessarily have different qnames
[11:16:10] <assaf> my problem is not understanding the layers of abstraction
[11:16:29] <assaf> but how many people will use this feature ... vs how
many people will have a problem deploying processes because of this feature
[11:16:37] <mszefler> no one will have a problem
[11:17:18] <Matthieu> they will try to redeploy a different definition
with the same process definition qname
[11:18:20] <lance> I thought is was same PID potentially different
process definition qname
[11:19:21] <mszefler> I think we are creating confusion where there is none
[11:20:05] <Matthieu> ok so use case 1
[11:20:17] <Matthieu> I write an hello world : receive / reply
[11:20:33] <Matthieu> I update my hello world to be receive / assign / reply
[11:20:58] <Matthieu> what do I do to deploy this new version while
still having instances of the first version running?
[11:21:28] <mszefler> thats the versioning problem.
[11:21:40] <mszefler> i would imagine if you are a normal person youd
like to do the following:
[11:22:09] <mszefler> if I had a defiitniton HelloWorld/2006/1/1 I would
create a new definition callled HelloWorld/2006/1/2
[11:22:53] <mszefler> Then I would want to deploy this under PID
"MyHelloWorld" which is already running.
[11:23:47] <assaf> I wouldn't
[11:23:52] <Matthieu> there aren't that many normal person out there
[11:24:03] <assaf> I would just deploy again
[11:24:16] <Matthieu> same here
[11:24:37] <mszefler> well if you are sloppy you could still do this
[11:24:47] <boisvert> same here; it's a new version of the process
because it has the same process qname
[11:25:10] <mszefler> no!
[11:25:18] <mszefler> thats forcing people into bad behavior
[11:25:34] <assaf> on the contrary
[11:25:35] <mszefler> if you change a definition, you give it a new name.
[11:25:55] <assaf> I agree with your definition of "sloppy", but let's
be realistic, it's also "productive"
[11:26:00] <boisvert> a new version number is not sufficient?
[11:26:09] <mszefler> there is nothing in this model that prevents
sloppy behavior
[11:26:22] <boisvert> if i don't give you a version number, you can
create one for me
[11:26:24] <mszefler> however your model precludes non-sloppy behavior
[11:26:30] <boisvert> version = existing version + 1
[11:27:09] <mszefler> sure
[11:27:16] <mszefler> you dont need version numbers
[11:27:25] <mszefler> (you dont need to specify them)
[11:27:32] <mszefler> you just need to deploy to the same PID
[11:27:52] <mszefler> you can be sloppy about it (dont specify a pid,
dont change the definitoin qname)
[11:27:58] <boisvert> so what's the benefit of having a PID if the user
always controls the process QName?
[11:28:03] <Matthieu> none
[11:28:15] <boisvert> I thought PID was an engine artifact
[11:28:15] <mszefler> or you can be proper (define a pid, and then
define new qnames for each version of your procesS)
[11:28:29] <mszefler> pid is not an engine artefact
[11:28:34] <mszefler> it is a user defined name
[11:28:46] <mszefler> if it is not specified the process definition name
is used.
[11:29:29] <boisvert> ok, so we're back to the benefit of having a
meta-model with process definition and process versus simply having
processes
[11:29:42] <mszefler> what meta model?
[11:30:06] <lance> Maciej in the current iapi can you please relate ( if
possible ) PID to the param serviceID in BpelEngine.createMessageExchange()?
[11:30:20] <mszefler> there is no relation
[11:30:31] <mszefler> serviceId is defined in the deployment descriptor
for each partner link
[11:30:44] <mszefler> it is user-defined.
[11:31:23] <lance> and this isn't the PID?
[11:31:32] <mszefler> no
[11:31:46] <lance> okay - thanks
[11:31:54] <mszefler> a single process has a pid and multiple service
ids corresponding to each endpoint
[11:32:27] <Matthieu> I think the pid should be nuked from anything public
[11:32:42] <mszefler> disagree completely
[11:32:46] <Matthieu> it's already confusing people here when it comes
to versioninf
[11:32:51] <Matthieu> (versioning)
[11:33:00] <lance> I'm just confused where the map is and need to spend
some time looking into it
[11:34:10] <boisvert> i agree with Matthieu
[11:34:28] <boisvert> i think it would be simpler to have process qname
and version in the APIs
[11:34:38] <mszefler> you are digging a deep hole
[11:35:09] <boisvert> then I need to better understand what is the
requirement for PID and how it fits into the picture
[11:36:08] <mszefler> if you like you can think of the PID as the
definition QName, and never worry about anything else
[11:36:55] <boisvert> that isn't helping me
[11:37:24] <mszefler> the point is that this approach is much more
flexible and still allows the usage pattern you prefer.
[11:37:45] <mszefler> and doesnt force all other users into what i
consider to be a bad practice.
[11:38:28] <assaf> I think most people will follow the bad practice, so
we might as well optimize for that
[11:39:01] <mszefler> theres a difference between optimizing for and
forcing bad practices
[11:39:06] <assaf> (and I'm stating that while disagreeing the bad
practice is actually bad)
[11:39:26] <mszefler> changing a process definition without changing the
name is a bad practice.
[11:40:05] <boisvert> even if you change the version?
[11:40:14] <assaf> I think spending too much time on naming is bad practice
[11:40:19] <mszefler> BPEL spec does not have a version fields
[11:40:27] <assaf> if you're making insignificant changes, don't bother
naming them
[11:40:36] <boisvert> BPEL doesn't have the notion of PID either
[11:40:40] <assaf> if you're making significant changes, make a new
process (under a new name)
[11:40:43] <mszefler> its out of scope
[11:40:52] <mszefler> as are many things
[11:41:13] <assaf> so you get versions of all the "same process, just
changed" which is how most people think of it
[11:41:24] <assaf> and separate processes side by side
[11:43:43] <boisvert> I think it's fair to say that we haven't reached a
level of concensus yet
[11:44:01] <boisvert> Maybe we could develop a set of use-cases
[11:44:17] <boisvert> and then try to apply the various approaches to
these use-cases
[11:44:42] <mszefler> sounds fantastic to me
[11:44:56] <boisvert> It would certainly help me understand the added
value of PIDs :)
[11:45:41] <boisvert> How are we doing on time?
[11:45:55] <boisvert> Time to break or time for the next subject?
[11:46:17] <lance> since I am working on the deployment spec I will
volunteer to write up the use cases
[11:46:36] <boisvert> thanks Lance
[11:46:43] <Matthieu> perfect
[11:46:43] <boisvert> I think I might be able to contribute some too
[11:46:50] <mszefler> i will send you some use cases
[11:47:01] <lance> great - thanks
[11:47:40] <Matthieu> next subject?
[11:48:02] <boisvert> Personally, I'd prefer to continue another time
[11:48:14] <boisvert> Since I had prior engagements for the rest of the
day ... :)
[11:48:33] <lance> agree - another time would be preferrable
[11:48:48] <Matthieu> what about getting to less controversial subjects
that could be close in 10mn? and scheduling the others for next time?
[11:49:09] <boisvert> I'm fine with that
[11:49:17] <Matthieu> actually I'd just like to hear a bit from dims if
he's till here?
[11:50:15] <boisvert> In the mean time, I'd like to make an
'advertisement' for ApacheCon
[11:50:32] <Matthieu> good point
[11:50:44] <boisvert> and suggest that we have some kind of face-to-face
during that time
[11:51:10] <boisvert> it's Oct 11 – 13
[11:51:20] <boisvert> in austin texas
[11:52:27] <Matthieu> http://www.us.apachecon.com
[11:52:38] <Matthieu> dims?
[11:53:02] <Matthieu> are you with us?
[11:53:18] <boisvert> Maybe move to another subject and ping him separately?
[11:53:23] <Matthieu> ok
[11:54:39] <boisvert> Lance, regarding persistent DAO implementation,
did you want to frame the context?
[11:55:35] <lance> Only in that there was talk of moving away from
Hibernate to something else
[11:55:55] <Matthieu> that will be necessary if we want to exit the
incubator at some point
[11:56:16] <Matthieu> I mean exit by the big door and not the little
dark one
[11:57:00] <lance> are there suggestions?
[11:57:44] <boisvert> Apache OpenJPA
[11:57:49] <boisvert> in the incubator I believe
[11:57:52] <Matthieu> yep
[11:58:17] <boisvert> http://incubator.apache.org/openjpa/index.html
[11:58:28] <boisvert> it's an offspring of BEA Kodo
[11:58:59] <lance> okay - I'll look into that
[11:59:39] <boisvert> no other good suggestion on my side
[12:00:12] <boisvert> beyond manually-coded JDBC or perhaps Spring JDBC
[12:01:03] <boisvert> Ok, then let's break folks
[12:01:12] <boisvert> and try to reconvence next week?
[12:01:12] <Matthieu> for the project website I think we can agree on a
structure (left menu content) offline
[12:01:20] <Matthieu> I'll send a mail about it
[12:01:23] <Matthieu> yep
[12:01:32] <lance> sounds good
[12:02:57] lance [EMAIL PROTECTED] has quit IRC: "CGI:IRC
(EOF)"
### End of existing data buffer.