Atlassian provides an excellent resource here on how you build the workflow you want.
Note that since JIRA 7.3, also Project Administrators can configure workflows, as long as they are not shared with multiple projects.
Define default values when creating issues
In JIRA you can only define default values for custom fields out-of-the-box. These defaults will then apply globally in any workflow state and mask. With the 'Default Values' extensions we provide you can define default values on specific 'create issue' / 'create sub task' screens. For example you can define a default description for user storys or bugs to help reporters create better and more complete requirements.
Create the workflow you want
Control status changes using conditions
Use 'Conditions' to determine who can change issues from one specific status to another. For example, make it so that only a particular assignee (e.g. a reviewer) can change the issue status to 'Ready to publish'. If a Condition is not fulfilled the button to make that status change happen will simply not appear. If you want to show the button and give feedback with an error message use Validators.
Set up Validation
Use 'Validators' to ensure that a status change gets validated before it happens. For example, before changing to a 'ready' status, a validator can check if the field 'Story Points' has been set.
Create automatic actions
Use 'Post-functions' to trigger specific changes on issues after they have passed conditions and validators. For example, you can set the assignee to the user defined in a custom field 'QA Resposible'.
Configuring Conditions, Validators and Post Functions
Here's how you can add a workflow element to a transition:
When you are done, don't forget to Publish Draft of your workflow to make it available to your users.
Configuring Default Values for Create Screens
Please see section Default Values for "Create Issue / Sub-Task" screen