I just started using Dia. I'm trying to build a sequence diagram. I would like to represent self-calls. How does one do that in Dia? I can't figure it out.
Thanks.
First place a UML Message object with it's base attached to your lifeline.
Then, double-click the arrow (or right-click, Properties), and change the Message Type drop-down field to Recursive, and you'll get something like this:
Now you can drag the green anchor point around to make the Message arrow look as you'd like. (A note of caution: it seems that with a Recursive Message object, you can ONLY select the object by clicking on it exactly where the green anchor point WOULD BE. I say "would be" because of course you can't actually see that green anchor point when the object isn't selected.)
If you like, you can create another UML Lifeline object, and place it overlapping the existing lifeline, like this:
This isn't ideal, though, because there isn't actually anything attached to this second lifeline. The Recursive Message object doesn't let you choose where to attach it's arrowhead, because it's automatically attached to the lifeline from which it originated. And because the second lifeline isn't attached to anything, if you go moving objects around it will get left behind. But, it does look pretty, if that's what you're after. :)
A self call(or any other association) in UML is better expressed using the standard association notation instead of the message one. In DIA, insert an association notation from the toolbox on the left and add it to your canvas. Then in order to have it connect a class recursively(to itself) double click it and click select "Autoroute" as no. This will enable you to shape the route yourself and wont constrain you to the automatic straight line that gets drawn when linking a class to itself.
You would end up with something like this(in this example its a representation of a Node in a linked list):
Related
Is there any adequate design pattern that should be used in order to do number of validations?
For example, let's say that I have an application containing a toolbar with icons, each representing a picture on my file system. I am dragging an icon on a document. Validations during the drag and drop operation could be:
check if the file exists in file system
check if the user has access rights to drag the icon
check that the document is open in order to drop the picture on it
and so on...
I thought of using the Chain of Responsibility or Decorator patterns.
Thanks!
Actually, what you're after, or rather what I'd suggest, is Continuation Passing Style. It's not so much a design pattern as a way of writing code where validation would be defined as a pipeline of methods that an object would go through. This pipeline would use an accumulator to collect all the validation problems encountered by the code.
I have created the below diagram and I wanted to know if the diagram that I have done is correct.
The below diagram is based on an android application. When the application loads the user is given 3 button to select add, update and help. On click on add button the user is given an option to add a new user or add a new item. When he select either of the options he enters the required data once the data is entered the system check if all the values are entered correctly and then finally saved. The same process is applied for update.
Your diagram misses an entry point. Though it's rather obvious that the top action is the start, only the entry point is the one indicating the beginning.
You can omit most of the diamonds and directly transfer via a guard from actions. So your conditions should be guards and written as [Yes] or [No]. The top most action (and quite some others) is(/are) indeed what should be written inside (or aside) the diamond below.
An excerpt for an update could look like this:
Finally Values added does not look like an action but rather as state. It should be omitted. Alternatively use differently named end flows.
So far for the formal points. But as #eyp said: it's a good one and one can understand what you tried to express. The above is just for the picky teachers.
It's a good one but it lacks some detail in the diamonds. You should write besides the diamon the question before choosing the next setp to do.
For example in the diamond after Check update value you may write is valid? or another question that clarifies more the business logic.
The Twist documentation for extracting concepts shows how multiple steps can be grouped into one step that contains those steps. For instance, the following eight fixtures
1. Start at the Maintain product catalog page.
2. The page title should be “Joe’s musical —Maintain Product Catalog.”
3. Click the Add New Instrument button.
4. The page title should be “Joe’s musical—Add New Musical Instrument.”
5. Enter text “Guitar” into the Instrument field.
6. Select “Slide” from the Type selection list.
7. Select “Dobro” from the Brand selection list.
8. Click the Save button.
Can be condensed into one concept:
1. Add a New Musical Instrument “Guitar” of type “Slide” and brand “Dobro”
However, the tutorial doesn't say if it's possible to use this concept with other parameters (perhaps with "Drum" instead of "Guitar"). However, it does clearly say that parameters in the concept name should be surrounded by quotes, but they also should match the parameter name, so it's not clear if it's possible.
So can I use parameters with Twist concepts?
Yes! The documentation is really crummy about making this clear, but it is absolutely possible.
If you extracted a concept in the way that they described in the tutorial you referenced and others, then the fixture Add a New Musical Instrument “Guitar” of type “Slide” and brand “Dobro” actually contains three parameters named Guitar, Slide, and Dobro. What makes this so confusing is in each scenario you can change the value of each parameter to whatever you like (perhaps "Drum", "Snare", "Yamaha"), but under the hood, the variables are still called by their original names (thus Guitar=Drum, etc.) and these original names will appear as default values whenever you add the concept to a scenario.
To eliminate confusion, I recommend changing these default names. In this case, it might be Add a New Musical Instrument “Instrument” of type “Type” and brand “Brand”. Bizarrely, you can't rename the parameters via "Rephrase the Open Concept" because you run into a catch-22 situation. You can't change the name of the concept because it doesn't match the usage in the fixture. And you can't rename the fixtures because the parameters are bound to the concept name. So I recommend just opening it up in the text editor and making the change there.
So bottom line, the examples make it seem like you can't use parameters because the parameters wind up being named after whatever value you inputted. I recommend changing the default parameter names, but you have to do it in the text editor because Twist won't let you.
I have a fairly straightforward and common use case. A panel, in which resides a repeat control. The repeat control gets its content from a view lookup by key. Below that repeat control is another panel. This panel has a data binding to a new notesdocument. The panel has a couple of fields on it for the new document and a submit button.
It all works, however after submit (presumably in the "postSaveDocument()" event) I want to call back up to the repeat control and have it re-perform its lookup and refresh its content.
I'm looking to understand syntactically, how I can reference the repeat control and its properties and methods from elsewhere on the document -- and secondarily (though I can look this up once I get the first part figured out) what the refresh() method would be for that that repeat control.
Ideally, I think its something like: xp:page.repeatcontrolname.refresh() -- though I know that isn't right.
I'm sure once I see an example, it will apply to a myriad of other things.
Update :
I discovered that the repeated elements were actually refreshing but I wasn't seeing a new entry added to the list. The reason, ultimately, turned out to be that to add another entry to the repeat list I needed a new "control" -- but I'd checked that box (on the repeat control) that said "Create Controls at Page Creation". It was preventing my XPage from creating another entry for the new document to display!
This article explains the syntax for doing what you describe:
http://avatar.red-pill.mobi/tim/blog.nsf/d6plinks/TTRY-84B6VP
I have a feeling that this one captures the actual use case.
http://www-10.lotus.com/ldd/ddwiki.nsf/dx/Create_and_display_responses
The key setting that people tend to miss is "ignoreRequestParams".
Andrew,
The 'XSP.PartialRefreshGet' call was broken in Domino release 8.5.3 which results in the '_c9 is undefined' error.
Have a look at the article posted by Tommy Valand:
http://dontpanic82.blogspot.com.au/2012/03/patch-for-bug-in-xsppartialrefreshget.html
Basically to work around the problem a second argument is required to be passed to the call, for example:
XSP.partialRefreshGet("#{id:ExistingDevicesList}", "")
Hi I have a class of let's say "Channels", like folders - but it could be menu items in a navigation block. So obviously a "Channel" has properties like
.Title
.Alias (wordPress slug-like)
.Content
.RedirectUrl (may act as a hyperlink)
.StateProperties.IsActive
.StateProperties.IsFeatured
/// etc..
but in many cases I would want to set the order of my items in a navigation menu block manually - by whatever importance I decide, right.. ? (not by abc or timestamp)
So I've added a property called
StateProperties.OrderIndex just for this... a colleague of mine has called it "z-index" while he was referring to it... I am trying to build a CMS framework for our internal needs and just seeking your opinions as to what name could possibly be used for my "OrderIndex" ?
To me "OrderIndex" just makes sense :)
I believe 'OrderIndex' is exactly what you are looking for, since index stands for position and you are setting an 'Order' position. The 'Z' in 'z-index' stands for depth position, which does not seem to match what you are trying to go for.
I would prefer Order or Sequence. I think z-index carries a different meaning that what you're after (more for ordering on a stack).