<div dir="ltr">Sure. My sorting by worktime and skills is partially working, if I do my planning with a certain number of engineers/workorders that fits in each other, it works perfectly, If i overcome that, it breaks the planning, it keeps showing the data that shouldn't be displayed and, in consequence, breaks the optimal solution.<div>
<br></div><div style>Example:</div><div style>Engineer Andre, WT(8 hours), Skills ABC1, ABC2</div><div style><br></div><div style>Workorder 1, required WT(2), required Skills ABC2</div><div style>Workorder 2, required WT(3), required Skills ABC2<br>
</div><div style>Workorder 3, required WT(1), required Skills ABC1<br></div><div style><br></div><div style>with these 3 WO it should work perfectly, results:</div><div style><div>ID: 104[Skills: ABC 2,] - Andre(8)[Skills: ABC 1,ABC 2,] ------ Feasible(0)</div>
<div>ID: 105[Skills: ABC 2,] - Andre(8)[Skills: ABC 1,ABC 2,] ------ Feasible(0)</div><div>ID: 106[Skills: ABC 1,] - Andre(8)[Skills: ABC 1,ABC 2,] ------ Feasible(0)</div></div><div style><br></div><div style>Adding this workorder that exceed in time and skill</div>
<div style><br></div><div style>Workorder 1, required WT(5), required Skills ABC2, ABC3<br></div><div style><br></div><div style>this is the outcome:</div><div style><br></div><div style><div>ID: 104[Skills: ABC 2,] - Andre(8)[Skills: ABC 1,ABC 2,] ------ Feasible(0)</div>
<div>ID: 105[Skills: ABC 2,] - Andre(8)[Skills: ABC 1,ABC 2,] ------ Feasible(0)</div><div>ID: 107[Skills: ABC 1,ABC 3,] - Andre(8)[Skills: ABC 1,ABC 2,] ------ Broken(1)</div><div>ID: 106[Skills: ABC 1,] - Andre(8)[Skills: ABC 1,ABC 2,] ------ Feasible(0)</div>
<div><br></div><div style>it shows all not excluding the workorder that is not to be assigned to engineer. I did it by simplescorecalculator:</div><div style><br></div><div style><div><span class="" style="white-space:pre">        </span>public HardAndSoftScore calculateScore(Distributor distributor) {</div>
<div><span class="" style="white-space:pre">                </span>int hardScore = 0;</div><div><span class="" style="white-space:pre">                </span>int softScore = 0;</div><div><br></div><div><span class="" style="white-space:pre">                </span>for (Engineer e : distributor.getEngineerList()) {</div>
<div><span class="" style="white-space:pre">                        </span>int requiredWorktime = 0;</div><div><span class="" style="white-space:pre">                        </span>List<Skill> requiredSkillList = new ArrayList<Skill>();</div><div><br>
</div><div><span class="" style="white-space:pre">                        </span>for (WorkOrder o : distributor.getWorkOrderList()) {</div><div><span class="" style="white-space:pre">                                </span>if (e.equals(o.getEngineer())) {</div><div><span class="" style="white-space:pre">                                        </span>requiredWorktime += o.getRequiredWorktime();</div>
<div><span class="" style="white-space:pre">                                        </span>for (SkillWorkOrder swo : o.getRequiredSkills()) {</div><div><span class="" style="white-space:pre">                                                </span>requiredSkillList.add(swo.getSkill());</div><div><span class="" style="white-space:pre">                                        </span>}</div>
<div><span class="" style="white-space:pre">                                </span>}</div><div><span class="" style="white-space:pre">                        </span>}</div><div><br></div><div><span class="" style="white-space:pre">                        </span>int engineerAvailableTime = e.getWorktime() - requiredWorktime;</div>
<div><span class="" style="white-space:pre">                        </span>if (engineerAvailableTime < 0) {</div><div><span class="" style="white-space:pre">                                </span>hardScore += engineerAvailableTime;</div><div><span class="" style="white-space:pre">                        </span>}</div>
<div><br></div><div><span class="" style="white-space:pre">                        </span>List<Skill> tempEngSkillList = new ArrayList<Skill>();</div><div><span class="" style="white-space:pre">                        </span>for (SkillEngineer se : e.getSkillEngineerList()){</div>
<div><span class="" style="white-space:pre">                                </span>tempEngSkillList.add(se.getSkill());</div><div><span class="" style="white-space:pre">                        </span>}</div><div><span class="" style="white-space:pre">                        </span></div><div>
<span class="" style="white-space:pre">                        </span>if (tempEngSkillList.containsAll(requiredSkillList)){</div><div><span class="" style="white-space:pre">                                </span>hardScore += 1;</div><div><span class="" style="white-space:pre">                        </span>}</div>
<div><span class="" style="white-space:pre">                </span>}</div><div><br></div><div><span class="" style="white-space:pre">                </span>return DefaultHardAndSoftScore.valueOf(hardScore, softScore);</div><div><span class="" style="white-space:pre">        </span>}</div>
</div></div><div style><br></div><div style>that's the problem happening, after that i'll start working on priority by the tip you provided in the previous post, but i'll try by simplescorecalculator to, i'm not getting along (yet) with drools rules system (drl), it's a bit harder to use it with planner.</div>
<div style><br></div><div style>thanks for the help Geoffrey!</div></div><div class="gmail_extra"><br><br><div class="gmail_quote">2013/2/21 Geoffrey De Smet <span dir="ltr"><<a href="mailto:ge0ffrey.spam@gmail.com" target="_blank">ge0ffrey.spam@gmail.com</a>></span><br>
<blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">
<div bgcolor="#FFFFFF" text="#000000">
This thread is a bit long, could you summarize the open problems?<br>
<br>
<div>Op 20-02-13 19:22, André Fróes schreef:<br>
</div>
<blockquote type="cite"><div><div class="h5">
<div dir="ltr">I added another variable to check if it would still
show the broken constraint and break the planner, and it still
happens, I added this:
<div><br>
</div>
<div>
<div>WorkOrder wo33 = new WorkOrder(103l, 8, Priority.P1,
Nature.CORRECTIVE);</div>
<div>SkillWorkOrder swo333 = new SkillWorkOrder(20333l, wo33,
ABC1);</div>
<div>SkillWorkOrder swo3332 = new SkillWorkOrder(203332l,
wo33, ABC2);</div>
<div>SkillWorkOrder swo3333 = new SkillWorkOrder(203333l,
wo33, ABC3);</div>
<div>SkillWorkOrder swo3334 = new SkillWorkOrder(203334l,
wo33, ABC4);</div>
<div>List<SkillWorkOrder> lswo33 = new
ArrayList<SkillWorkOrder>();</div>
<div>lswo33.add(swo333);</div>
<div>lswo33.add(swo3332);</div>
<div>lswo33.add(swo3333);</div>
<div>lswo33.add(swo3334);</div>
<div>wo33.setRequiredSkills(lswo33);</div>
</div>
<div><br>
</div>
<div>it breaks in worktime and required skill, and even
so, it shows there in the result breaking everything T.T</div>
</div>
<div class="gmail_extra"><br>
<br>
<div class="gmail_quote">2013/2/20 André Fróes <span dir="ltr"><<a href="mailto:arfmoraes@gmail.com" target="_blank">arfmoraes@gmail.com</a>></span><br>
<blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">
<div dir="ltr">Problem solved (still I think so):
<div><br>
</div>
<div>It was simpler (if i'm right):</div>
<div>--------</div>
<div>
<div>List<Skill> tempEngSkillList = new
ArrayList<Skill>();</div>
<div>for (SkillEngineer se : e.getSkillEngineerList()){</div>
<div><span style="white-space:pre-wrap"> </span>tempEngSkillList.add(se.getSkill());</div>
<div>}</div>
<div><span style="white-space:pre-wrap"> </span></div>
<div>if
(tempEngSkillList.containsAll(requiredSkillList)){</div>
<div><span style="white-space:pre-wrap"> </span>hardScore
+= 1;</div>
<div>}</div>
<div>--------<br>
</div>
</div>
<div><br>
</div>
<div>the result:</div>
<div><br>
</div>
<div>
<div>
<div>Solved distribution with 10 work orders and 4
engineers:</div>
</div>
<div>ID: 104[Skills: ABC 2,] - Andre(8)[Skills: ABC
1,ABC 2,] ------ Feasible(0)</div>
<div>
<div>
ID: 103[Skills: ABC 1,ABC 2,ABC 3,ABC 4,] -
Denny(8)[Skills: ABC 2,ABC 1,ABC 3,ABC 4,] ------
Feasible(0)</div>
</div>
<div>ID: 105[Skills: ABC 2,] - Andre(8)[Skills: ABC
1,ABC 2,] ------ Feasible(0)</div>
<div>
<div>ID: 102[Skills: ABC 2,] - Andre(8)[Skills:
ABC 1,ABC 2,] ------ Feasible(0)</div>
<div>ID: 101[Skills: ABC 1,ABC 2,ABC 4,] -
Richard(8)[Skills: ABC 1,ABC 2,ABC 4,] ------
Feasible(0)</div>
<div>ID: 107[Skills: ABC 1,ABC 3,] -
Fabio(8)[Skills: ABC 3,ABC 1,] ------ Feasible(0)</div>
</div>
<div>ID: 106[Skills: ABC 1,] - Fabio(8)[Skills: ABC
3,ABC 1,] ------ Feasible(0)</div>
<div>ID: 108[Skills: ABC 1,ABC 4,] -
Richard(8)[Skills: ABC 1,ABC 2,ABC 4,] ------
Feasible(0)</div>
<div>ID: 109[Skills: ABC 3,] - Fabio(8)[Skills: ABC
3,ABC 1,] ------ Feasible(0)</div>
<div>
<div>ID: 110[Skills: ABC 1,] - Andre(8)[Skills:
ABC 1,ABC 2,] ------ Feasible(0)</div>
</div>
</div>
</div>
<div>
<div>
<div class="gmail_extra"><br>
<br>
<div class="gmail_quote">2013/2/20 André Fróes <span dir="ltr"><<a href="mailto:arfmoraes@gmail.com" target="_blank">arfmoraes@gmail.com</a>></span><br>
<blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">
<div dir="ltr">Not fixed, i threw it on excel and
make a comparison with expected results and
there are 2 broken there. This is how it would
be (feasible solution):
<div><br>
</div>
<div>ID 101 - Engineer Richard</div>
<div>
ID 102 - Engineer Andre<br>
</div>
<div>ID 103 - Engineer Denny</div>
<div>ID 104 - Engineer Andre</div>
<div>ID 105 - Engineer Andre</div>
<div>ID 106 - Engineer Andre</div>
<div>ID 107 - Engineer Fabio</div>
<div>ID 108 - Engineer Richard</div>
<div>ID 109 - Engineer Fabio</div>
<div>ID 110 - Engineer Fabio</div>
<div><br>
</div>
<div>this was the result:<br>
<div><br>
</div>
<div>
<div>Solved distribution with 10 work orders
and 4 engineers:</div>
<div>ID: 104[Skills: ABC 2,] -
Richard(8)[Skills: ABC 1,ABC 2,ABC 4,]
------ Feasible(0)</div>
<div>ID: 103[Skills: ABC 1,ABC 2,ABC 3,ABC
4,] - Denny(8)[Skills: ABC 2,ABC 1,ABC
3,ABC 4,] ------ Feasible(0)</div>
<div>ID: 105[Skills: ABC 2,] -
Fabio(8)[Skills: ABC 3,ABC 1,] ------
Broken(1)</div>
<div>ID: 102[Skills: ABC 2,] -
Andre(8)[Skills: ABC 1,ABC 2,] ------
Feasible(0)</div>
<div>ID: 101[Skills: ABC 1,ABC 2,ABC 4,] -
Richard(8)[Skills: ABC 1,ABC 2,ABC 4,]
------ Feasible(0)</div>
<div>ID: 107[Skills: ABC 1,ABC 3,] -
Fabio(8)[Skills: ABC 3,ABC 1,] ------
Feasible(0)</div>
<div>ID: 106[Skills: ABC 1,] -
Andre(8)[Skills: ABC 1,ABC 2,] ------
Feasible(0)</div>
<div>ID: 108[Skills: ABC 1,ABC 4,] -
Andre(8)[Skills: ABC 1,ABC 2,] ------
Broken(1)</div>
<div>ID: 109[Skills: ABC 3,] -
Andre(8)[Skills: ABC 1,ABC 2,] ------
Broken(1)</div>
<div>ID: 110[Skills: ABC 1,] -
Andre(8)[Skills: ABC 1,ABC 2,] ------
Feasible(0)</div>
</div>
</div>
<div><br>
</div>
<div>Still working on it, I accept any tips :D</div>
</div>
<div>
<div>
<div class="gmail_extra"><br>
<br>
<div class="gmail_quote">2013/2/20 André
Fróes <span dir="ltr"><<a href="mailto:arfmoraes@gmail.com" target="_blank">arfmoraes@gmail.com</a>></span><br>
<blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">
<div dir="ltr">I think I fixed it, but
the broken constraint is still
showing, i don't know how to remove
it. I did this:
<div>
<br>
</div>
<div>verified if the engineer skill
list had the same size or bigger
than the requiredSkillList, iterate
to check skills between both
counting the matches and then, if
the match was 100% to other, give
the workorder</div>
<div><br>
</div>
<div>
<div><span style="white-space:pre-wrap"> </span>if
(e.getSkillEngineerList().size()
>= requiredSkillList.size()) {</div>
<div><span style="white-space:pre-wrap"> </span>int
temp = 0;</div>
<div>
<div><span style="white-space:pre-wrap">
</span>for (SkillEngineer se :
e.getSkillEngineerList()) {</div>
<div><span style="white-space:pre-wrap">
</span>for (Skill s :
requiredSkillList) {</div>
<div><span style="white-space:pre-wrap">
</span>if (se.getSkill().getId()
== s.getId()) {</div>
</div>
<div><span style="white-space:pre-wrap"> </span>temp++;</div>
<div><span style="white-space:pre-wrap"> </span>}</div>
<div><span style="white-space:pre-wrap"> </span>}</div>
<div><span style="white-space:pre-wrap"> </span>}</div>
<div><span style="white-space:pre-wrap"> </span>if
(temp == requiredSkillList.size())
{</div>
<div><span style="white-space:pre-wrap"> </span>hardScore
+= 1;</div>
<div><span style="white-space:pre-wrap"> </span>}</div>
<div><span style="white-space:pre-wrap"> </span>}</div>
</div>
</div>
<div>
<div>
<div class="gmail_extra"><br>
<br>
<div class="gmail_quote">2013/2/20
André Fróes <span dir="ltr"><<a href="mailto:arfmoraes@gmail.com" target="_blank">arfmoraes@gmail.com</a>></span><br>
<blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">
<div dir="ltr">After some
workaround I noticed that
the workorders are not being
100% corretly distributed
to, i've changed the
scorecalculator to this:
<div>
<br>
</div>
<div>
<div><span style="white-space:pre-wrap">
</span>int
commonSkillCount = 0;</div>
<div><span style="white-space:pre-wrap">
</span>for (Skill s :
requiredSkillList){</div>
<div><span style="white-space:pre-wrap">
</span>for
(SkillEngineer se :
e.getSkillEngineerList()){</div>
<div>
<div><span style="white-space:pre-wrap">
</span>if
(se.getSkill().getId()
== s.getId()){</div>
<div><span style="white-space:pre-wrap">
</span>commonSkillCount++;</div>
<div><span style="white-space:pre-wrap">
</span>}</div>
<div><span style="white-space:pre-wrap">
</span>}</div>
<div><span style="white-space:pre-wrap">
</span>}</div>
</div>
</div>
<div><br>
</div>
<div>
<div><span style="white-space:pre-wrap">
</span>if
((commonSkillCount -
e.getSkillEngineerList().size())
<= 0){</div>
<div><span style="white-space:pre-wrap">
</span>hardScore +=
commonSkillCount;</div>
<div><span style="white-space:pre-wrap">
</span>}</div>
</div>
<div><br>
</div>
<div>and I got the result</div>
<div><br>
</div>
<div>
<div>ID: 104[Skills: ABC
2,] -
Trewq(8)[Skills: ABC
3,ABC 2,] ------
Feasible(0)</div>
<div>ID: 103[Skills: ABC
3,] -
Trewq(8)[Skills: ABC
3,ABC 2,] ------
Feasible(0)</div>
<div>ID: 105[Skills: ABC
4,ABC 3,] -
Poiuy(8)[Skills: ABC
1,ABC 2,ABC 3,ABC 4,]
------ Feasible(0)</div>
<div>ID: 102[Skills: ABC
2,ABC 1,ABC 4,] -
Qwert(8)[Skills: ABC
2,ABC 4,] ------
Broken(1)</div>
<div>ID: 101[Skills: ABC
1,] -
Lkjhg(8)[Skills: ABC
4,ABC 1,] ------
Feasible(0)</div>
<div>ID: 107[Skills: ABC
4,] -
Lkjhg(8)[Skills: ABC
4,ABC 1,] ------
Feasible(0)</div>
<div>ID: 106[Skills: ABC
1,] -
Qwert(8)[Skills: ABC
2,ABC 4,] ------
Broken(1)</div>
<div>ID: 108[Skills: ABC
3,ABC 2,] -
Poiuy(8)[Skills: ABC
1,ABC 2,ABC 3,ABC 4,]
------ Feasible(0)</div>
<div><br>
</div>
<div>there's a workorder
that woud be
disconsidered because no
engineer have the
required skill to
complete it</div>
</div>
</div>
<div>
<div>
<div class="gmail_extra"><br>
<br>
<div class="gmail_quote">2013/2/19
André Fróes <span dir="ltr"><<a href="mailto:arfmoraes@gmail.com" target="_blank">arfmoraes@gmail.com</a>></span><br>
<blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">
<div dir="ltr">I
forgot to post the
code:
<div><br>
</div>
<div>
<div>
<div><span style="white-space:pre-wrap">
</span>public
HardAndSoftScore
calculateScore(Distributor
distributor) {</div>
<div><span style="white-space:pre-wrap">
</span>int
hardScore = 0;</div>
<div><span style="white-space:pre-wrap">
</span>int
softScore = 0;</div>
<div><span style="white-space:pre-wrap">
</span></div>
<div><span style="white-space:pre-wrap">
</span>for
(Engineer e :
distributor.getEngineerList()){</div>
<div><span style="white-space:pre-wrap">
</span>long
skill =
e.getSkillEngineerList().get(0).getSkill().getId();</div>
<div><span style="white-space:pre-wrap">
</span>int
requiredWorktime
= 0;</div>
</div>
<div><span style="white-space:pre-wrap">
</span>List<Skill>
requiredSkillList
= new
ArrayList<Skill>();</div>
<div>
<div><span style="white-space:pre-wrap">
</span></div>
<div><span style="white-space:pre-wrap">
</span></div>
<div><span style="white-space:pre-wrap">
</span>for
(WorkOrder o :
distributor.getWorkOrderList()){</div>
<div><span style="white-space:pre-wrap">
</span>if
(e.equals(o.getEngineer())){</div>
<div><span style="white-space:pre-wrap">
</span>requiredWorktime
+=
o.getRequiredWorktime();</div>
</div>
<div><span style="white-space:pre-wrap">
</span>for
(SkillWorkOrder
swo :
o.getRequiredSkills()){</div>
<div><span style="white-space:pre-wrap">
</span>requiredSkillList.add(swo.getSkill());</div>
<div>
<div><span style="white-space:pre-wrap">
</span>}</div>
<div><span style="white-space:pre-wrap">
</span>}</div>
<div><span style="white-space:pre-wrap">
</span>}</div>
<div><span style="white-space:pre-wrap">
</span></div>
<div><span style="white-space:pre-wrap">
</span>int
engineerAvailableTime
=
e.getWorktime()
-
requiredWorktime;</div>
<div><span style="white-space:pre-wrap">
</span>if
(engineerAvailableTime
< 0 ){</div>
<div><span style="white-space:pre-wrap">
</span>hardScore
+=
engineerAvailableTime;</div>
<div><span style="white-space:pre-wrap">
</span>}</div>
<div><span style="white-space:pre-wrap">
</span></div>
</div>
<div><span style="white-space:pre-wrap">
</span>int
commonSkillCount
= 0;</div>
<div><span style="white-space:pre-wrap">
</span>for
(SkillEngineer
se :
e.getSkillEngineerList()){</div>
<div><span style="white-space:pre-wrap">
</span>for
(Skill s :
requiredSkillList){</div>
<div><span style="white-space:pre-wrap">
</span>if
(se.getSkill().getId()
== s.getId()){</div>
<div><span style="white-space:pre-wrap">
</span>commonSkillCount++;</div>
<div><span style="white-space:pre-wrap">
</span>}</div>
<div><span style="white-space:pre-wrap">
</span>}</div>
<div><span style="white-space:pre-wrap">
</span>}</div>
<div><span style="white-space:pre-wrap">
</span></div>
<div><span style="white-space:pre-wrap">
</span>if
(commonSkillCount
!= 0){</div>
<div><span style="white-space:pre-wrap">
</span>hardScore
+=
commonSkillCount;</div>
<div><span style="white-space:pre-wrap">
</span>}</div>
<div><span style="white-space:pre-wrap">
</span></div>
<div><span style="white-space:pre-wrap">
</span>}</div>
<div><br>
</div>
<div><span style="white-space:pre-wrap">
</span>return
DefaultHardAndSoftScore.valueOf(hardScore,
softScore);</div>
<div><span style="white-space:pre-wrap">
</span>}</div>
</div>
<div><br>
</div>
<div>( but i still
want to try to
create this in
dsl rule after
this work :D )</div>
</div>
<div>
<div>
<div class="gmail_extra">
<br>
<br>
<div class="gmail_quote">
2013/2/19
André Fróes <span dir="ltr"><<a href="mailto:arfmoraes@gmail.com" target="_blank">arfmoraes@gmail.com</a>></span><br>
<blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">
<div dir="ltr">I
managed
solving that
problem even
when there's
more than one
skill
involved, but
now my hard
constraint of
worktime
breaks if I
add more
worktime than
the sum of
engineers
worktime.
<div><br>
</div>
<div>
(8) is the
worktime, my
workorders all
have a
worktime of 4
hours, so, I
got 32
available
hours and 32
hours of
workorders to
be assigned
right? When I
stick to this
plan, it
works:</div>
<div><br>
</div>
<div>----Compilation
Result----</div>
<div>
<div>Solved
distribution
with 8 work
orders and 4
engineers:</div>
<div> ID:
104[Skills:
(1002) ABC 2]
-
Qwert(8)[Skills:
(1002) ABC 2]</div>
<div> ID:
103[Skills:
(1003) ABC 3]
-
Trewq(8)[Skills:
(1003) ABC 3]</div>
<div> ID:
105[Skills:
(1004) ABC 4]
-
Lkjhg(8)[Skills:
(1004) ABC 4]</div>
<div> ID:
102[Skills:
(1002) ABC 2]
-
Qwert(8)[Skills:
(1002) ABC 2]</div>
<div> ID:
101[Skills:
(1001) ABC 1]
-
Poiuy(8)[Skills:
(1001) ABC 1]</div>
<div> ID:
107[Skills:
(1004) ABC 4]
-
Lkjhg(8)[Skills:
(1004) ABC 4]</div>
<div> ID:
106[Skills:
(1001) ABC 1]
-
Poiuy(8)[Skills:
(1001) ABC 1]</div>
<div> ID:
108[Skills:
(1003) ABC 3]
-
Trewq(8)[Skills:
(1003) ABC 3]</div>
<div>---------------</div>
<div><br>
</div>
<div>So, if I
add another
worktime with
4 hours, it
messes
everything,
this is the
outcome:</div>
<div><br>
</div>
<div>
<div>Solved
distribution
with 9 work
orders and 4
engineers:</div>
<div> ID:
104[Skills:
(1002) ABC 2]
-
Qwert(8)[Skills:
(1002) ABC 2]</div>
<div> ID:
103[Skills:
(1003) ABC 3]
-
Trewq(8)[Skills:
(1003) ABC 3]</div>
<div> ID:
105[Skills:
(1004) ABC 4]
-
Lkjhg(8)[Skills:
(1004) ABC 4]</div>
<div> ID:
102[Skills:
(1002) ABC 2]
-
Qwert(8)[Skills:
(1002) ABC 2]</div>
<div> ID:
101[Skills:
(1001) ABC 1]
-
Poiuy(8)[Skills:
(1001) ABC 1]</div>
<div> ID:
107[Skills:
(1004) ABC 4]
-
Lkjhg(8)[Skills:
(1004) ABC 4]</div>
<div> ID:
106[Skills:
(1001) ABC 1]
-
Poiuy(8)[Skills:
(1001) ABC 1]</div>
<div> ID:
108[Skills:
(1003) ABC 3]
-
Trewq(8)[Skills:
(1003) ABC 3]</div>
<div> ID:
109[Skills:
(1003) ABC 3]
-
Trewq(8)[Skills:
(1003) ABC 3]</div>
<div><br>
</div>
<div>------------</div>
<div><br>
</div>
<div>to be
precise, i
don't know if
it is because
of worktime or
skill</div>
</div>
</div>
</div>
<div>
<div>
<div class="gmail_extra"><br>
<br>
<div class="gmail_quote">2013/2/19
André Fróes <span dir="ltr"><<a href="mailto:arfmoraes@gmail.com" target="_blank">arfmoraes@gmail.com</a>></span><br>
<blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">
<div dir="ltr">Just
one
correction, it
is sorting
correctly when
there's one
workorder with
a skill, if
there's
another
workorder with
same skill, it
doesn't sort
that workorder
to that skill.
<div>
<br>
<div>
This is what
is happening:</div>
<div><br>
</div>
<div>Workorder
skill ABC1
------------
Engineer skill
ABC1</div>
<div>Workorder
skill ABC2
------------
Engineer skill
ABC2<br>
</div>
<div>Workorder
skill ABC1
------------
Engineer skill
ABC2<br>
</div>
</div>
<div><br>
</div>
<div>but if
there's only
one workorder
with one skill
it works:</div>
<div><br>
</div>
<div>
<div>Workorder
skill ABC1
------------
Engineer skill
ABC1</div>
<div>Workorder
skill ABC2
------------
Engineer skill
ABC2<br>
</div>
<div>Workorder
skill ABC3
------------
Engineer skill
ABC3</div>
<div><br>
</div>
<div>so, from
the second
workorder on,
with a
repeated
required
skill, it
doesn't sort
properly</div>
</div>
</div>
<div>
<div>
<div class="gmail_extra">
<br>
<br>
<div class="gmail_quote">2013/2/19
André Fróes <span dir="ltr"><<a href="mailto:arfmoraes@gmail.com" target="_blank">arfmoraes@gmail.com</a>></span><br>
<blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">
<div dir="ltr">Hello,
since i'm not
moving a step
from where I
am at dsl
rule, I'm
trying to do
it with
SimpleScoreCalculator,
but the same
is happening.
<div><br>
</div>
<div>------------</div>
<div>
<div>public
HardAndSoftScore
calculateScore(Distributor
distributor) {</div>
<div><span style="white-space:pre-wrap">
</span>int
hardScore = 0;</div>
<div><span style="white-space:pre-wrap">
</span>int
softScore = 0;</div>
<div><span style="white-space:pre-wrap">
</span></div>
<div><span style="white-space:pre-wrap">
</span>for
(Engineer e :
distributor.getEngineerList()){</div>
<div><span style="white-space:pre-wrap">
</span>long
skill =
e.getSkillEngineerList().get(0).getSkill().getId();</div>
<div><span style="white-space:pre-wrap">
</span>int
requiredWorktime
= 0;</div>
<div><span style="white-space:pre-wrap">
</span>long
requiredSkill
= 0l;</div>
<div><span style="white-space:pre-wrap">
</span></div>
<div><span style="white-space:pre-wrap">
</span></div>
<div><span style="white-space:pre-wrap">
</span>for
(WorkOrder o :
distributor.getWorkOrderList()){</div>
<div><span style="white-space:pre-wrap">
</span>if
(e.equals(o.getEngineer())){</div>
<div><span style="white-space:pre-wrap">
</span>requiredWorktime
+=
o.getRequiredWorktime();</div>
<div><span style="white-space:pre-wrap">
</span>requiredSkill
=
o.getRequiredSkills().get(0).getSkill().getId();</div>
<div><span style="white-space:pre-wrap">
</span>}</div>
<div><span style="white-space:pre-wrap">
</span>}</div>
<div><span style="white-space:pre-wrap">
</span></div>
<div><span style="white-space:pre-wrap">
</span></div>
<div><span style="white-space:pre-wrap">
</span>int
engineerAvailableTime
=
e.getWorktime()
-
requiredWorktime;</div>
<div><span style="white-space:pre-wrap">
</span>if
(engineerAvailableTime
< 0 ){</div>
<div>
<span style="white-space:pre-wrap">
</span>hardScore
+=
engineerAvailableTime;</div>
<div><span style="white-space:pre-wrap">
</span>}</div>
<div><span style="white-space:pre-wrap">
</span></div>
<div><span style="white-space:pre-wrap">
</span>if
(requiredSkill
== skill){</div>
<div><span style="white-space:pre-wrap">
</span>softScore
+=
requiredSkill;</div>
<div><span style="white-space:pre-wrap">
</span>}</div>
<div><span style="white-space:pre-wrap">
</span>}</div>
<div><span style="white-space:pre-wrap">
</span>return
DefaultHardAndSoftScore.valueOf(hardScore,
softScore);</div>
<div><span style="white-space:pre-wrap">
</span>}</div>
</div>
<div>------------</div>
<div><br>
</div>
<div>wouldn't
that have to
fit since i'm
comparing the
1st attribute
of each skill
list from
engineers and
workorders?
And how can I
weight which
engineer would
be better to a
determined
workorder if
the workorder
have more
skills and so
does the
engineer?</div>
</div>
</blockquote>
</div>
<br>
</div>
</div>
</div>
</blockquote>
</div>
<br>
</div>
</div>
</div>
</blockquote>
</div>
<br>
</div>
</div>
</div>
</blockquote>
</div>
<br>
</div>
</div>
</div>
</blockquote>
</div>
<br>
</div>
</div>
</div>
</blockquote>
</div>
<br>
</div>
</div>
</div>
</blockquote>
</div>
<br>
</div>
</div>
</div>
</blockquote>
</div>
<br>
</div>
<br>
<fieldset></fieldset>
<br>
</div></div><pre>_______________________________________________
rules-users mailing list
<a href="mailto:rules-users@lists.jboss.org" target="_blank">rules-users@lists.jboss.org</a>
<a href="https://lists.jboss.org/mailman/listinfo/rules-users" target="_blank">https://lists.jboss.org/mailman/listinfo/rules-users</a></pre>
</blockquote>
<br>
</div>
<br>_______________________________________________<br>
rules-users mailing list<br>
<a href="mailto:rules-users@lists.jboss.org">rules-users@lists.jboss.org</a><br>
<a href="https://lists.jboss.org/mailman/listinfo/rules-users" target="_blank">https://lists.jboss.org/mailman/listinfo/rules-users</a><br></blockquote></div><br></div>