Index: workflow.rules_forms.inc
===================================================================
--- workflow.rules_forms.inc	(revision 2555)
+++ workflow.rules_forms.inc	(working copy)
@@ -22,6 +22,7 @@
     '#type' => 'select',
     '#title' => t('From State'),
     '#options' => $options,
+    '#multiple'=> TRUE,
     '#default_value' => isset($settings['from_state']) ? $settings['from_state'] : array(),
     '#required' => TRUE,
   );
@@ -29,6 +30,7 @@
     '#type' => 'select',
     '#title' => t('To State'),
     '#options' => $options,
+    '#multiple'=> TRUE,
     '#default_value' => isset($settings['to_state']) ? $settings['to_state'] : array(),
     '#required' => TRUE,
   );
@@ -38,19 +40,25 @@
  * Label callback for check transition condition.
  */
 function workflow_check_transition_label($settings, $argument_labels) {
-  if ($settings['from_state'] === 'ANY') {
-    $from = t('Any state');
+    if (in_array('ANY', $settings['from_state'])) $settings['from_state'] = array('ANY');
+    if (in_array('ANY', $settings['to_state'])) $settings['to_state'] = array('ANY');
+    $from = array();
+    $to = array();
+   foreach($settings['from_state'] as $state) {
+    if ($state != 'ANY') {
+        $fromtemp = workflow_get_state($state);
+        $from[] = $fromtemp['state']; 
+    } else {
+        $from[] = t('Any state');
+    }
   }
-  else {
-    $from = workflow_get_state($settings['from_state']);
-    $from = $from['state'];
+  foreach($settings['to_state'] as $state) {
+    if ($state != 'ANY') {
+        $totemp = workflow_get_state($state);
+        $to[] = $totemp['state']; 
+    } else {
+        $to[] = t('Any state');
+    }
   }
-  if ($settings['to_state'] === 'ANY') {
-    $to = t('Any state');
-  }
-  else {
-    $to = workflow_get_state($settings['to_state']);
-    $to = $to['state'];
-  }
-  return t('Check workflow transition from @from to @to', array('@from' => $from, '@to' => $to));
+  return t('Check workflow transition from @from to @to', array('@from' => implode(', ',$from), '@to' => implode(', ',$to)));
 }
\ No newline at end of file
Index: workflow.rules.inc
===================================================================
--- workflow.rules.inc	(revision 2555)
+++ workflow.rules.inc	(working copy)
@@ -59,16 +59,16 @@
  * Condition implementation: check state transition. 
  */
 function workflow_check_transition($old_state, $new_state, $settings) {
-  if ($settings['from_state'] === 'ANY') {
-    if ($settings['to_state'] === 'ANY') {
+  if (in_array('ANY',$settings['from_state'])) {
+    if (in_array('ANY',$settings['to_state'])) {
       return TRUE;
     }
-    return $new_state === $settings['to_state'];
+    return in_array($new_state,$settings['to_state']);
   }
-  if ($settings['to_state'] === 'ANY') {
-    return $old_state === $settings['from_state'];
+  if (in_array('ANY',$settings['to_state'])) {
+    return in_array($old_state,$settings['from_state']);
   }
-  return $old_state === $settings['from_state'] && $new_state === $settings['to_state'];
+  return  in_array($old_state,$settings['from_state']) &&  in_array($new_state,$settings['to_state']);
 }
 
 /**
