While doing support, we need to check some of the scenario
and their result in the production server. The beanshell and groovy script
comes very handy on this. Below are the few example of how I used/using it in
my various project. This is very handy to test your data as well
1.
Check the log: Sometimes getting server access
is very painful in the enterprise landscape. However, person joined in the
project is required to work as soon as they inducted in the project. In this
scenario, below groovy script is very useful. Please note, run these in the rollback mode
unless and until the otherwise is required.
a.
The application is running from the container.
For the POC, it was running in the tomcat server (tomcat/bin). To know the
exact directory, run the below script in groovy console
println "pwd".execute().text
Below will be printed in the output
tab
/usr/sap/hybris/bin/platform/tomcat/bin
b.
println "tail -n 50
../../../../log/tomcat/console-20180206.log".execute().text
INFO | jvm 2 | main | 2018/02/06 10:09:19.099 | [m [32mINFO [task-scheduler-1] [quoteDetailsLogger] ModelNQuoteNumber : Q3495215, QuoteNumber : 0000791023, QuoteItemNumber : 0001982437. Line quote Success INFO | jvm 2 | main | 2018/02/06 10:09:19.299 | [m [32mINFO [task-scheduler-1] [quoteDetailsLogger] ModelNQuoteNumber : Q3495215, QuoteNumber : 0000791023, QuoteItemNumber : 0001982438. Line quote Success INFO | jvm 2 | main | 2018/02/06 10:09:19.600 | [m [32mINFO [task-scheduler-1] [quoteDetailsLogger] ModelNQuoteNumber : Q3495215, QuoteNumber : 0000791023, QuoteItemNumber : 0001982439. Line quote Success INFO | jvm 2 | main | 2018/02/06 10:09:19.700 | [m [32mINFO [task-scheduler-1] [QuoteRawPopulator] QuoteNumber is getting generated INFO | jvm 2 | main | 2018/02/06 10:09:19.800 | [m [32mINFO [task-scheduler-1] [quoteDetailsLogger] ModleN to Hybris Quote Import :: B2bunit : null, Code : 0000791032, ContactEmail : null, ContactName : null, ContactPhone : null, Created_date : Tue Feb 06 02:00:16 PST 2018, CustomerName : Flextronics Manufacturing Europe BV, CustomerState : null, DistributorName : Avnet Silica, EcomQtIdH : null, EndCustomer : ADVA Optical Networking SE, Expiration_date : Mon May 07 01:00:00 PDT 2018, ModelNQuoteNumber : Q3495218, Owner : null, ProUserId : tamas.ujvari@avnet.eu, ProUserOrgCode : SEURAS, QuoteNumber : 0000791032, QuoteStatus : SUBMITTED, RepCode : null, Saleschannel : true, EndCustomerCity : null, EndCustomerCountry : Germany, EndCustomerName : ADVA Optical Networking SE, EndCustomerState : null, CustomerCountry : Romania. Header Quote Success INFO | jvm 2 | main | 2018/02/06 10:09:20.000 | [m [32mINFO [task-scheduler-1] [QuoteItemsRawPopulator] Generating new itemcode INFO | jvm 2 | main | 2018/02/06 10:09:20.000 | [m [32mINFO [task-scheduler-1] [QuoteProductValidation] Inside isProductAvailable() of QuoteProductValidation INFO | jvm 2 | main | 2018/02/06 10:09:20.000 | [m [33mWARN [task-scheduler-1] [QuoteItemsRawPopulator] comp_part is not available for given quote with oid :4341977 INFO | jvm 2 | main | 2018/02/06 10:09:20.000 | [m [33mWARN [task-scheduler-1] [QuoteItemsRawPopulator] Competitor is not available for given quote with oid :4341977 INFO | jvm 2 | main | 2018/02/06 10:09:20.301 | [m [32mINFO [task-scheduler-1] [QuoteItemsRawPopulator] Generating new itemcode INFO | jvm 2 | main | 2018/02/06 10:09:20.301 | [m [32mINFO [task-scheduler-1] [QuoteProductValidation] Inside isProductAvailable() of QuoteProductValidation INFO | jvm 2 | main | 2018/02/06 10:09:20.301 | [m [33mWARN [task-scheduler-1] [QuoteItemsRawPopulator] comp_part is not available for given quote with oid :4341978 INFO | jvm 2 | main | 2018/02/06 10:09:20.301 | [m [33mWARN [task-scheduler-1] [QuoteItemsRawPopulator] Competitor is not available for given quote with oid :4341978 INFO | jvm 2 | main | 2018/02/06 10:09:20.501 | [m [32mINFO [task-scheduler-1] [quoteDetailsLogger] ModelNQuoteNumber : Q3495218, QuoteNumber : 0000791032, QuoteItemNumber : 0001982461. Line quote Success INFO | jvm 2 | main | 2018/02/06 10:09:20.701 | [m [32mINFO [task-scheduler-1] [quoteDetailsLogger] ModelNQuoteNumber : Q3495218, QuoteNumber : 0000791032, QuoteItemNumber : 0001982462. Line quote Success INFO | jvm 2 | main | 2018/02/06 10:09:20.802 | [m [32mINFO [task-scheduler-1] [DefaultB2BSaleQuoteDAO] inside defaultb2bsalequotedao::::Mon Apr 30 23:59:59 PDT 2018 INFO | jvm 2 | main | 2018/02/06 10:09:20.802 | [m [33mWARN [task-scheduler-1] [QuoteRawPopulator] Distributor information not available for quoute with oid [3561517] INFO | jvm 2 | main | 2018/02/06 10:09:20.802 | [m [32mINFO [t
c.
Below script will fetch the order using
flexiblesearch(beanshell)
import java.util.Map;
import java.util.HashMap;
import de.hybris.platform.servicelayer.model.ModelService;
import de.hybris.platform.core.model.order.OrderModel;
import java.util.Collection;
import de.hybris.platform.servicelayer.search.FlexibleSearchQuery;
import de.hybris.platform.servicelayer.search.FlexibleSearchService;
import de.hybris.platform.servicelayer.search.SearchResult;
import de.hybris.platform.servicelayer.search.SearchResult;
ModelService modelService = spring.getBean("modelService");
FlexibleSearchService flexibleSearchService = spring.getBean("flexibleSearchService");
String orderNumber = "0005574014";
Map attr = new HashMap(1);
attr.put("code", orderNumber );
StringBuilder sql = new StringBuilder();
sql.append("SELECT {o:pk} from { ").append("Order").append(" as o} WHERE {o:code} = ?code ")
.append("AND {o:versionID} IS NULL");
FlexibleSearchQuery query = new FlexibleSearchQuery(sql.toString());
query.getQueryParameters().putAll(attr);
SearchResult result = flexibleSearchService.search(query);
List orders = result.getResult();
out.println(orders.get(0).getCode());
d.
Bulk update of object (POC is on ticket) where assigned group
changed from one to another (beanshell). In this case, run
the script in commit mode
import de.hybris.platform.core.model.ItemModel;
import de.hybris.platform.core.model.security.PrincipalGroupModel;
import de.hybris.platform.core.model.user.UserModel;
import
de.hybris.platform.cscockpit.services.search.generic.query.DefaultTicketSearchQueryBuilder;
import de.hybris.platform.cscockpit.services.search.impl.DefaultCsTextSearchCommand;
import de.hybris.platform.servicelayer.search.FlexibleSearchQuery;
import de.hybris.platform.servicelayer.user.UserService;
import de.hybris.platform.ticket.enums.CsTicketState;
import de.hybris.platform.ticket.model.CsAgentGroupModel;
import de.hybris.platform.ticket.service.TicketBusinessService;
import de.hybris.platform.ticket.model.CsTicketModel;
import de.hybris.platform.servicelayer.model.ModelService;
import de.hybris.platform.servicelayer.search.FlexibleSearchQuery;
import
de.hybris.platform.servicelayer.search.FlexibleSearchService;
import de.hybris.platform.servicelayer.search.SearchResult;
ModelService modelService =
spring.getBean("modelService");
UserService userService = spring.getBean("userService");
FlexibleSearchService flexibleSearchService =
spring.getBean("flexibleSearchService");
TicketBusinessService ticketBusinessService =
spring.getBean("ticketBusinessService");
String fromGroup = "groupFrom";
String toGrouo = "toGroup";
String query = "Select {t:pk} from {CsTicket AS t },
{UserGroup AS G} WHERE {t:assignedGroup}={G:pk} AND {G:uid} = '" +
fromGroup +"'";
FlexibleSearchQuery searchQuery = new FlexibleSearchQuery(query);
SearchResult searchResult = flexibleSearchService.search(searchQuery);
List ticketList = searchResult.getResult();
int counter=0;
for(CsTicketModel ticket: ticketList)
{
counter++;
out.println("Before
Update....." + ticket.getTicketID());
ticket.setAssignedGroup(userService.getUserGroupForUID(toGrouo));
modelService.save(ticket);
}
out.println(counter);
Hybris Beanshell And Groovy Script Example >>>>> Download Now
ReplyDelete>>>>> Download Full
Hybris Beanshell And Groovy Script Example >>>>> Download LINK
>>>>> Download Now
Hybris Beanshell And Groovy Script Example >>>>> Download Full
>>>>> Download LINK mE