It's all about the answers!

Ask a question

for changesets with multiple workitems, how to know the stream for each workitem

Jay Witherspoon (1368) | asked Feb 17 '14, 12:21 p.m.
When a changeset is associated with multiple workitems for multiple streams, how can you tell which stream each workitem is for using the plain java API?  Let me give an example...
workitem 1 is fixed with a changeset
then that changeset is delivered to another stream with workitem 2
then another stream with workitem 3

Later, I do a IWorkspaceConnection.compareTo() between a snapshot and the current stream.  This would give me the list of changesets that have occurred between the snapshot (say when it was shipped) and now (which would be all the fixes since it shipped).

I then do the getChangeSetLinkSummary() call to get the associated links.  I loop through looking for changeset links and get the workitems.  I will find 3 in the sample above.  How can I tell which one is associated with the stream I am connected to?

3 answers

permanent link
Michael Valenta (3.7k3) | answered Feb 18 '14, 1:23 p.m.

Each work item should have a planned for which would tell you you what release or iteration the work item applied to. You would need to access that information in order to determine what release the work item was associated with. From an SCM standpoint, there is 1 change set that has been delivered to 3 streams.

Jay Witherspoon commented Feb 19 '14, 9:21 a.m.

That is relying on a field that is entered by a developer/L3.  That means mistakes will be made.  I am looking for a way to accurately determine this information that does not rely on manual input.  Also, I just found an example where someone used a single workitem and delivered a changeset to multiple streams with that single workitem.  That would clearly break the use of a field within a workitem. 

Is there anyone who is currently delivering fixes on the workitem basis and not delivering entire jars?  If so, how are you handling this? 

Michael Valenta commented Feb 20 '14, 10:49 a.m.


I don't understand what you mean by "delivering fixes on the workitem basis and not delivering entire jars". However, there is no direct link between a work item and a stream. Instead, the link is through the iterations defined in a project area and the relationship between that project area and the stream. For instance, a stream is typically owned by a project or team area. It is possible to configure the process of that process area to ensure that a certain process is followed. One can configure an SCM deliver advisor to ensure that changes delivered to a stream match a desired iteration. I'm not an expert on work item advisors but I believe it is possible to restrict the changes made to a work item once it is resolved which would address you comment about the potential for mistakes.

permanent link
Ralph Schoon (62.7k33643) | answered Feb 18 '14, 4:53 a.m.

as far as I can tell, work items are not connected to any stream. So you can't make a connection to any stream, unless you have information in the work item providing this information. A reference presentation could potentially be used to select a stream to provide this kind of information. I have not tried that yet, so I don't know if there is a reference presentation for streams.

Ralph Schoon commented Feb 18 '14, 6:29 a.m.

I picked the wrong blog post, I meant this link . Unfortunately there seems to be no direct way to select a stream as objects.

Jay Witherspoon commented Feb 18 '14, 11:10 a.m.

It is unclear how you are supposed to be able to service products where you want to ship individual fixes and their prereqs.  You would normally fix problems with a work item and it may involve multiple change sets.  You need to be able to associate a change set to a work item for a given stream to deliver this service.  This is a very common way of delivering service and it is surprising that RTC does not do this...  It is not reliable to have hundreds of programmers remember to put the right data in some field to identify the stream. 

Ralph Schoon commented Feb 19 '14, 2:42 a.m. | edited Feb 19 '14, 2:43 a.m.

The way how we, as far as I know, work is by having streams for the versions that are out there and fix streams derived from them. Developers create a workspace for the version they need to work against from a stream, create the fix and get reviews etc done. The Found In attribute in the work item as well as the flow target of their workspace they use to develop tells the developer all they need to know.

I would assume that we don't have an attribute like you describe because we simply don't need to use one, due to the practices developers are using and the common data in a work item.

Jay Witherspoon commented Feb 19 '14, 8:14 a.m.

Without the ability to associate a change set with a workitem for the current stream, I do not see how you can reliably deliver individual fixes with prereqs.  I believe we are basically broken in that area.  The reason is that we deliver fixes in workitems.  All of the workitem must be delivered.  When you have a prereq changeset, the real prereq is the workitem.  Otherwise if the prereq has multiple change sets, you will deliver part of a workitem fix and not the complete fix.  Teams in WebSphere have been using this approach for many years and based on what I am hearing, that approach is is not safe in RTC.  It sounds like only jar level service is accurately supported in RTC.  How are you actually delivering service?  At the jar level or individual fix level?

permanent link
Jay Witherspoon (1368) | answered Feb 24 '14, 11:23 a.m.
Is there anyone actually doing individual fixes instead of jar replacement?

Your answer

Register or to post your answer.