I have drawn the following diagram and I want to know how correct is that?
This is a sample CLI program which receives a command, checks if it is correct[or exists in command definition file] (its parser), and then executes it, else it will throw an error to the user. On the course of execution, if anything happens that would terminate the execution, is reported as a failure to the user. All of these events must be logged, too. My concern is the horizontal bars (known as merge-fork):
I draw activity diagram by your description. After activity starts execution, it waits for event "Command Received". When command received it can be executed if condition "in definition file" is true. Otherwise exception is thrown. Exception is command object. (in this example. But you can change it). After command is executed, or error logged, activity waits for next command. If more than one command need to be received concurrently, just remove flows to "Command Received" event.
See diagram below: