Какие типы изменений должны быть внесены в правила, чтобы они могли перейти на страницу findApprox - PullRequest
0 голосов
/ 16 января 2019

Поскольку я использовал правила для проектов drools, при нажатии кнопки «Готово» он должен перейти на следующую панель, но этого не произошло. Я пытался решить эту проблему много часов. Но я не могу решить. Можете ли вы помочь мне, пожалуйста.

package rules
import com.sample.factObject;
import com.sample.getInput;`enter code here`
import com.sample.findApprox;
import java.util.*;
import javax.swing.*;

 dialect "java"


 rule "analyzeSymptoms"

  when
    fo:factObject ()
  then
    getInput.getMatches(fo);
  end


 rule "checkInput"

when
    i:getInput (inp.size() == 0)

then

    JOptionPane.showMessageDialog(null, "Enter symptoms");
    System.exit(-1);
    //System.out.println(-1);

end


 rule "printOutput"

when
    fo:factObject ()
    i:getInput (inp.size() != 0)
then
    findApprox.findApprox(fo);
end

Когда я нажимаю кнопку "Готово", он должен проверить условия и создать отчет. Но он не сработал.

package com.sample;

  import java.awt.BorderLayout;
  import java.awt.event.ActionEvent;
  import java.awt.event.ActionListener;
   import java.math.*;
  import java.util.*;

  import javax.swing.JButton;
  import javax.swing.JComboBox;
  import javax.swing.JFrame;
  import javax.swing.JLabel;
  import javax.swing.JPanel;
  import javax.swing.JScrollPane;
  import javax.swing.JTextArea;

public class findApprox {

static Map<String , ArrayList<String>> map1;
static Map<String , ArrayList<String>> map2;
static Map<String , ArrayList<String>> map3;

static int check = 0;
static JFrame f;
static JTextArea l;
static JScrollPane scroll;
static JButton b;
static JPanel p;

static void build(){


    f.setVisible(true);
    f = new JFrame("Report");
    f.setSize(600, 500);
    f.setLayout(null);

    f.setLocation(300, 150);
    f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

    l = new JTextArea();

    //   l.setText("<html>");
    for(Map.Entry<String , ArrayList<String>> entry : 
            map1.entrySet()){

        String disease = entry.getKey();

        //  System.out.println(disease + " " + 
                   entry.getValue() + map2.get(disease));

        ArrayList<String> s1 = entry.getValue();
        ArrayList<String> s2 = map2.get(disease);
        ArrayList<String> s3 = map3.get(disease);


        l.setText(l.getText() + "\n" + "Symptoms for " + 
                 disease + ":" + "\n" + s1 + "\n" + "\n"
                + "Patient has extra symptoms:" + "\n" 
     + s2  + " " + "(" + s2.size() + "/" + getInput.inp.size() + ")" + "\n" 
           + "Extra symptoms for the disease are:" + "\n" +
                s3  + " " + "(" + s3.size() + "/" + 
          s1.size() + ")"+ "\n");


    }
    l.setText(l.getText() + "\n" + "Please check if you have missed 
        any symptom and try again.");

    //System.out.println(l.getText());
    scroll = new JScrollPane(l);

    f.add(scroll);

    f.setVisible(true);


   }

  public static void findApprox(factObject fo){



//  if( ((fo.getsi1() > 0.5) || (fo.getsi2() < 0.5)) 
   &&fo.getIL().size() != getInput.inp.size()){

        String disease = fo.getDiseaseName();
        //    System.out.println(disease);

        ArrayList<String> s = fo.getSymptoms();
        map1.put(disease,s);

        ArrayList<String> il = fo.getIL();
        map2.put(disease, il);

        ArrayList<String> sl = fo.getSL();
        map3.put(disease, sl);

       //   }

      //        System.out.println(fo.getsi());

         check++;

         if(check == runRule.total){


          build();
      }


      }

               }

b2.addActionListener (новый запуск (kSession)); // Этот код здесь в последнем сеансе. // Нажав кнопку Готово, т. Е. B2, он проверяет правила.

 package com.sample;

 import java.awt.event.ActionEvent;
 import java.awt.event.ActionListener;
 import java.io.IOException;
 import java.util.ArrayList;
 import java.util.Arrays;
 import java.util.HashSet;
 import java.util.Set;

 import javax.swing.*;

 import org.kie.api.runtime.KieSession;

 public class scan implements ActionListener{

JFrame f1,f;
JButton b1,b2;
 JComboBox c;
 KieSession kSession;
ArrayList<String> populate;

public scan(KieSession kSession,ArrayList<String> populate,JFrame f){

    this.kSession = kSession;
    this.populate = populate;
    this.f = f;

    Set<String> set = new HashSet<>();
    set.addAll(populate);


    String cvalues[]=  set.toArray(new String[set.size()]);

    Arrays.sort(cvalues);

    c = new JComboBox(cvalues);

}


@Override
public void actionPerformed(ActionEvent e) {

    f1 = new JFrame("scan"); 
    f1.setSize(600, 300);
    f1.setLocation(300,150);
    f1.setLayout(null);

    c.setBounds(200, 70, 200, 30);
    c.setSize(200, c.getPreferredSize().height);


                BoundsPopupMenuListener listener = new BoundsPopupMenuListener(true, false);
                c.addPopupMenuListener( listener );        



    f1.setSize(600, 300);
    f1.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

    b1 = new JButton("Add");
    b1.setSize(50, 50);
    b1.setBounds(100, 160, 100, 30);

    b1.addActionListener(new readInput(c));

    b2 = new JButton("Finish");
    b2.setSize(50, 50);
    b2.setBounds(400, 160, 100, 30);

    b2.addActionListener(new Run(kSession));
    //By pressing Finish button i.e b2 it checks the rules


    f1.add(c);
    f1.add(b1);
    f1.add(b2);
    f1.setVisible(true);
    f.dispose();


}

}

...