Пример #1
0
 function toArray()
 {
     $resultArray = array();
     $resultIndex = 0;
     if ($this->regularExpression) {
         //Display regular expression predicate
         $predicateVars[0] = new prologAtom($this->typename);
         $predicateVars[1] = new prologList($this->regularExpression);
         $regPredicate = new prologPredicate($this->regularExpressionPredicate, $predicateVars);
         $resultArray[$resultIndex] = $regPredicate->toString() . ".\n";
         debug::message($resultArray[$resultIndex]);
         $resultIndex++;
     }
     for ($index = 0; $index < sizeof($this->ruleList); $index++) {
         $typeRule = $this->ruleList[$index];
         //Display rule
         $resultArray[$resultIndex] = $typeRule->toString();
         $resultIndex++;
     }
     return $resultArray;
 }
Пример #2
0
 function prologList($string)
 {
     if ($string != '') {
         if ($string[0] == '[') {
             $string = prologPredicate::__cutOuterBrackets($string);
             $vars = prologPredicate::__separateStringPredicateVars($string);
             $this->listValues = prologPredicate::__convertStringsToObjects($vars);
             $this->charArray = false;
         } else {
             $this->charArray = true;
             for ($index = 0; $index < strlen($string); $index++) {
                 array_push($this->listValues, $string[$index]);
             }
         }
     } else {
         $this->charArray = true;
         for ($index = 0; $index < strlen($string); $index++) {
             array_push($this->listValues, $string[$index]);
         }
     }
 }
Пример #3
0
 /**
  * @return Array(prologPlanCollection, prologOrderingCollection)
  * @param $plans String
  * @desc Converts a string with multplie plans into arrays, each containing
  * a prologPlanCollection and prologOrderingCollection
  */
 function organisePlans($plans)
 {
     //pre:  [ [Plan], [Order] ], [ [Plan] , [Order] ], [ [Plan] , [Order] ]
     //post: r = array grouping plans and orderings
     //Convert empty lists into empty strings to avoid conflicts with breaking
     //Orderings and plans apart
     $plans = preg_replace('/,\\[\\],/', ',"",', $plans);
     preg_match_all('/\\[\\[([\\W|\\w]*?)\\]\\]/', $plans, $matches);
     for ($index = 0; $index < sizeof($matches[1]); $index++) {
         //Break the plan and orderings apart
         $planAndOrdering = preg_split('/\\],\\[/', $matches[1][$index]);
         $planPackage[$index]['plan'] = $planAndOrdering[0];
         $planPackage[$index]['ordering'] = $planAndOrdering[1];
         //echo "<b>plan</b>:<br>" . $planPackage[$index]['plan'] . '<br><br>';
         $beforePredicate = new prologBeforePredicate();
         $happensPredicate = new prologHappenPredicate();
         //Uses prolog predicate to parse plan string into Happens predicates
         $planPackage[$index]['plan'] = new prologPlanCollection(prologPredicate::seperatePredicateList($planAndOrdering[0], 'happens', $happensPredicate));
         //Uses prolog predicate to parse ordering string into Happens predicates
         $planPackage[$index]['ordering'] = new prologOrderingCollection(prologPredicate::seperatePredicateList($planAndOrdering[1], 'before', $beforePredicate));
         //echo "<b>ordering</b>:<br>" . $planPackage[$index]['ordering'] . '<br><br>';
     }
     return $planPackage;
 }
Пример #4
0
<?php

include_once 'includes/configuration/core_configuration.php';
include_once "includes/commonPages/system_headerWC.php";
flush();
$model = dbs::selrecord('workflowCaching,location', 'workflowModels', "modelId={$modelId}", 0, 4);
$cached = dbs::selrecord('plan', 'workflowcachingstore', "modelId={$modelId}", 0, 2);
if (!$model['workflowCaching'] || $cached == '') {
    $hospitalMode = $model['location'];
    $mode = new prologPredicate('workflowModel', array(new prologString($hospitalMode)));
    performance::message("Start Prolog Planner");
    $filename = prolog::transferToProlog($_SESSION['valid_user'], array(":- multifile axiom/2.\n", $mode->toString() . ".\n", "axiom(user(" . string::low($_SESSION['valid_user']) . "),[])."));
    $plans = prolog::exec('planGenerationCGI.pl', 'main', $filename);
    //Keep this for the demo
    //$plans="[[[happens(formEntry(superForm,joseph,superuser),t54,t54),happens(edgeProgression(loop(formEntry(assessForm,_A,_B)),formElement(approvePharmacyChanges,match,false)),t100,t100),happens(createFormElement(radio,[82,101,106,101,99,116,32,80,104,97,114,109,97,99,121,32,67,104,97,110,103,101,115],approvePharmacyChanges,false,[]),t97,t97),happens(createFormElement(radio,[65,112,112,114,111,118,101,32,80,104,97,114,109,97,99,121,32,67,104,97,110,103,101,115],approvePharmacyChanges,true,[]),t96,t96),happens(formSubmission(failedDrugsApproval),t95,t95),happens(formEntry(admissionForm,joseph,receptionist),t18,t18),happens(databaseFetch(drugsFailure),t91,t91),happens(formEntry(failedDrugsApproval,joseph,doctor),t89,t89),happens(createFormElement(textbox,[80,97,116,105,101,110,116,32,78,97,109,101],patientName,'',[size=30]),t23,t23),happens(createFormElement(textbox,[72,111,117,115,101,32,78,117,109,98,101,114],houseNumber,'',[size=50]),t24,t24),happens(edgeProgression(checkdrugs,formElement(correction,presence,none)),t85,t85),happens(edgeProgression(checkdrugs,formElement(correctDrugs,match,false)),t84,t84),happens(createFormElement(radio,[82,101,106,101,99,116,32,100,114,117,103,115],correctDrugs,false,[]),t81,t81),happens(createFormElement(radio,[65,112,112,114,111,118,101,32,100,114,117,103,115],correctDrugs,true,[]),t80,t80),happens(createFormElement(textarea,[68,114,117,103,32,67,111,114,114,101,99,116,105,111,110,115],correction,'',[rows=20,cols=40]),t79,t79),happens(edgeProgression(superForm,formElement(nameee,presence,none)),t78,t78),happens(formSubmission(checkdrugs),t75,t75),happens(databaseFetch(drugsSpec),t73,t73),happens(createFormElement(textbox,[82,111,97,100],road,'',[disabled,size=50]),t25,t25),happens(formEntry(checkdrugs,joseph,pharmacist),t67,t67),happens(createFormElement(textbox,[65,103,101],age,'',[disabled,size=50]),t26,t26),happens(createFormElement(select,[87,97,114,100],ward,'',[size=1]),t27,t27),happens(edgeProgression(assessForm,formElement(drugs,presence,none)),t63,t63),happens(createFormElement(radio,[116,101,115,116,50],test2,false,[]),t60,t60),happens(createFormElement(radio,[116,101,115,116,49],test2,true,[]),t59,t59),happens(formSubmission(superForm),t58,t58),happens(createFormElement(option,[80,108,101,97,115,101,32,115,101,108,101,99,116,32,97,32,87,97,114,100],empty,'',[]),t28,t28),happens(createFormElement(textarea,[68,114,117,103,32,112,101,114,115,99,114,105,112,116,105,111,110],drugs,'',[rows=30,cols=30]),t53,t53),happens(formSubmission(assessForm),t52,t52),happens(createFormElement(option,[65,100,117,108,116,115,32,87,97,114,100],childrensWard,adultWard,[]),t29,t29),happens(formEntry(assessForm,joseph,doctor),t48,t48),happens(createFormElement(option,[67,104,105,108,100,114,101,110,115,32,87,97,114,100],adultWard,childrensWard,[]),t30,t30),happens(createFormElement(endSelect,'',ward,'',[]),t31,t31),happens(edgeProgression(admissionForm,formElement(ward,presence,none)),t44,t44),happens(edgeProgression(admissionForm,formElement(patientName,presence,none)),t43,t43),happens(entry(admissionForm,houseNumber,presence,none),t34,t34),happens(entry(admissionForm,road,presence,none),t35,t35),happens(entry(admissionForm,ward,match,childrensWard),t37,t37),happens(entry(admissionForm,age,function,lessThan(18)),t36,t36),happens(formSubmission(admissionForm),t22,t22)],[before(t100,t99),before(t99,t),before(t95,t99),before(t91,t96),before(t97,t95),before(t96,t97),before(t83,t89),before(t89,t91),before(t85,t84),before(t84,t83),before(t75,t83),before(t67,t79),before(t81,t73),before(t80,t81),before(t79,t80),before(t78,t77),before(t77,t14),before(t58,t77),before(t62,t67),before(t73,t75),before(t63,t62),before(t52,t62),before(t54,t59),before(t60,t58),before(t59,t60),before(t48,t53),before(t53,t52),before(t42,t48),before(t44,t43),before(t43,t42),before(t22,t42),before(t31,t34),before(t37,t22),before(t36,t37),before(t35,t36),before(t34,t35),before(t18,t23),before(t30,t31),before(t29,t30),before(t28,t29),before(t27,t28),before(t26,t27),before(t25,t26),before(t24,t25),before(t23,t24)]]]";
    $stoptime = time::stoptiming();
    performance::message("Stop Prolog Planner");
    flush();
    if ($plans == '' || $plans == '[]') {
        // No plan generated
        echo '<br><br>';
        errors::errorMessage('No plans were generated!');
    } elseif (preg_match('/HTML Typing/', $plans)) {
        // Typing error detected!
        echo '<br><Br>';
        errors::errorMessage($plans);
    } else {
        performance::message("Start Prolog Planner parsing");
        //Preformance overhead lies here!
        $planGraphList = GraphConversion::convertStringPrologPlansToGraphs($plans);
        $workFlowvalues = array();
Пример #5
0
echo javaScript::PHPToJavaScript('timeline', $prologTimeLine);
?>
</SCRIPT>
<SCRIPT src="javaScript/javaScriptPlanner.js">

</script>
<?php 
//Find all construction actions
$contructionActionList = findContructionActions($actionList);
//Find any database actions if any
$databaseActions = findDatabaseActions($actionList);
//Display database information if there is any
databaseActions($databaseActions);
formHead();
//Convert construction predicates to an array for writing to a file
$dataArray = prologPredicate::convertArrayPredicatesToString($contructionActionList, ".\n");
$filename = prolog::transferToProlog($_SESSION['valid_user'], $dataArray);
$form = prolog::exec('formGenerationCGI.pl', 'main', $filename);
//Out prologs form generation
?>

<hr size="1">
Workflow Form<hr size="1">
<table border="0" cellpadding="3" cellspacing="8" width="80%">
<tr>
<td>
<?php 
echo $form;
?>
</td></tr></table>
<br><hr size="1">
Пример #6
0
 /**
  * @return Array(PrologPredicate)
  * @param $predicateList String
  * @param $predicateName String
  * @param $predicateObject PrologPredicate
  * @desc Converts a prolog predicate string list into an array of each predicate object
  */
 function seperatePredicateList($predicateList, $predicateName, $predicateObject)
 {
     $predicateListArray = array();
     $predicateListArray = explode(",{$predicateName}", $predicateList);
     //Strip the first reference to the predicateName
     $predicateListArray[0] = preg_replace("/{$predicateName}/", "", $predicateListArray[0]);
     for ($index = 0; $index < sizeof($predicateListArray); $index++) {
         //Remove any white space
         $predicateListArray[$index] = preg_replace("/\\s/", "h", $predicateListArray[$index]);
         //Remove redundant first and last bracket
         $predicateListArray[$index] = prologPredicate::__cutOuterBrackets($predicateListArray[$index]);
         //Find all variables of predicate
         $predicateVars = prologPredicate::__separateStringPredicateVars($predicateListArray[$index]);
         //Recursively convert them into relevant objects
         $predicateValObjects = prologPredicate::__convertStringsToObjects($predicateVars);
         if ($predicateObject) {
             //Create Base predicate
             $predicateObject->setPredicateName($predicateName);
             $predicateObject->setPredicateValues($predicateValObjects);
             $predicate = $predicateObject;
         } else {
             $predicate = new prologPredicate($predicateName, $predicateValObjects);
         }
         //echo $predicate->toString();
         $predicateListArray[$index] = $predicate;
     }
     return $predicateListArray;
 }